Cara menggunakan configure php-fpm 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.

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.2

jika 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.2

Menghubungkan 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 configuration

nah 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(); ?>phpinfo

nah lalu kembali pada file konfigurasi nginx dan kita rubah menjadi seperti berikut 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 _; #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. } }nginx configuration

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 restart

Jika 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

Postingan terbaru

LIHAT SEMUA