Tutorial kali ini penulis akan membahas tentang bagaimana cara memasang Nginx dan integrasi PHP dan Mariadb biasa disingkat LEMP, khusus untuk pengguna Arch Linux, dengan metode yang penulis pakai saat penulis menggunakan Ubuntu/Debian Server di VPS.Di artikel ini penulis tidak menjelaskan secara mendetail apa itu Nginx dan perbandingan Nginx dengan web server lainnya, karena fokus tulisan ini adalah tentang cara pemasangan (install) pada GNU/Linux distro Arch Linux.
Pada intinya Nginx adalah web server sama halnya seperti Apache. Hanya saja kelebihan Nginx dibandingan Apache adalah (penulis ambil poin terpenting saja) pertama lebih ringan dan sangat cocok untuk Anda pengguna VPS dengan kapasitas RAM kecil; dan yang kedua pengaturan pada berkas konfigurasinya sangatlah mudah lagi sangat simpel satu konfigurasi untuk tiap-tiap virtual host, baik itu konfigurasi masalah port, direktori, eksekusi PHP, pembatasan hak akses, direktori listing dan lain-lain.
Pemasangan Nginx, PHP dan Mariadb` `sudo pacman -S nginx php php-fpm mariadb
Module PHP Tambahan
Jika butuh tambahan module PHP, biasanya dipakai untuk dukungan CMS (Content Management System) atau PHP framework.
sudo pacman -S composer php-gd php-imap php-intl php-mcrypt php-apcu php-apcu-bc php-cgi php-dblib php-embed php-enchant php-fpm php-odbc php-pgsql php-phpdbg php-pspell php-snmp php-sqlite php-tidy php-xsl php-geoip php-memcache php-memcached php-mongodb
PengaturanMariadb
Sebelum mengatur Nginx dengan PHP, pertama-tama kita atur dahulu Mariadb.
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo systemctl start mysqld
Jangan lupa lakukan pembuatan password root
dan pengaturan lainnya:
sudo mysql_secure_installation
Virtual Host di Nginx
Selanjutnya buat pengaturan Nginx, di sini penulis mengikuti pengaturan dari cara yang dilakukan pada server Debian (Debian way) yakni adanya dua buah direktori sites-available
yang berfungsi menampung seluruh virtual host
, dan sites-enabled
jika virtual host
tersebut ingin diaktifkan di Nginx.
Kita buat direktori sites-available
dan sites-enabled
di /etc/nginx
:
sudo mkdir /etc/nginx/{sites-available,sites-enabled}
Untuk menjaga-jaga jangan sampai ada konfigurasi yang salah, lakukan pencandangan (backup) dari konfigurasi bawaannya (default).
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
Kemudian, kita sunting berkas nginx.conf
:
sudo nano /etc/nginx/nginx.conf
Isikan konfigurasi seperti berikut berikut:
#user html;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
## Virtual Hosts
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Kemudian kita buat berkas virtual host default
:
sudo nano /etc/nginx/sites-available/default
Lalu isikan dengan skrip di bawah ini. Pastikan server_name
disesuaikan dengan nama domain Anda. Juga untuk root
sesuaikan dengan direktori yang Anda inginkan.
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass https://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
Pehartian Untuk membuat virtual host lainnya hilangkan nilai default_server
pada listen
.
Jika sudah, kita buat symbolic link untuk mengaktifkan virtual host di atas.
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
Lalu restart Nginx.
sudo systemctl restart nginx
Integritas Nginx dengan PHP
Pada konfigurasi di atas, kita hanya dapat menjalankan Nginx untuk berkas HTML
saja. Untuk dapat mengeksekusi PHP
diperlukan php-fpm
diaktifkan di setiap pengaturan virtual host.
Pertama-tama kita perlu menyunting php.ini
:
sudo nano /etc/php/php.ini
Cari kata cgi.fix_pathinfo
, ubah menjadi bernilai nol :
cgi.fix_pathinfo=0
Lihat gambar di bawah ini:
Jika Anda pengguna Nano
cari kata dengan menekan tombol CTRL+W
. Jika Anda pengguna Vim
atau Neovim
cari kata dengan ketik :
lalu ketik /\<cgi.fix_pathinfo=
Kemudian sunting socket listen pada php-fpm
.
sudo nano /etc/php/php-fpm.d/www.conf
Cari listen =
dan ganti menjadi seperti berikut:
listen = /var/run/php-fpm/php-fpm.sock
Lihat gambar di bawah ini:
Setelah itu restart php-fpm
.
sudo nano /etc/nginx/sites-available/default
Dan tambahkan skrip berikut:
index index.php index.html index.htm;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Lihat gambar di bawah ini:
Untuk memastikan bahwa konfigurasi Anda sudah benar atau belum dapat melakukan pengecekan Nginx dengan cara berikut:
sudo nginx -t
Jika sudah seperti tulisan di bawah ini, berarti Nginx Anda sudah benar:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Langsung saja restart Nginx.
sudo systemctl restart nginx
Pengecekan
Untuk memastikan bahwa Nginx Anda sudah benar-benar dapat menjalankan PHP atau belum, Anda dapat membuat berkas index.php
di:
sudo nano /usr/share/nginx/html/index.php
Lalu isi dengan skrip di bawah ini.
<?php
phpinfo();
Lihat gambar di bawah ini:
Jika sudah seperti gambar di atas, artinya Anda telah sukses. Semoga bermanfaat. 😉
Komentar