Panduan Instalasi & Konfigurasi LAMP Stack di Red Hat Enterprise Linux 10

LAMP Stack merupakan singkatan dari Linux, Apache HTTP Server, MariaDB (atau MySQL), dan PHP, yaitu kombinasi perangkat lunak sumber terbuka yang telah lama menjadi standar untuk membangun dan menjalankan aplikasi web. LAMP banyak digunakan untuk meng-host berbagai aplikasi berbasis PHP, mulai dari website sederhana hingga sistem berskala besar seperti WordPress, Laravel, Moodle, Nextcloud, dan berbagai aplikasi bisnis lainnya.

Pada panduan ini, sistem operasi yang digunakan adalah Red Hat Enterprise Linux 10 (RHEL 10), versi terbaru dari distribusi Linux enterprise yang dikembangkan oleh Red Hat. RHEL 10 menawarkan peningkatan pada aspek keamanan, stabilitas, performa, serta dukungan teknologi modern yang menjadikannya pilihan tepat untuk lingkungan produksi, pusat data, maupun layanan cloud seperti Amazon Web Services (AWS), Microsoft Azure, dan Google Cloud Platform (GCP).

Komponen utama yang akan dikonfigurasi dalam panduan ini meliputi:

  • Linux (RHEL 10) sebagai sistem operasi yang menjadi fondasi server.
  • Apache HTTP Server sebagai web server yang bertugas menerima dan melayani permintaan HTTP maupun HTTPS dari pengguna.
  • MariaDB sebagai sistem manajemen basis data relasional untuk menyimpan data aplikasi.
  • PHP sebagai bahasa pemrograman sisi server yang memproses logika aplikasi web dan berinteraksi dengan basis data.

Selain instalasi komponen utama, panduan ini juga membahas berbagai konfigurasi pendukung yang diperlukan agar server siap digunakan di lingkungan produksi, di antaranya konfigurasi VirtualHost, SELinux, firewalld, HTTPS menggunakan Let’s Encrypt, serta praktik dasar pengamanan server. Dengan konfigurasi tersebut, server tidak hanya berfungsi dengan baik, tetapi juga memiliki tingkat keamanan yang lebih baik untuk menghadapi penggunaan di dunia nyata.

Panduan ini disusun secara bertahap mulai dari persiapan sistem, instalasi setiap komponen, konfigurasi layanan, hingga proses pengujian. Setiap langkah disertai contoh perintah yang dapat langsung dijalankan pada RHEL 10 sehingga memudahkan proses implementasi, baik bagi administrator sistem yang baru mempelajari RHEL maupun yang telah berpengalaman.

Di akhir panduan, Anda akan memiliki sebuah server LAMP yang siap digunakan untuk meng-host berbagai aplikasi web berbasis PHP dengan dukungan HTTPS, konfigurasi yang terstruktur, dan praktik terbaik yang sesuai untuk lingkungan pengembangan maupun produksi.

Berikut adalah panduan lengkap menginstal LAMP Stack (Linux, Apache, MariaDB, PHP) di Red Hat Enterprise Linux 10 (RHEL 10) menggunakan repository resmi Red Hat.

Panduan Install LAMP Stack di Red Hat Enterprise Linux 10

 

LAMP Stack RHEL 10.2 - Fastfetch
LAMP Stack RHEL 10.2 – Fastfetch

PREREQUISITES:

  • AWS EC2 Instances dengan RHEL 10
  • Hak Akses Root Penuh (sudo privileges)
  • Familiar dengan Command-Line Linux, terutama DNF 5

1. Update Sistem dan Install Paket yang Dibutuhkan

Perbarui seluruh paket terlebih dahulu.

sudo dnf update -y
sudo dnf install wget nano zip unzip curl -y
sudo reboot

2. Install Apache HTTP Server

* Install Apache:

sudo dnf install httpd -y

* Aktifkan dan jalankan service:

sudo systemctl enable --now httpd

* Cek status:

systemctl status httpd

* Output harus menunjukkan:

Active: active (running)

* Izinkan Firewall

Jika firewalld aktif:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

* Test Apache

Buka browser:

http://IP_SERVER

Akan muncul halaman:

Apache HTTP Server Test Page

3. Install MariaDB

* Install database server MariaDB:

sudo dnf install mariadb-server -y

* Aktifkan service:

sudo systemctl enable --now mariadb

* Cek status:

systemctl status mariadb

* Jalankan Secure Installation

sudo mariadb-secure-installation

* Rekomendasi:

Set root password? Y
Remove anonymous users? Y
Disallow remote root login? Y
Remove test database? Y
Reload privilege tables? Y

4. Login MariaDB

sudo mariadb

atau

mariadb -u root -p

5. Membuat Database WordPress

Contoh:

CREATE DATABASE dbname
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

CREATE USER 'dbuser'@'localhost'
IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES
ON dbname.*
TO 'dbuser'@'localhost';

FLUSH PRIVILEGES;

EXIT;

6. Install PHP

* Install PHP beserta modul yang umum digunakan:

sudo dnf install php \
php-cli \
php-fpm \
php-mysqlnd \
php-gd \
php-mbstring \
php-xml \
php-curl \
php-zip \
php-opcache \
php-intl \
php-bcmath -y

* Cek versi:

php -v

7. Restart Apache

sudo systemctl restart httpd

8. Test PHP

* Buat file:

sudo nano /var/www/html/info.php

* Isi:

<?php
phpinfo();

* Akses:

http://IP_SERVER/info.php

Jika muncul halaman PHP Info berarti PHP berhasil terpasang.

* Setelah selesai pengujian, hapus file ini karena berpotensi membocorkan informasi konfigurasi:

sudo rm /var/www/html/info.php

9. Konfigurasi SELinux

* Cek status SELinux:

getenforce

* Jika hasilnya:

Enforcing

* Izinkan Apache terhubung ke MariaDB:

sudo setsebool -P httpd_can_network_connect_db on

* Verifikasi:

getsebool httpd_can_network_connect_db

* Output harus:

httpd_can_network_connect_db --> on

Langkah ini penting untuk mencegah error seperti:

mysqli_sql_exception:
Permission denied

10. Buat Direktori Website dan Install Aplikasi Web (Misal WordPress)

sudo mkdir -p /var/www/example.com/public_html
cd /var/www/example.com/public_html

* Beri Hak akses:

sudo chown -R apache:apache /var/www/example.com
sudo chmod -R 755 /var/www/example.com

* Install Aplikasi Web (Misal WordPress)

wget https://wordpress.org/latest.zip

* Ekstrak:

unzip latest.zip

* Pindahkan semua isi folder wordpress ke document root public_html

mv wordpress/* /var/www/example.com/public_html

Perbaiki Hak Akses:

sudo chown -R apache:apache /var/www/example.com/public_html

11. Konfigurasi Virtual Host

* Buat Virtual Host:

HTTP Port 80:

sudo nano /etc/httpd/conf.d/example.com.conf

* Isi:

<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com

DocumentRoot /var/www/example.com/public_html

<Directory /var/www/example.com/public_html>
AllowOverride All
Require all granted
</Directory>

ErrorLog logs/example.com-error.log
CustomLog logs/example.com-access.log combined
</VirtualHost>

HTTPS Port 443:

sudo nano /etc/httpd/conf.d/example.com-ssl.conf

* Isi

<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com

DocumentRoot /var/www/example.com/public_html

<Directory /var/www/example.com/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

ErrorLog logs/example.com-ssl-error.log
CustomLog logs/example.com-ssl-access.log combined

SSLEngine on

SSLCertificateFile /etc/ssl/example.com/fullchain.pem
SSLCertificateKeyFile /etc/ssl/example.com/privkey.pem

# Konfigurasi SSL yang disarankan
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder on

# Header keamanan
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
</VirtualHost>

* Install Modul SSL

sudo dnf install mod_ssl -y

* Restart Apache

sudo apachectl configtest

* Jika:

Syntax OK

* Lakukan restart:

sudo systemctl restart httpd

11. Install Modul Rewrite

* Pastikan modul sudah aktif:

httpd -M | grep rewrite

Jika muncul:

rewrite_module

berarti sudah aktif.

12. Install ACME Client dan SSL Let’s Encrypt

* Install ACME Client:

curl https://get.acme.sh | sh

* Kemudian:

source ~/.bashrc

Acme.sh sekarang menggunakan ZeroSSL sebagai CA default, dan ZeroSSL mengharuskan Anda mendaftarkan akun menggunakan alamat email (EAB).

Jika Anda ingin menggunakan Let’s Encrypt (yang umumnya lebih familiar dan tidak memerlukan registrasi EAB), ubah CA default ke Let’s Encrypt.

Jalankan:

acme.sh --set-default-ca --server letsencrypt

Kemudian daftar akun Let’s Encrypt (gunakan email Anda):

acme.sh --register-account -m bayu@kulivps.com

Setelah itu, issue sertifikat SSL:

acme.sh --issue \
-d example.com \
-d www.example.com \
--webroot /var/www/example.com/public_html

Install sertifikat ke lokasi permanen

sudo mkdir -p /etc/ssl/example.com

Kemudian install sertifikat:

acme.sh --install-cert -d example.com \
--ecc \
--key-file /etc/ssl/example.com/privkey.pem \
--fullchain-file /etc/ssl/example.com/fullchain.pem \
--reloadcmd "systemctl reload httpd"

13. Membuka Port Firewall

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

14. Fix SELinux Network Restrictions

Secara default, SELinux mencegah server web (Apache/Nginx) membuka soket jaringan keluar. Sehingga kita tidak bisa terkoneksi dengan server WordPress yang menyebabkan kita tidak bisa menginstall plugins maupun themes dari sisi admin dashboard WordPress.

* Periksa apakah SELinux memblokir koneksi HTTP/HTTPS:

getsebool httpd_can_network_connect

* Jika itu di-nonaktifkan (off), maka aktifkan secara permanen dengan menjalankan perintah berikut:

sudo setsebool -P httpd_can_network_connect 1

* Restart web server

sudo systemctl restart httpd

15. Verifikasi

* Apache:

systemctl status httpd

* MariaDB:

systemctl status mariadb

* PHP:

php -v

* Firewall:

firewall-cmd --list-services

* SELinux:

getenforce

16. Setup WordPress di Browser

Langkah terakhir, akses domain website Anda dan setup WordPress di browser:

https://example.com

17. Struktur Direktori

/var/www/
└── example.com
└── public_html
├── index.php
├── css/
├── js/
└── images/

* Paket yang Terinstal

Komponen Paket
Web Server Apache HTTP Server (httpd)
Database MariaDB Server 10.11
Bahasa Pemrograman PHP 8.3
PHP Database Driver php-mysqlnd
SSL Certbot + Let’s Encrypt
Firewall firewalld
Security SELinux

Panduan ini cocok untuk menjalankan berbagai aplikasi berbasis PHP seperti WordPress, Laravel, CodeIgniter, Moodle, phpMyAdmin, Nextcloud, maupun aplikasi PHP lainnya di RHEL 10.

LEAVE A REPLY

Please enter your comment!
Please enter your name here