Kamis, 06 April 2017

Cara menginstall dan mengatur nginx untuk menangani file php serta mengatur database server

Cara menginstall dan mengatur nginx untuk menangani file php serta mengatur database server.

Mungkin untuk pemula (seperti saya) dalam hal web server akan dibuat pusing dengan Bagaimana cara membuat agar nginx dapat menangani sebuah file php?

Oke langsung saja kita praktek

Disini saya menggunakan kali linux rolling.

Pertama install dependences nya:
apt-get install nginx php php-cli php-fpm php-common php-mysqlnd

Lalu kemudian kita coba memulai nginx:
sudo service nginx start

Jika tdk tertampil error, coba periksa menggunakan web browser favorit kita:
http://localhost/

Akan tertampil halaman awal nginx

Kita stop dulu:
sudo service nginx stop

Oke lanjut kita akan membuat nginx dapat menangani file php

Tahap pertama buat pengguna baru bernama nginx:
adduser nginx

Lalu akan ditanya password nya, ketikkan password unixnya.

Lalu akan diminta untuk mengisi data, isi sesuai keinginan atau tekan ENTER untuk default.

Oke mari kita masuk pada tahap pengeditan.

CATATAN: Sebelum mengedit jangan lupa backup terlebih dahulu.

Buka file:
/etc/nginx/sites-available/default

di dalam tulisan server {disini}, edit pada bagian:
index index.html index.htm index.nginx-debian.html;

menjadi:
index index.php index.html index.htm index.nginx-debian.html;

Lalu uncomment pada bagian:
#location ~ \.php$ {…}

Edit menjadi:
location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
# include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
# fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
# # With php-cgi (or other tcp sockets):
fastcgi_pass 127.0.0.1:9000;
    #    fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}


Jika ada error saat mengakses file php di browser, coba edit pada bagian:
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

Ubah menjadi:
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri/ $uri /index.php?$query_string;
}

Disarankan tdk usah mengedit pada bagian diatas jika tdk ada error yg muncul.

Lalu simpan.

Selesai lalu edit file:
/etc/nginx/nginx.conf

ubah:
user www-data;
menjadi:
user nginx;

dan simpan.

Lalu untuk konfigurasi fastcgi nya:
Buka file:
/etc/php/7.0/fpm/pool.d/www.conf

pada bagian:
user =  www-data
group = www-data

ubah menjadi:
user =  nginx
group = nginx

pada bagian:
listen = /run/php/php7.0-fpm.sock

ubah menjadi:
listen = 127.0.0.1:9000

pada bagian:
listen.owner = www-data
listen.group = www-data

ubah menjadi:
listen.owner = nobody
listen.group = nobody

dan simpan.

note: sebenarnya mengubah www-data menjadi nginx atau nobody pada file /etc/php/7.0/fpm/pool.d/www.conf tdk memberikan efek saat kita mengakses file php di browser.

Lalu jalankan nginx nya:
sudo sevice nginx start
atau jika sudah berjalan:
sudo sevice nginx restart

Lalu tahap terakhir jalankan php-fpm nya:
sudo sevice php7.0-fpm start
atau jika sudah berjalan:
sudo sevice php7.0-fpm restart

untuk mencobanya, buat file baru bernama index.php di:
/var/www/html # Sesuai yg tertulis pada file /etc/nginx/sites-available/default, pada bagian: root /var/www/html; #path dimana file index ditaruh

dengan isi file index.php:
<?php
echo "PHP script bekerja";
?>

Lalu simpan dan coba buka web browser:
http://localhost/

Jika sukses maka akan tertampil tulisan:
PHP script bekerja

Namun Jika ada error seperti:
500 internal server error # Periksa pada bagian log yg ada di: /var/log/nginx/error.log , biasanya error pada bagian aksesnya.
502 bad gateway # Periksa log untuk php-fpm nya di: /var/log/php7.0-fpm.log , biasanya dikarenakan server fastcgi nya belum dimulai.

Coba terus hingga berhasil dgn cara melihat pada bagian log nya.
Gunakan mesin pencari google untuk membantu mengatasinya.


Referensi:
http://askubuntu.com/questions/134666/what-is-the-easiest-way-to-enable-php-on-nginx
http://serverfault.com/questions/517107/php-fpm-returning-empty-response-to-nginx
http://stackoverflow.com/questions/15423500/nginx-showing-blank-php-pages
http://serverfault.com/questions/465607/nginx-document-rootfastcgi-script-name-vs-request-filename

Setelah berhasil membuat nginx menangani file php, sekarang kita lanjut ke proses pengaturan databasenya.

Karena disini saya menggunakan server database dari mariadb-server pada kali linux rolling debian based, maka proses pemasangannya adalah sebagai berikut:
apt-get install mariadb-server

Ketik Y dan tunggu hingga proses selesai.

Lalu ketik perintah berikut:
sudo service mysql stop # Untuk menghentikan server database
sudo mysql_install_db # Untuk memasang database
sudo service mysql start # Untuk memulai server database
sudo mysql_secure_installation # Untuk memasang dan mengatur database

memeriksa pemasangan MariaDB:
mysql -V

memasuki mariadb cmd client:
mysql -p
untuk keluar ketik: exit

beberapa perintah mariadb:
sudo service mysql stop
sudo service mysql start
sudo service mysql status
sudo service mysql restart

Untuk lebih lengkapnya silakan buka link berikut: https://www.liquidweb.com/kb/how-to-install-mariadb-5-5-on-ubuntu-14-04-lts

Setelah prosesnya selesai, jgn lupa mereset password untuk user root agar tdk terjadi access denied saat melakukan koneksi ke database, ketik:
sudo mysql -u root password PASSWORD
mysql -p
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;

lalu kita atur password root kita jika belum diatur, ketik:
mysqladmin -u root password PASSWORDNYA

disini password saya adalah: toor

restart mariadb servernya jika diperlukan dgn cara:
sudo service mysql restart

Lalu kita akan mencoba mengkoneksikan ke database server kita, buat file baru benama test_db.php dgn isi file:
<?php
$servername = "";
$username = "root";
$password = "toor"; # Ubah sesuai dgn yg ditulis di terminal

$conn = new mysqli($servername,$username, $password);
// Check connection
if($conn->connect_error) {
die("Connection failed: ".$conn->connect_error);}
echo"Connected successfully";
?>

dan save.

Jangan lupa untuk memasang class mysql untuk php nya agar script di atas bekerja.

Lalu kita coba dgn cara membuka web browser:
http://localhost/test_db.php

Jika berhasil maka akan tertampil "Connected successfully" sebaliknya akan tertampil error "Connection failed: PESAN_ERROR"

Jika gagal atau terjadi error, silakan diperbaiki terlebih dahulu.
Pastikan mengikuti seluruh tahap dgn benar.


Referensi:
https://www.liquidweb.com/kb/how-to-install-mariadb-5-5-on-ubuntu-14-04-lts
http://superuser.com/questions/957708/mysql-mariadb-error-1698-28000-access-denied-for-user-rootlocalhost

Untuk yg mau menambahkan atau memberi saran silakan taruh di kolom komentar :)
terimakasih

Tidak ada komentar:

Posting Komentar

Cara menampilkan php error ke Browser

Kali ini saya akan share sesuai judul post. Oke mari kita mulai. saya menggunakan kali linux debian based. dan menggunakan nginx sebagai ...