Assalamualaikum wr.wb.
LEMP Stack
adalah kumpulan software yang bisa digunakan untuk menyajikan web dinamis dan
web aplikasi yang ditulis dengan bahasa PHP. LEMP sendiri merupakan singkatan
(akronim) dari Linux Os, dengan web server Nginx (dibaca-Engine
X), penyimpanan basis data MySQL / MariaDB, dan pemprosesan
dinamis menggunakan Php.
Pada blog kali
ini, kita akan melakukan praktik LEMP stack di linux Debian 11. Sebelum mengikuti-nya
pastikan kamu sudah melakukan konfigurasi minimal yaitu IP Address, SSH,
Sudoers, DHCP Server, dan DNS Server. Untuk tutorialnya bisa di cari disini.
Berikut agenda pembahasannya :
- Install web server Nginx
- Install Database MariaDB
- Install PHP
- Konfigurasi Nginx Server Blocks
Untuk lanjutan dari postingan ini, kita akan belajar untuk melakukan instalasi HTTPS (SSL/TLS) di Nginx, instal phpMyAdmin dan deploy web dinamis DVWA untuk keperluan penetration testing.
Oke mari kita lanjut ke langkah konfigurasi LEMP Stack.Step-1 Install Web Server Nginx
Nginx merupakan open sources web server yang sudah digunakan oleh 400 juta website dan 67% dari 10 ribu top web dunia. Memiliki kelebihan yaitu, performa tinggi, minim mengkonsumsi sumber daya, dan stabil. Selain itu, Nginx juga bisa digunakan sebagai reverse proxy, HTTP load balancer, dan email proxy.
Gunakan perintah berikut untuk menginstall Nginx
apt-get update
apt-get -y install nginx
Jalankan (start) nginx dan enable service nginx agar otomatis dijalankan saat system start-up.
sudo systemctl start nginx
sudo systemctl enable nginx
Selangkah lagi untuk memastikan bahwa nginx
benar-benar berjalan menggunakan perintah berikut.
sudo systemctl status nginx
Selanjutnya cek tampilan default web di browser client.
Sekarang kita sudah menginstall web server Nginx, selanjutnya agar bisa membuat halaman website dinamis biasanya membutuhkan database server sebagai penyimpanan data-nya. Dan sekarang kita akan menginstall MariaDB sebagai database managemen system (DBMS) server kita
Untuk
menginstall MariaDB, bisa menggunakan perintah berikut.
sudo apt install mariadb-server -y
Sekarang
database MariaDB sudah terinstall, namun kita perlu melakukan setting default
MariaDB untuk melakukan set password root dan melakukan beberapa perubahan
menggunakan peritah berikut.
sudo mysql_secure_installation
Untuk inputan
password pertama langsung tekan Enter saja, karena secara bawaan user root
tidak diberikan password. Setelah itu silahkan set password baru untuk user
root DBMS dan ikuti seluruh pertanyaan berikutnya dengan jawaban y untuk Yes
agar keaman database kamu optimal.
sudo mysql -u root -p
# Ini query untuk cek database
show databases;
Setelah
menginstall Nginx sebagai web server, dan MariaDB sebagai sistem manajemen
database. Kita akan menginstall PHP untuk memproses kode dinamik konten.
Secara bawaan di
Nginx tidak terdapat PHP processing manager seperti web server lainnya. Untuk
itu kita perlu menginstall php-fpm dimana ini merupakan singkatan dari “fastCGI
process manager”. Untuk menginstall php gunakan perintah berikut.
sudo apt install php php-fpm
Untuk debian 11
versi bawaan PHP yang tesedia adalah php versi 7.4, gunakan perintah “php
–version /atau/ php-v” untuk mengeceknya.
Jalankan juga perintah berikut untuk menginstall ekstensi yang dibutuhkan agar web framework terkini seperti WordPress dan Laravel bisa berjalan.
sudo apt -y install php php7.4-{curl,gd,intl,mbstring,soap,xml,xmlrpc,zip,mysql}
Dalam satu perintah diatas kita telah menginstall banyak ekstensi sekaligus.
Step-4 Konfigurasi Nginx Server Blocks
Server Block
Nginx mirip dengan virtual host dalam Apache. Memungkinkan kita menjalankan
lebih dari satu situs web dalam satu mesin. Untuk konsepnya sama, kita dapat
menentukan server name (domain), menentukan root dokumen (direktori yang berisi
file situs web), mentukan kebijakan kemananan, menggunakan sertifikat SSL dan
masih banyak lagi.
Kita tidak akan menggunakan blok server default karena tidak mencukupi untuk mejalankan kode PHP. Maka dari itu kita akan membuat blok server baru, sebelum membuat, kita hapus terlebih dahulu tautat simbolis (symbolic link) default dalam direktori sites-enabled dengan menjalankan perintah berikut.
sudo unlink /etc/nginx/sites-enabled/default
Lalu kita akan
membuat server blok baru dengan nama default.blocks dengan teks editor nano
sudo nano /etc/nginx/sites-available/default.blocks
kemudian masukan
skrip berikut ini :
server {
listen 80;
listen [::]:80;
server_name _;
root /var/www/html/;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# disable access to hidden files
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}
Keterangan :
listen - menentukan port berapa Nginx mendengarkan (listen). Pada kasus diatas, listen
port 80, artinya Nginx akan menerima request ke port 80 atau port default untuk
HTTP. Jika nantinya website sudah dikonfigurasi sertifikat SSL/TLS maka port
listen diubah ke port 443 (HTTPS).
root - menentukan dokumen root dimana file web yang akan di tampilkan disimpan. Pada
konfigurasi diatas dokumen root yang digunakan adalah /var/ww/html
index - menentukan urutan index file yang akan di prioritaskan untuk website.
server_name –
menentukan nama domain atau ip address mana yang harus ditanggapi. Arahkan ke
nama domain atau ke ip-public.
location / - Blok
lokasi pertama menyertakan direktif try_files, yang memeriksa keberadaan file
atau direktori yang cocok dengan permintaan URL. Jika Nginx tidak dapat
menemukan sumber daya yang sesuai, maka akan muncul error 404.
location ~
\.php$ - Lokasi ini menghandel semua proses PHP dengan mengarahkan Nginx ke
file konfigurasi fastcgi-php.conf dan file php7.4-fpm.sock.
location ~*
\.(jpg|jpeg|..|xml) - Lokasi yang menggunakan ekspresi reguler (~*) untuk
mencocokkan permintaan yang berakhir dengan ekstensi file tertentu seperti
gambar (jpg, jpeg, gif, png, webp, svg), font (woff, woff2, ttf), style (css),
script (js), dan beberapa jenis file lainnya.
location ~ /\.ht
– Baris blok terakhir ini berhubungan dengan file .htaccess, yang tidak boleh
di proses oleh Nginx. Dengan menambahkan kata deny all, jika ada file .htaccess
yang masuk ke root dokumen, file tersebut tidak akan disajikan kepada
pengunjung.
Silahkan dipahami keterangan syntax diatas !!!
Selanjutnya cek
apakah terdapat kesalahan atau error dalam syntax blok server yang kita buat.
sudo nginx -t
Jika berhasil
akan muncul seperti gambar berikut :
Setelah
menambahkan membuat file blok server baru dan melakukan test, buat tautan
simbolis pada direktori sites-enabled menggunakan perintah berikut.
sudo ln -s /etc/nginx/sites-available/default.blocks /etc/nginx/sites-enabled/
Jika semua sudah
selesai, reload service Nginx untuk menerapkan perubahan.
sudo systemctl reload nginx
Test PHP
Nah, sampai di
tahap ini semua yang kita butuhkan untuk membuat LEMP Stack sudah terinstall.
Dan kita juga sudah membuat virtualhost / server block baru yang support PHP di
Nginx.
Selanjutnya kita
akan melakukan test dengan membuat file php yang berisi script untuk
menampilkan php info.
sudo nano /var/www/html/index.php
# Tambahkan Skrip Berikut
<?php
phpinfo();
?>
Kemudian coba
akses http://ip_atau_domain/info.php
di browser client.
Setelah melakukan
cek kesesuaian informasi PHP server dengan halaman info php. Selanjutnya kita
harus hapus file info php karena mengandung informasi sensitif mengenai
lingkungan PHP dan server.
sudo rm /var/www/html/info.php
Membuat Blok
Server Baru
Kita akan melakukan
ujicoba membuat blok server baru dengan ketentuan berikut :
Nama domain : web1.srvabdultjkt.net
Document Root :
/var/www/web1
Sources-Code : https://github.com/pranavraj1720/Responsive-Landing-Page-Website
Oke, langkah
pertama adalah memastikan kita sudah membuat sub-domain web1 di konfigurasi
file forward DNS server bind9. Gunakan record CNAME (alias) untuk mengarahkan
ke domain utama seperti gambar berikut.
Jika sudah
silahkan restart service bind9, dan lakukan cek sub-domain menggunakan nslookup. Akan
muncul tampilan seperti dibawah jika berhasil.
Langkah kedua,
buat file dokumen root untuk tempat menyimpan situs web yang biasanya disimpan
didalam direktori /var/www. Pada panduan ini kita akan menggunakan stuktur
direktori seperti dibawah.
--- /var/www/
--------- web1.srvabdultjkt.net/
------------------
public_html
Didalam
direktori /var/www/ kita akan membuat direktori sesuai dengan nama domain, dan
membuat direktori public_html untuk menyimpan file situs web.
sudo mkdir -p /var/www/web1.srvabdultjkt.net/public_html
Pindah kedalam
direktori document root web1 menggunakan perintah cd.
sudo cd /var/www/web1.srvabdultjkt.net/public_html
Langkah ketiga
kita akan mendownload / mengcloning website yang sudah jadi dari github,
pastikan teman-teman sudah menginstall git dan mempunyai link code yang akan di
clone. Gunakan perintah berikut :
sudo git clone https://github.com/pranavraj1720/Responsive-Landing-Page-Website.git .
Langkah
selanjutnya, buat file konfigurasi blok server Nginx pada file /etc/nginx/sites-available
dengan nama web1.conf kemudian tambahkan script berikut.
sudo nano /etc/nginx/sites-available/web1.conf
Script blok server
diatas hanya mendukung web statis berbasis html, dan belum bisa menjalankan web
dinamis PHP. Lakukan cek syntax blok server menggunakan perintah berikut
pastikan success.
Aktifkan virtualhost
/ blok server dengan cara membuat tautat simbolis file web1.conf ke direktori /etc/nginx/sites-enable
menggunakan perintah berikut.
sudo ln -s /etc/nginx/sites-available/web1.conf /etc/nginx/sites-enabled/
Reload service
nginx untuk menerapkan perubahan.
sudo systemctl reload nginx
Terakhir cek website
di browser client dengan melakukan search alamat : http://web1.srvabdultjkt.net/
Lanjutan Materi
Silahkan kunjungi postingannya disini :
Referensi :
https://gegeriyadi.com/cara-install-lemp-di-ubuntu/
https://www.digitalocean.com/how-to-install-lemp-stack-on-ubuntu-22-04
https://www.linuxid.net/36173/tutorial-konfigurasi-nginx-server-blocks-di-ubuntu-20-04/
0 Comments