Red Hat Enterprise Linux 10 (RHEL 10) merupakan sistem operasi Linux kelas enterprise (perusahaan yang dikembangkan oleh Red Hat untuk digunakan pada server, cloud, workstation, edge computing, dan AI workloads. RHEL terkenal karena stabilitasnya, keamanan yang tinggi, serta dukungan teknis jangka panjang yang membuatnya menjadi pilihan banyak perusahaan besar.

RHEL 10 merupakan penerus dari RHEL 9 dan membawa banyak peningkatan pada sisi keamanan, otomatisasi, performa, dan integrasi dengan teknologi cloud-native.

Nah di artikel dokumentasi berikut ini saya akan share mengenai panduan Instalasi & Konfigurasi LEMP Stack (Nginx, PHP-FPM dan MariaDB) di Red Hat Enterprise Linux 10 (RHEL). Sebelum memulai instalasi dan konfigurasi, berikut persyaratan sistemnya.

PREREQUISITES:

  • AWS EC2 Instances dengan RHEL 10
  • Hak Akses Root Penuh (sudo privileges)
  • Familiar dengan Command-Line Linux, terutama DNF 5
1. Update System & Install Dependency
dnf update -y
dnf install wget nano zip unzip -y
2. Install Nginx web server
sudo dnf install nginx
3. Aktifkan dan Start Nginx
sudo systemctl enable --now nginx
sudo systemctl start nginx

Verifikasi:

nginx -v
systemctl status nginx
RHEL 10 Nginx Service Status
RHEL 10 Nginx Service Status
4. Install PHP-FPM
sudo dnf install -y \
php \
php-fpm \
php-cli \
php-common \
php-mysqlnd \
php-gd \
php-mbstring \
php-xml \
php-intl \
php-opcache \
php-curl \
php-zip \
php-bcmath

Verifikasi:

php -v
5. Aktifkan PHP-FPM
sudo systemctl enable --now php-fpm

Cek status:

systemctl status php-fpm
6. Konfigurasi PHP-FPM

Edit file pool default:

sudo nano /etc/php-fpm.d/www.conf

Pengaturan penting:

user = nginx
group = nginx

listen = /run/php-fpm/www.sock

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Jika menggunakan Apache, biasanya user dan group adalah apache. Untuk Nginx, gunakan nginx.

Restart PHP-FPM:

sudo systemctl restart php-fpm
7. Konfigurasi Nginx

* Pastikan server block memiliki konfigurasi seperti berikut:

nano /etc/nginx/conf.d/domain.conf
server {
listen 80;
server_name example.com www.example.com;

root /var/www/html;
index index.php index.html;

listen 443 ssl;
#listen [::]:443 ssl;
http2 on;

ssl_certificate "/etc/letsencrypt/live/example.com/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/example.com/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

* Uji konfigurasi:

sudo nginx -t

Reload Nginx:

sudo systemctl reload nginx
8. Uji PHP

* Buat file:

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

* Isikan:

opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=100000
opcache.validate_timestamps=1
opcache.revalidate_freq=2

* Restart PHP-FPM:

sudo systemctl restart php-fpm
RHEL 10 AWS EC2 Instance - fastfetch
RHEL 10 AWS EC2 Instance – fastfetch
10. Install Python Certbot & Let’s Encrypt SSL

* Install dependency

sudo dnf install -y \
python3 \
python3-pip \
gcc \
openssl-devel \
libffi-devel

* Buat virtual environment

sudo mkdir -p /opt/certbot
sudo python3 -m venv /opt/certbot/

* Install Certbot

sudo /opt/certbot/bin/pip install --upgrade pip
sudo /opt/certbot/bin/pip install certbot

* Cek versi:

/opt/certbot/bin/certbot --version

* Buat symbolic link

sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot

Verifikasi:

certbot --version

* Install Let’s Encrypt SSL

certbot certonly \
--webroot \
-w /var/www/html \
-d example.com \
-d www.example.com
11. Auto Renewal SSL

Tes terlebih dahulu:

certbot renew --dry-run

Jika sukses, buat cron:

crontab -e

Tambahkan:

0 3 * * * certbot renew --quiet

* Restart Nginx

systemctl restart nginx
12. Install MariaDB
dnf install mariadb-server

* Enable & Start

systemctl enable --now mariadb
systemctl start mariadb

* Verifikasi Versi & Status Layanan

Biasanya terinstall MariaDB versi 10.11 bawaan resmi Red Hat Enterprise Linux 10, bukan MariaDB Community Server.

mariadb -V
systemctl status mariadb

* Amanakan Instalasi MariaDB

mariadb-secure-installation
14. Buat Database dan User
mariadb -u root -p

CREATE DATABASE databasename;

CREATE USER databaseuser@localhost;

SET PASSWORD FOR databaseuser@localhost= PASSWORD("password");

GRANT ALL PRIVILEGES ON databasename.* TO databaseuser@localhost IDENTIFIED BY "password";

FLUSH PRIVILEGES;

exit
15. Install WordPress
cd /var/www/html
wget https://wordpress.org/latest.zip
unzip latest.zip

* Pindahkan isi folder wordpress ke document root

mv wordpress/* /var/www/html

* Set ownership file dan folder ke user/grup nginx

chown -R nginx:nginx /var/www/html

* Kemudian akses domain website Anda dan setup WordPress di browser:

https://example.com
16. 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 nginx

Struktur LEMP Stack yang direkomendasikan di RHEL 10

RHEL 10
├── Nginx
├── PHP-FPM
├── MariaDB 11.x / MySQL
├── Redis (opsional)
├── firewalld
└── SELinux (mode Enforcing)

Kombinasi ini umum digunakan untuk aplikasi berbasis web seperti WordPress, Laravel, Symfony, dan berbagai aplikasi PHP modern. Disarankan untuk tetap membiarkan SELinux dalam mode Enforcing dan menyesuaikan konteks atau policy jika diperlukan, karena ini memberikan lapisan keamanan tambahan dibanding menonaktifkannya.

LEAVE A REPLY

Please enter your comment!
Please enter your name here