Di dunia pengembangan web, LAMP Stack (Linux, Apache, MySQL, PHP) masih menjadi fondasi yang populer dan tangguh untuk menjalankan aplikasi web dinamis. Kombinasi perangkat lunak sumber terbuka ini menawarkan performa tinggi, keamanan, dan fleksibilitas.
Artikel ini akan memandu kamu untuk membangun stack web server LAMP di Ubuntu 22.04, distribusi Linux yang stabil dan Long Term Support (LTS).
Update dan Upgrade Package Ubuntu
Perbarui repository dan package dari Ubuntu Server 22.04, dengan menjalankan perintah dibawah. Tunggu beberap menit sampai proses selesai.
sudo apt update && apt upgrade -y

Install Web Server Apache2
Setelah proses update dan upgrade package ubuntu selesai. Selanjutnya install web server apache2 yang digunakan untuk web server sebuah website/ cms.
sudo apt install apache2 -y

Allow Service Apache dan OpenSSH pada Firewall (UFW)
Secara default UFW status Inactive/ tidak Active. Pastikan sudah izinkan terlebih dahulu Port Apache2(80) dan OpenSSH(22).
sudo ufw allow in “Apache”
sudo ufw allow in “OpenSSH”
sudo ufw enable

Sesudah izinkan traffic dari port 80, 22 dan mengaktifkan ufw. Cek status UFW pastikan Status: Active.
sudo ufw status

Untuk melihat service application UFW yang didukung pada firewal, bisa menjalankan perintah.
sudo ufw app list

Keterangan UFW App List:
- Apache (80)
- Apache Full (80 dan 443)
- Apache Secure (443)
- OpenSSH (22)
Pengujian Apache2 dan OpenSSH
Akses IP Public Server yang menjalankan apache2 server pada browser, http://IP_Public, pastikan muncul “Apache2 Default Page”

Remote ulang SSH server, pastikan bisa login dan menjalankan perintah.

Install PHP di Ubuntu 22.04
Setelah apache2 sudah berjalan lancar, tahap selanjutnya install PHP untuk menjalankan source code seperti Website atau CMS yang berbasis PHP.
Perintah dibawah akan install php runtime dan module yang dibutuhkan apache2 dan mariaDB.
sudo apt install php libapache2-mod-php php-mysql php-cli -y

Cek versi php yang berjalan di ubuntu
php -v

Version php terinstall pada ubuntu server 8.1.2.
Masuk ke file dir.conf apache2 untuk melihat format file yang didukung. pindahkan posisi index.php ke paling depan ctrl + o (Simpan Perubahan) dan ctrl + x (Exit Editor Nano).
sudo nano /etc/apache2/mods-enabled/dir.conf

Tahap selanjutnya pengujian php dengan menjalankan function phpinfo(); buatkan file pada directory /var/www/html
cd /var/www/html
touch info.php
echo “<?php phpinfo(); ?>” > info.php

Restart dan Status Web Server Apache2
sudo systemctl restart apache2
sudo systemctl status apache2
Akses file info.php pada browser http://IP_PUBLIC/info.php. Pastikan muncul halaman PHP Version artinya php sudah berjalan.

Install PHP-FPM dan Extension
PHP-FPM (FastCGI Process Manager) adalah pengelola proses untuk PHP yang meningkatkan kinerja dan keamanan dengan menjalankan script PHP secara terpisah dari server web (seperti Nginx atau Apache) menggunakan protokol FastCGI.
Sehingga lebih efisien dalam menangani lalu lintas tinggi dan permintaan berat dengan mengelola worker pool (kumpulan proses pekerja) yang siap pakai.
Ini memungkinkan server web fokus pada penyajian file statis sementara PHP-FPM menangani eksekusi kode PHP secara independen, menghasilkan respons lebih cepat dan pemanfaatan sumber daya lebih baik.
sudo apt install libapache2-mod-fcgid imagemagick -y
sudo apt install php8.1-fpm php8.1-imagick php8.1-curl php8.1-mbstring php8.1-mysql php8.1-dom php8.1-xml php8.1-zip php8.1-gd php8.1-iconv php8.1-intl php8.1-mysqli php8.1-pdo-mysql php8.1-fileinfo php8.1-bcmath php8.1-gd php8.1-ldap php8.1-gd php8.1-gmp -y
Cek Status PHP FPM
Pastikan pada php fpm active(running)
sudo systemctl status php8.1-fpm

Mengaktifkan Modul
sudo a2enmod actions fcgid alias proxy_fcgi
Konfigurasi File Konfigurasi Apache2
Konfigurasi file configuration apache2 untuk memasukan php8.1-fpm cgi.
sudo nano /etc/apache2/sites-available/000-default.conf
Masukan script FilesMatch dibawah konfigurasi apache2
<FilesMatch \.php$>SetHandler “proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost”</FilesMatch>

Tekan ctrl+o (simpan) dan ctrl+x (exit)
Restart Web Server Apache2
sudo systemctl restart apache2
sudo systemctl status apache2
Refresh info.php pada browser, Cari “Server API” pastikan berubah menjadi FPM/FastCGI

Konfigurasi LAMP Stack One Site
Pastikan domain sudah terpointing pada DNS Record di provider domain beli atau mnggunakan dns record cloudflare. disini menggunakan cloudflare untuk Record dan Proxy Status : DNS Only
Untuk yang menggunakan sudomain pada web server apache, tidak perlu mengaktifkan cukup memberi simbol pagar #ServerAlias www.your_domain
Buka file konfigurasi apache2 server dengan text editor.
sudo nano /etc/apache2/sites-available/000-default.conf
tambahkan script Server name dan Alias.
ServerName your_domain
ServerAlias www.your_domain

Test configuration apache2 untuk mengecek apakah ada kesalahan. pastikan muncul Syntax Ok dan Reload Apache2 Web Server nya.
sudo apache2ctl configtest
sudo systemctl reload apache2
Akses domain yang digunakan apache server di browser kamu http://domain atau http://subdomain.domain

Mengaktifkan HTTPS/SSL Cloudflare Apache2 Server
Login terlebih dahulu ke dashboard cloudflare masuk SSL/TLS => Create Certificate => Masukan domain/subdomain yang digunakan untuk web server apache, Create. Akan muncul kode unik yaitu Origin Certificate dan Private Key. Copy ke masing-masing file dibawah
Buat file pada directory ssl/certs untuk menyimpan origin certificate.
sudo nano /etc/ssl/certs/lampstack-crt.pem
dan pada file directory ssl/private untuk menyimpan private key.
sudo nano /etc/ssl/private/lampstack-key.pem
Konfigurasi SSL pada Apache2 Web Server
Setelah membuat file Certificate dan Private Key SSL/HTTPS, konfigurasi file ssl apache server
sudo nano /etc/apache2/sites-available/default-ssl.conf
Tambahkan script dibawah
SSLCertificateFile /etc/ssl/certs/lampstack-crt.pem
SSLCertificateKeyFile /etc/ssl/private/lampstack-key.pem

Masukan konfigurasi fcgi pada konfigurasi pada default-ssl.conf
<FilesMatch \.php$>
SetHandler “proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost”
</FilesMatch>
Redirect Port 80 (http) ke 443 (https)
Mengarahkan protocol http ke https, masuk ke file configuration 000-default.conf http.
sudo nano /etc/apache2/sites-available/000-default.conf
Tambahkan script dibawah.
RewriteEngine on
RewriteCond %{SERVER_NAME} =subdomain.domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Pada pengaturan DNS Record Cloudflare aktifkan Proxy Status menjadi Proxied pada domain/subdomain digunakan web server apache.
Aktifkan virtual host, modul rewrite, restart service apache2, dan cek statusnya apakah berjalan dengan baik.
sudo a2enmod ssl rewrite
sudo a2ensite 000-default.conf default-ssl.conf
sudo systemctl restart apache2
systemctl status apache2
Pengujian SSL/HTTPS Web Server Apache
Akses domain/subdomain pada browser menggunakan protocol http://domain/subdomain, pastikan redirect ke https.

Install Database MariaDB
Tahap selanjutnya memasang database MySQL, dengan menjalankan perintah berikut dan tunggu sampai proses install selesai.
sudo apt install mariadb-server -y
Secara default user root mariaDB tidak menggunakan password/ blank, agar lebih aman tambahkan password pada user administrator.
mysql -u root -p
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘PASSWORD_USER_ROOT’;
ganti PASSWORD_USER_ROOT yang ingin kamu dimasukan pada user administrator.

Test login kembali ke database mariaDB. Pastikan tidak bisa masuk saat tanpa password/blank.
Kamu telah berhasil membangun stack web server LAMP di Ubuntu 22.04. Stack ini siap digunakan untuk mengembangkan dan menjalankan aplikasi web seperti CMS (WordPress), Framework PHP (Laravel, CodeIgniter), atau custom system.

