Install Stack LAMP Rocky Linux 9
Install Stack LAMP Rocky Linux 9

Install Apache, MySQL, PHP (LAMP Stack) di Rocky Linux 9

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.

Halaman Default Apache Rocky Linux
Halaman Default Apache Rocky Linux

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
  1. Press y|Y for Yes, any other key for No: Y [Enter]
  2. Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2 [Enter]
    New password: Masukan_Password
    Re-enter new password: Masukan_Password
  3. Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y [Enter]
  4. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y [Enter]
  5. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y [Enter]
  6. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y [Enter]
  7. 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.

Verifikasi Apache
Verifikasi Apache

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.