Rocky Linux 9, sebagai penerus CentOS, adalah sistem operasi enterprise yang stabil dan ideal untuk menjalankan stack ini.
Install Stack LAMP Rocky Linux 9 tetap menjadi fondasi klasik yang solid untuk menghosting website dinamis dan aplikasi web.
Web Server Apache
Update package Rocky Linux
sudo dnf update
Install web server apache2.
sudo dnf install httpd -y
Aktifkan service apache2, untuk menjalankan otomatis saat reboot.
sudo systemctl enable httpd
Jalankan service apache2
sudo systemctl start httpd
Cek status service apache, pastikan muncul active (running) dan enabled.
sudo systemctl status httpd
Matikan firewalld sementara.
sudo systemctl stop firewalld
Akses http://IP_Server pada browser, pastikan muncul halaman default web server apache.

Database MySQL
Install package database MySQL.
sudo dnf install mysql-server -y
Cek version MySQL
mysql --version
Output: mysql Ver 8.0.45 for Linux on x86_64 (Source distribution)
Aktifkan service mysql, untuk menjalankan otomatis saat sistem reboot.
sudo systemctl enable mysqld
Jalankan service database MySQL.
sudo systemctl start mysqld
Cek status service MySQL.
sudo systemctl status mysqld
Aktifkan user root authentication MySQL.
sudo mysql_secure_installation
- Press y|Y for Yes, any other key for No: Y [Enter]
- Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2 [Enter]
New password: Masukan_Password
Re-enter new password: Masukan_Password - Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y [Enter]
- Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y [Enter]
- Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y [Enter]
- Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y [Enter]
- Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y [Enter]
Restart services MySQL.
sudo systemctl restart mysqld
Akses MySQL
Masuk ke konsol MySQL sebagai pengguna root.
sudo mysql -u root -p
Buat sample database geeks_db.
CREATE DATABASE geeks_db;
Cek database yang dibuat.
SHOW DATABASES;
Output: +--------------------+ | Database | +--------------------+ | geeks_db | | information_schema | | mysql | | performance_schema | | sys | +--------------------+
Keluar dari console MySQL
EXIT;
Install PHP and Configure PHP-FPM
PHP memungkinkan pemrosesan konten web dinamis dan PHP-FPM mengelola koneksi PHP untuk memproses permintaan menggunakan pool dengan konfigurasi sumber daya tertentu.
Ikuti langkah-langkah di bawah ini untuk menginstal PHP dan mengkonfigurasi PHP-FPM di server.
sudo dnf install php php-fpm -y
Instal ekstensi PHP umum yang dibutuhkan oleh sebagian besar aplikasi web dinamis.
sudo dnf install php-mysqlnd php-gd php-curl php-mbstring php-xml php-zip -y
Cek versi php
php -v
Output:
PHP 8.0.30 (cli) (built: Feb 18 2026 19:19:45) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.30, Copyright (c) Zend Technologies
with Zend OPcache v8.0.30, Copyright (c), by Zend Technologies
Lihat versi PHP-FPM yang terpasang dan verifikasi bahwa versi tersebut sesuai dengan informasi versi PHP.
php-fpm -v
PHP 8.0.30 (fpm-fcgi) (built: Feb 18 2026 19:19:45)
Copyright (c) The PHP Group
Zend Engine v4.0.30, Copyright (c) Zend Technologies
with Zend OPcache v8.0.30, Copyright (c), by Zend Technologies
Aktifkan layanan PHP-FPM agar berjalan otomatis saat sistem dinyalakan
sudo systemctl enable php-fpm
Jalankan service php-fpm
sudo systemctl start php-fpm
Lihat status layanan PHP-FPM dan verifikasi bahwa layanan tersebut berjalan. active (running) dan enabled
sudo systemctl status php-fpm
Buka konfigurasi pool PHP-FPM default.
sudo nano /etc/php-fpm.d/www.conf
Temukan user dan grup berikut. Biarkan apache sebagai nilai default untuk mengaktifkan koneksi PHP-FPM ke server web Apache.
user = apache group = apache
Cari listen berikut dan verifikasi jalur soket PHP-FPM UNIX yang akan digunakan saat terhubung ke layanan.
listen = /run/php-fpm/www.sock
Simpan dan keluar. Restart PHP-FPM untuk menerapkan perubahan konfigurasi.
sudo systemctl restart php-fpm
Konfigurasi Apache dengan PHP-FPM
Apache terhubung ke layanan PHP-FPM menggunakan jalur soket UNIX yang didefinisikan dalam konfigurasi pool.
PHP-FPM menggunakan konfigurasi virtual host di direktori /etc/httpd/conf.d/ secara default untuk menangani koneksi ke server web Apache.
Ikuti langkah-langkah di bawah ini untuk memodifikasi file virtual host dan mengkonfigurasi Apache dengan PHP-FPM untuk memproses permintaan PHP di server.
Buka file konfigurasi virtual host PHP-FPM default php.conf menggunakan editor.
sudo nano /etc/httpd/conf.d/php.conf
Temukan blok mod_php berikut, SetHandler mengarah ke jalur soket UNIX PHP-FPM => /run/php-fpm/www.sock.
Simpan dan keluar.
<FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
Konfigurasi di atas memungkinkan Apache untuk memproses dan meneruskan permintaan PHP ke jalur soket UNIX PHP-FPM. Ganti jalur default /run/php-fpm/www.sock dengan nilai yang ada dalam konfigurasi pool PHP-FPM.
Periksa konfigurasi Apache untuk cek kesalahan sintaks.
sudo apachectl configtest
Restart Apache untuk menerapkan perubahan konfigurasi.
sudo systemctl restart httpd
Buat file aplikasi PHP sampel baru bernama testphp.php di direktori root web default /var/www/html/.
sudo nano /var/www/html/testphp.php
Tambahkan konten berikut ke dalam file.
<?php
phpinfo();
?>
Kode aplikasi PHP di atas menampilkan informasi versi PHP yang terpasang di server, saat diakses melalui peramban web.
Restart service httpd
sudo systemctl restart httpd
Akses alamat IP server di jendela browser web baru menggunakan path URL http://SERVER-IP/phptest.php .
Test Stack LAMP
Apache mengirimkan aplikasi web menggunakan konfigurasi virtual host di server. PHP-FPM memproses permintaan aplikasi web dinamis sementara server basis data MySQL berinteraksi dengan PHP menggunakan modul php-mysqlnd.
Masuk ke server basis data MySQL sebagai pengguna root.
sudo mysql -u root -p
Buat user baru bernama geeks untuk digunakan dengan basis data geeks_db yang telah di buat sebelumnya.
CREATE USER 'geeks'@'localhost' IDENTIFIED BY 'g33K5_)';
Berikan hak akses penuh kepada pengguna untuk mengakses basis data geeks_db.
GRANT ALL PRIVILEGES ON geeks_db.* TO 'geeks'@'localhost';
Beralih ke basis data.
use geeks_db;
Buat tabel sampel baru bernama geekss dengan dua kolom.
CREATE TABLE geekss (
id INT AUTO_INCREMENT PRIMARY KEY,
message VARCHAR(255)
);
Query SQL di atas membuat tabel geekss baru dengan kolom-kolom berikut:
- id: Menyimpan data numerik yang akan bertambah secara otomatis setiap kali data baru dibuat.
- message: Menyimpan data character campuran (VARCHAR) seperti string.
Tambahkan string baru “Geeks Conn” di kolom message dalam tabel.
INSERT INTO geekss (message) VALUES ('Geeks Conn');
Keluar dari konsol MySQL.
EXIT;
Buat konfigurasi virtual host Apache baru di direktori /etc/httpd/conf.d/. Misalnya, app.DOMAIN.conf .
sudo nano /etc/httpd/conf.d/app.DOMAIN.conf
Tambahkan script berikut ke dalam file.
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName app.DOMAIN
ServerAlias app.DOMAIN
DocumentRoot /var/www/app.DOMAIN
<Directory /var/www/app.DOMAIN>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
ErrorLog /var/log/httpd/app.DOMAIN_error.log
CustomLog /var/log/httpd/app.DOMAIN_access.log combined
</VirtualHost>
Simpan dan tutup file tersebut.
Konfigurasi di atas membuat virtual host Apache baru yang mendengarkan koneksi masuk pada port HTTP 80 menggunakan domain app.DOMAIN kamu untuk mengirimkan file aplikasi web dari direktori /var/www/app.DOMAIN.
Konfigurasi virtual host PHP-FPM default /etc/httpd/conf.d/php.conf memproses semua permintaan PHP dinamis ke server web Apache.
Buat direktori root web virtual host baru /var/www/app.DOMAIN .
sudo mkdir /var/www/app.DOMAIN
Periksa konfigurasi Apache untuk mencari kesalahan.
sudo apachectl configtest
Output: Syntax OK
Buat file aplikasi PHP baru bernama index.php di direktori /var/www/app.DOMAIN tersebut.
sudo nano /var/www/app.DOMAIN/index.php
Tambahkan script dibawah untuk menguji apache, php, dan mariadb berikut ke dalam file.
<?php
$servername = "localhost";
$username = "geeks";
$password = "g33K5_)";
$dbname = "geeks_db";
// Membuat Koneksi
$conn = new mysqli($servername, $username, $password, $dbname);
// Cek Koneksi
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT message FROM geekss";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo '<h1 style="text-align: center;">'.$row["message"].'</h1>';
}
} else {
echo "0 results";
}
$conn->close();
?>
Simpan dan tutup file tersebut.
Aplikasi PHP di atas terhubung ke server basis data MySQL menggunakan detail user yang kamu berikan untuk memilih dan menampilkan semua catatan di kolom message dalam tabel geekss.
Aktifkan kserver web Apache SELinux pada direktori root web virtual host dan semua file.
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/app.DOMAIN(/.*)?"
Terapkan SELinux.
sudo restorecon -Rv /var/www/app.DOMAIN/
Restart server web Apache untuk menerapkan perubahan.
sudo systemctl restart httpd
Akses domain kamu di jendela peramban web baru.
http://app.DOMAIN
Verifikasi bahwa Apache melayani aplikasi PHP dan menampilkan pesan “Geeks Conn” ketika koneksi basis data berhasil.

Mengamankan Server
Firewalld adalah utilitas manajemen firewall bawaan yang tersedia dan aktif secara default pada server Rocky Linux 9.
Gunakan firewall untuk mengizinkan koneksi jaringan pada port HTTP Apache 80 untuk mengirimkan aplikasi web ke server.
Selain itu, hasilkan sertifikat SSL tepercaya menggunakan otoritas tepercaya seperti Let’s Encrypt untuk mengamankan koneksi ke server web Apache dengan lalu lintas HTTPS.
Jalankan utilitas firewalld.
sudo systemctl start firewalld
Izinkan koneksi jaringan ke port HTTP Apache 80.
sudo firewall-cmd --permanent --add-service=http
Izinkan koneksi jaringan ke port HTTPS Apache 443.
sudo firewall-cmd --permanent --add-service=https
Muat ulang konfigurasi firewall untuk menerapkan perubahan.
sudo firewall-cmd --reload
Lihat semua layanan yang diizinkan melalui konfigurasi firewall.
Generate sertifikat SSL Let’s Encrypt
Instal plugin klien Certbot Let’s Encrypt untuk Apache.
sudo dnf install certbot python3-certbot-apache -y
Buat sertifikat SSL baru untuk domain virtual host. Ganti app.DOMAIN dengan domain yang sebenarnya dan admin@DOMAIN dengan alamat email.
sudo certbot --apache -d app.DOMAIN -m admin@DOMAIN --agree-tos
Uji proses perpanjangan SSL otomatis Certbot.
sudo certbot renew --dry-run
Restart Apache untuk menerapkan perubahan konfigurasi.
sudo systemctl restart httpd
Akses domain app.DOMAIN di jendela peramban web baru menggunakan HTTPS dan verifikasi bahwa Apache menyajikan file aplikasi web.
Kesimpulan
Membangun fondasi web server yang tangguh dengan Install Stack LAMP Rocky Linux 9.
Dengan LAMP Stack yang sudah berjalan, server kini siap untuk menampung berbagai aplikasi web populer seperti WordPress, Laravel, Moodle, dan Website.
Ingatlah untuk selalu memperbarui sistem secara berkala, menerapkan sertifikat SSL untuk koneksi aman, dan melakukan pencadangan rutin agar server tetap optimal dan terlindungi.
