Stack Web Server LAMP Ubuntu 22.04
Stack Web Server LAMP Ubuntu 22.04

Bangun Stack Web Server LAMP (Linux, Apache, mariaDB,dan PHP) di Ubuntu 22.04

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

Update dan Upgrade Package Ubuntu 22.04
Update dan Upgrade Package Ubuntu 22.04

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

Install Apache2 Server
Install Apache2 Server

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

Konfigurasi Firewall UFW Enable Service Apache dan OpenSSH
Konfigurasi Firewall UFW Enable Service Apache dan OpenSSH

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

sudo ufw status

Melihat Status Firewall UFW
Melihat Status Firewall UFW

Untuk melihat service application UFW yang didukung pada firewal, bisa menjalankan perintah.

sudo ufw app list

List UFW App
List UFW App

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

Pengujian Web Server Apache2
Pengujian Web Server Apache2

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

Pengujian SSH Server
Pengujian SSH Server

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

Install PHP Runtime dan Module
Install PHP Runtime dan Module

Cek versi php yang berjalan di ubuntu

php -v

Check Version PHP
Check Version PHP

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

Konfigurasi Format File Apache2
Konfigurasi Format File Apache2

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

Pengujian PHP dengan Function phpinfo
Pengujian PHP dengan Function phpinfo

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.

Informasi PHP Function
Informasi PHP Function

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

Melihat Status PHP FPM
Melihat Status PHP 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>
Include PHP-FPM ke File Konfigurasi Apache2
Include PHP-FPM ke File Konfigurasi Apache2

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

Check Server API PHP
Check Server API PHP

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

Konfigurasi Domain atau Subdomain Web Server Apache2
Konfigurasi Domain atau Subdomain Web Server Apache2

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

Mengkases Web Server apache dengan subdomain
Mengkases Web Server apache dengan subdomain

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

Include Private Key dan Certificate SSL Cloudflare Apache2 Server
Include Private Key dan Certificate SSL Cloudflare Apache2 Server

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]

Redirect http ke https
Redirect http ke https

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.

Pengujian HTTPS Web Server Apache2
Pengujian HTTPS Web Server Apache2

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.

Mengganti password default root mariaDB
Mengganti password default root mariaDB

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.