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.
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 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 :
#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 install php 7.2jika ada maka pada postingan selanjutnya kita akan melakukan beberapa konfigurasi untuk php-fpm di folder fpm tersebut. saat ini pembaca sudah sukses melakukan installasi php dan php-fpm
Installasi Module PHP lainnya
berikut adalah library yang biasanya digunakan aplikasi website berbasis PHP :
sudo apt-get install php7.2-gd php7.2-json php7.2-mysql php7.2-curl php7.2-mbstring sudo apt-get install php7.2-intl php-imagick php7.2-xml php7.2-zipinstall dependency php 7.2Menghubungkan PHP-FPM dengan NGINX
pada saat proses installasi nginx, nginx akan membuat sebuah konfigurasi default di '/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. # See: //bugs.debian.org/773332 # # Read up on ssl_ciphers to ensure a secure configuration. # See: //bugs.debian.org/765782 # # 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; #} }nginx configurationnah kita akan melakukan modifikasi pada konfigurasi nginx diatas agar dapat bekerja bersama dengan php-fpm, 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(); ?>phpinfonah lalu kembali pada file konfigurasi nginx dan kita rubah menjadi seperti berikut ini :
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 restartnginx restartJika sudah anda bisa akses //ip-address/index.php
M. Najamudin Ridha
Penikmat coffe latte ICE, apalagi tanpa gula. Menyukai teknologi open source, terutama yang berbasis web dan mobile, senang mencoba hal - hal seperti linux, DevOps, database dan programming