Panduan cara install Nginx, MariaDB, PHP atau LEMP stack di Linux Ubuntu 18.04 LTS. Sebagai bonus, pada tutorial ini dilengkapi dengan instalasi Redis server dan OPCache untuk meningkatkan kinerja web server serta konfigurasi dan optimasi Nginx.
Diawali dengan update sistem Linux
apt update
Langkah 1 – Install MariaDB
Secara default pada Linux 18.04 LTS paket software MariaDB sudah menggunakan versi mutakhir, yaitu MariaDB versi 10. begitupun dengan PHP sudah versi 7.2.
apt install mariadb-server -y
Kemudian tingkatkan kemanan instalasi MariaDB, seperti setup password untuk akun root, disable remote akses MySQL dan menghapus database yang tidak terpakai, (test), jalankan perintah berikut
mysql_secure_installation
Jawab pertanyaan berikut ini dengan yang saya tandai warna merah, lalu tekan Enter.
Enter current password for root (enter for none): Tekan Enter
Set root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
Langkah 2 – Install PHP dan modul
Baris perintah dibawah ini akan meng-install modul-modul penting agar Nginx, MySQL dan PHP dapat berfungsi dan terintegrasi dengan baik, diantaranya: php-fpm
dan php-mysql
.
apt install php-fpm php-mysql php-cli php-gd php-ldap php-odbc php-pdo php-pear php-mbstring php-xml php-xmlrpc php-mbstring php-snmp php-soap -y
Install OPCache dan Redis
Langkah ini optional, Anda bisa melewatinya jika sedang terburu-buru atau langsung ke langkah 3 – install Nginx.
OPCache berguna untuk meningkatkan kinerja PHP dengan cara menyimpan skrip precompiled bytecode dalam shared memori, sehingga tidak perlu memuat dan mem-parsing skrip pada setiap request.
apt install php-opcache
Edit php.ini
nano /etc/php.ini
Cari baris berikut, sesuaikan
cgi.fix_pathinfo=0
upload_max_filesize = 32M
post_max_size = 128M
max_execution_time = 90
Dilanjut dengan pemasangan redis-server dan ekstensi php-redis
Selain OPCache, Redis (REmote DIctionary Server) akan melengkapi kesempurnaan kinerja web server digunakan untuk caching, message broker dan database agar dapat mengurangi penggunaan bandwith dan server load, sangat cocok untuk situs yang sibuk.
apt install redis server && apt install php-redis -y
Aktifkan redis
systemctl start redis-server
systemctl enable redis-server.service
Setelah selesai proses instalasi, cek apakah Redis telah aktif
redis-cli
Ketik ping
dan Enter
, hasilnya harusnya seperti ini
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
Pengguna WordPress, silahkan ikuti panduan cara install dan konfigurasi Redis.
Langkah 3 – Install Nginx
Pada Linux Ubuntu 18.04 paket software Nginx web server versi terbaru sudah ada di repository, jadi langsung saja
apt install nginx -y
Kemudian start service Nginx dan aktifkan saat sistem booting
systemctl start nginx && systemctl enable nginx
Langkah 4 – Konfigurasi dan optimasi Nginx
Edit konfigurasi virtual host Nginx pakai nano teks editor.
echo > /etc/nginx/sites-available/default && nano /etc/nginx/sites-available/default
Kemudian copy-paste template berikut
server {
listen 80;
listen [::]:80;
server_name _;
location /error/ {
alias /usr/share/nginx/html/errors/;
}
root /var/www/html/;
index index.htm index.html index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
access_log /var/log/nginx/access_log;
access_log off;
error_log /var/log/nginx/error_log error;
# security
error_page 403 = 404;
location ~ /\. { access_log off; log_not_found off; deny all; }
location ~ ~$ { access_log off; log_not_found off; deny all; }
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
# compress
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon image/png image/gif image/jpeg text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/xml
text/vtt text/x-component text/x-cross-domain-policy;
# text/html sudah dikompres oleh gzip module
# caches
location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; }
location ~* \.(woff|svg)$ { access_log off; log_not_found off; expires 30d; }
location ~* \.(js)$ { access_log off; log_not_found off; expires 7d; add_header Cache-Control "public, no-transform"; }
# php block
location ~ \.php?$ {
try_files $uri = 404;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_split_path_info ^(.+\.php)(.*)$;
# Cegah kebocoran info versi
fastcgi_hide_header X-Powered-By;
}
}
Restart service php-fpm
dan nginx
systemctl restart php-fpm && systemctl restart nginx
Kemudian buat file info.php
untuk memeriksa apakah Nginx, PHP-FPM serta modul-modul PHP lain sudah bekerja dengan baik. Jalankan perintah berikut:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
Ubah hak kepemilikan (chown) www-data
dan chmod file (644) dan folder (755) yang ada di direktori web root /var/www/html
chown -R www-data:www-data /var/www/html
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
Akses menggunakan browser http://ip-server, pastikan kolom Server API adalah FPM/FastCGI dan ada ekstensi Redis disana.
Langkah 5 – Troubleshooting
Jika IP tidak bisa diakses melalui browser, cek apakah firewall aktif, jika iya tambahkan service http (buka port 80) dengan perintah berikut:
ufw allow http
ufw allow https
Selamat mencoba 😀
Catatan:
Sebelum dipublikasikan tutorial ini sudah dites pada Linux Ubuntu 18.04.2 LTS dan bekerja dengan sangat baik. Pada tutorial selanjutnya akan dibahas cara install LEMP di CentOS 7.
Referensi: