Membangun web server dengan nginx dikombinasi dengan php-fpm tidaklah hal yang sulit untuk anda yang sering instalasi dan konfigurasi server, apalagi jika anda sering membaca dan ngelab tutorial yang ada di DigitalOcean, Tecmin, Server-World, How-to-Forge dsb. Auto Succes… Hhe…
Setelah beberapa tahun menggunakan apache sebagai web server untuk aplikasi-aplikasi web base, sekarang saya mulai tertarik dan memilih nginx sebagai web server untuk saya implementasikan di server development maupun production.
Nginx
Nginx (Engine X) adalah salah satu web server namun mempunyai performa tinggi dan dapat digunakan sebagai reverse proxy, load balancing, cache header, gzip dan masih banyak lagi.
Nginx e dibangun untuk mengatasi masalah 10K atau 10.000 Concurrent Connection (koneksi bersamaan) oleh pengguna.
Bayangkan kalau ada beberapa web server nginx yang di load balancing, tentu akan melebihi daripada 10K tadi. Hhe…
Mengapa memilih Nginx?
Aplikasi-aplikasi besar seperti BukaLapak, Tokopedia dll menggunakan nginx bro… Pasti menggunakan nginx sebagai garis pertamanya web server (reverse proxy / load balancing) maupun setelahnya sebagai web server standalone atau dibelakangnya.
Instalasi Nginx + PHP-FPM
Pada tutorial ini admin menyediakan instalasi pada Ubuntu Server 16.04 dan CentOS 7 Server.
Instalasi di Ubuntu Server 16.04
Update Sistem Ubuntu Server
$ sudo apt update
Instal Nginx
$ sudo apt install nginx
Instal PHP-FPM
$ apt install php7.0-fpm
Instalasi di CentOS 7 Server
Tambahkan repository epel
# yum install epel-release
Setting repository epel
# sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo
Instal Nginx
# yum --enablerepo=epel -y install nginx
Instal PHP-FPM
# yum --enablerepo=epel -y install php php-mbstring php-pear php-fpm
Konfigurasi Nginx + PHP-FPM
Setelah instalasi selesai, selanjutnya kita lakukan beberapa konfigurasi supaya Nginx dan PHP-FPM berjalan dengan sebagiamana mestinya.
Ubuntu Server 16.04
Edit “server_name” di default server block Nginx
# nano /etc/nginx/sites-available/default ... server_name lukmanlab.com www.lukmanlab.com; ...
Jalankan service nginx dan hidupkan services auto start
# systemctl start nginx # systemctl enable nginx
Edit default server block Nginx untuk PHP-FPM
# nano /etc/nginx/sites-available/default ... ### Setelah index, tambahkan `index.php` pada bagian ini index index.php index.html index.htm index.nginx-debian.html; ### Tambahkan bari berikut dibagian server location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } ...
Restart PHP-FPM dan Nginx
# systemctl restart php7.0-fpm nginx
CentOS 7 Server
Edit “server_name” di file default server block
# vi /etc/nginx/nginx.conf ... server_name lukmanlab.com www.lukmanlab.com; ...
Jalankan service nginx dan hidupkan services auto start
# systemctl start nginx # systemctl enable nginx
Konfig PHP-FPM
# vi /etc/php-fpm.d/www.conf ... ### User = nginx user = nginx ... ### group = nginx group = nginx ...
Jalankan dan hidupkan services auto start PHP-FPM
# systemctl start php-fpm # systemctl enable php-fpm
Tambahkan script berikut pada default server block nginx
# vi /etc/nginx/nginx.conf ... ### Tambahkan dibagian "server" location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; } ...
Restart services Nginx.
# systemctl restart nginx
Testing Konfigurasi PHP-FPM
Pada Ubuntu Server 16.04, buat file info.php di /var/www/html
# echo "<?php phpinfo() ?>" > /var/www/html/info.php
Pada CentOS 7 Server, buat file info.php di /usr/share/nginx/html
# echo "<?php phpinfo() ?>" > /usr/share/nginx/html/info.php
Harusnya jika berhasil akan seperi gambar berikut:
Referensi:
- https://www.server-world.info/en/note?os=CentOS_7&p=nginx&f=1
- https://www.server-world.info/en/note?os=Ubuntu_16.04&p=nginx&f=1
Admin LUKMANLAB, DevOps Engineer, Site Reliability Engineer, System Administrator.
1 thought on “Tutorial Membangun Web Server dengan Nginx + PHP-FPM”