Install dan Konfigurasi LEMP Stack di Debian 11

 

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.

Jika muncul tampilan diatas, intalasi web server nginx berhasil.

Step-2 Install Database MariaDB

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.


Uji coba login kedalam DBMS menggunakan user root dan menjalankan query sql untuk melihat daftar database yang tersedia.

sudo mysql -u root -p

# Ini query untuk cek database

show databases;



Step-3 Install PHP

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. Blok server biasanya tersedia pada path berikut : /etc/nginx/sites-available

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/

Konfigurasi server block Nginx + sub-domain berhasil !!!

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/








Post a Comment

0 Comments