Thursday, January 24, 2019

Installasi PHP 7 dengan module PHP-FPM dan Nginx Pada Debian 9 Stretch

Pada artikel kali ini kita akan membahas tentang Installasi PHP 7 dengan module PHP-FPM dan Nginx (Engin X) pada Debian 9 Stretch Apasih nginx itu?? Nginx (di baca : engine x) adalah sebuah web server open source yang bisa juga berfungsi sebagai proxy IMAP/POP3. Nginx di buat pertama kali oleh seorang warga negara Rusia yang bernama Igor Sysoev pada tahun 2002 dan dirilis ke publik pada tahun 2004. Nginx tidak kalah populernya dengan apache, bahkan saat ini pengguna  nginx dari tahun ke tahun terus bertambah. Kecepatan nginx dan iritnya resource yang digunakan merupakan salah satu kelebihan yang tidak di miliki oleh apache. Karena kecepatannya ini nginx sangat wajib digunakan untuk website-website dengan high-traffic. Wajar saja jika web server dengan trafik yang padat seperti kaskus, indowebster, kompas, wordpress.com dan lain-lain menggunakan nginx sebagai tulang punggung web servernya.
Berikut ini adalah beberapa fitur utama yang di miliki nginx:
  • Static file serving.
  • SSL/TLS support.
  • Virtual hosts.
  • Reverse proxying.
  • Load balancing.
  • Compression.
  • Access controls.
  • URL rewriting.
  • Custom logging.
  • Server-side includes.
  • Limited WebDAV.
  • FLV streaming.
  • FastCGI.
Untuk itu, jika saat ini anda masih menggunakan apache pada server anda, tidak ada salahnya untuk mencoba web server nginx ini.
Kenapa Nginx?
Memilih Nginx dengan Apache bukanlah perkara mudah, masing-masing punya kelebihan dan kekurangan. namun pada artikel sebelumnya saya menjelaskan alasan saya menggunakan Nginx disini. sebenarnya selain PHP-FPM ada mod_php dan Suphp. mod_php adalah salah satu module apache (httpd) sebagai engine untuk web server. PHP-FPM adalah module yang berhubungan dengan CGI dan FastCGI, perbedaan dengan mod_php adalah php-fpm menggunakan proses sendiri ketika menjalankan web berbasis php. Suphp biasanya digunakan pada CPanel dengan aturan yang sangat ketat, sehingga salah konfigurasi pada permission atau hal lain akan membuat error yang membingungkan.
Ada banyak web server, seperti apache, lighttpd, litespeed,openlitespeed dll,  dari yang free sampai yang berbayar, namun saya peribadi memilih nginx karena lebih hemat memori, berikut detailnya
nginx vs apache memory usage
Sumber Dreamhost
Selain ini ada banyak parameter lain apakah anda harus beralih menggunakan nginx atau tidak.

Nginx Dengan PHP-FPM

Salah satu kelebihan Nginx adalah hemat memori, apalagi data yang diproses adalah file static, namun jika data yang diproses dinamis, maka nginx memerlukan bantuan aplikasi external seperti PHP-FPM yang memiliki proses sendiri. kombinasi Nginx dan PHP-FPM adalah hal yang ideal, walaupun bisa saja Nginx dengan mod_php atau Apache dengan PHP-FPM.
Installasi Nginx, PHP dan Module PHP-FPM
Sebelumnya install Nginx dulu ya, bisa ikuti langkah pada artikel Install Nginx (Engine X) pada server debian 9 stretch. nah selanjutnya kita install php, sesuai dengan judul php yang akan kita install adalah php 7. wait, php dan php-fpm apa bedanya? php adalah bahasa pemprograman, sedangkan php-fpm adalah module/engine web server untuk menjalankan script php. installasinya saya coba pada debian 9 stretch, berikut perintahnya :
Yang pertama kali harus anda lakukan adalah login ke server anda menggunakan root user. Anda bisa menggunakan terminal untuk meremote server anda jika anda menggunakan linux. atau jika anda menggunakan windows, anda bisa menggunakan putty.
  • Matikan dan hapus apache
Antisipasi agar tidak terjadi bentrok service nantinya, karena apache dan nginx sama-sama menggunakan port 80.
Cek, apakah masih ada konfigurasi apache yang masih tersisa
Output : 
Pada tutorial ini, ternyata folder /etc/apache2  masih ada, maka kita akan hapus folder tersebut dengan command dibawah ini:

  • Cara Instal Nginx

  • Nyalakan autostart nginx dan jalankan
hal ini berguna ketika kita me reboot server, kita tidak perlu menyalakan service nginx ini secara manual.
Jika terdapat chkconfig not found, cukup install saja dengan cara

  • Installasi PHP dan Module PHP-FPM

 #pertama update dulu package repository

sudo apt-get update
#install php 7.2
sudo apt-get install php7.2
#install php-cli dan php-fpm untuk php 7.2
sudo apt-get install php7.2-cli php7.2-fpm
#biasanya letaknya pada direktori '/etc/php/7.2/' coba dicek
sudo ls /etc/php/7.2
#isi foldernya
apache2 cli fpm mods-available
Jika ada maka pada postingan selanjutnya kita akan melakukan beberapa konfigurasi untuk php-fpm di folder fpm tersebut. saat ini anda sudah sukses melakukan installasi php dan php-fpm.


  • Konfigurasi PHP-FPM
Cari cgi.fix_pathinfo=1 dan ubah 1 menjadi 0.
Restart PHP-FPM
  • Konfigurasi nginx
Menghubungkan PHP-FPM dengan NGINX
Pada saat kita installasi nginx, nginx akan membuat sebuah konfigurasi default di.
1
nano /etc/nginx/sites-available/default
biasanya contoh konfigurasinya seperti ini :
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
#listen 443 ssl default_server;
#listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
#
# Read up on ssl_ciphers to ensure a secure configuration.
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html/;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ index.html;
}
# pass PHP scripts to FastCGI server
#
#location ~ .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;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /.ht {
# deny all;
#}
}
nah  kita akan melakukan modifikasi pada konfigurasi nginx diatas agar dapat bekerja bersama dengan php-fpm, kita rubah konfigurasinya seperti dibawah ini
server {
#listen port 80 (http) sebagai default_server
listen 80 default_server;
listen [::]:80 default_server;
#menentukan root folder nginx
root /var/www/html/;
#tambahkan index.php pada list dibawah ini agar nginx mendukung php
index index.html index.php index.htm index.nginx-debian.html;
#default server name adalah '_'
server_name _; blogkangaris.com www.blogkangaris.com
#jika ada request root website
location / {
# cari sesuai request $uri, jika ada akses $uri, jika tidak ada buka index.php$is_args$args
try_files $uri $uri/ /index.php$is_args$args;
}
#aktifkan PHP scripts dengan FastCGI server
location ~ .php$ {
include snippets/fastcgi-php.conf;
#php-fpm dengan unix sockets, sesuaikan dengan versi phpnya
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# jika pakai php-cgi atau tcp socket lainnya seperti berikut ini :
# fastcgi_pass 127.0.0.1:9000;
# cara diatas sesuai dengan settingan listen pada php pool, jika menggunakan tcp seperti misal port 9000, maka kita harus menyesuaikan pada konfigurasi php pool, akan dibahas pada artikel lain.
}
}
untuk melakukan testing buat file php terlebih dahulu pada root default di '/var/www/html' buat file misal index.php isikan perintah berikut :
<?php
phpinfo();
?>

Penjelasan:
root : merupakan letak directory web. yang nantinya akan digunakan untuk mengupload konten website anda.

Server_Name : nama domain yang nanti nya digunakan untuk mengakses ke vps anda.

Simpan dan keluar.

  • Aktifkan VirtualHost
Sebelum mengaktifkan , hapus dulu virtualhost default yang lama.
aktifkan.

Setelah merubah jalankan perintah-perintah nginx berikut ini :

#cek apakah ada salah configurasi
sudo nginx -t
#jika output berikut
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
#maka tidak ada yang salah, tinggal lakukan perintah reload
sudo service nginx reload
#atau jika mau restart
sudo service nginx restart
Jika sudah anda bisa akses http://ip-address/index.php
Jika konfigurasi anda benar. maka akan muncul info php pada browser anda. Seperti pada gambar dibawah ini
Cara Install nginx
jika terdapat pesan nginx error not found, coba cek lagi konfigurasi virtualhost nginx anda.
Selamat Mencoba.

Mengikatnya ilmu karena dicatat, dan sebagai catatan priibadi.


EmoticonEmoticon