Belajar Artix Linux - Web Server & LEMP Stack
Episode 12 of 23

Belajar Artix Linux - Web Server & LEMP Stack

Membangun LEMP stack di Artix berarti menginstall nginx, PHP-FPM, dan MariaDB atau PostgreSQL dari repo world, lalu mengaktifkannya lewat init pilihan. Episode ini membahas instalasi, konfigurasi virtual host, dan aktivasi service di OpenRC, runit, s6, dan dinit.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Artix bukan hanya untuk desktop; ia juga platform server yang tangguh. Episode 12 membangun LEMP stack — Linux, nginx, MariaDB, PHP — komponen yang menggerakkan mayoritas situs web modern. Kalian akan menginstall komponen dari repo world, mengonfigurasi virtual host, dan mengaktifkan semua service lewat init pilihan.

Karena ini series tentang kontrol penuh, kita tidak akan memakai panel otomatis. Semua konfigurasi ditulis manual, dan setiap service diaktifkan dengan cara yang sesuai init — keterampilan yang langsung bisa dipakai di production.

Install Komponen Stack

nginx sebagai Web Server

nginx dipilih karena ringan dan cepat untuk file statis. Install bersama subpaket service sesuai init:

Install nginx dan service OpenRC
sudo pacman -S nginx nginx-openrc

Paket nginx-openrc menyediakan /etc/init.d/nginx. Untuk init lain, gunakan subpaket yang sesuai: nginx-runit, nginx-s6, atau nginx-dinit.

PHP-FPM dan MariaDB

Tambahkan pemroses PHP dan database:

Install PHP-FPM dan MariaDB
sudo pacman -S php php-fpm php-fpm-openrc
sudo pacman -S mariadb mariadb-openrc

PHP-FPM menjalankan script PHP sebagai service terpisah, sedangkan MariaDB menyimpan data. Keduanya juga memerlukan subpaket service sesuai init kalian.

Konfigurasi nginx

Struktur Direktori

Konfigurasi nginx ada di /etc/nginx/. File utama nginx.conf memuat file dari /etc/nginx/conf.d/, tempat kalian meletakkan virtual host. Buat direktori web dan virtual host pertama:

Buat direktori dan virtual host
sudo mkdir -p /srv/www/example/html
sudo chown -R http:http /srv/www/example

User http adalah user yang menjalankan worker nginx di Artix. Semua file web harus bisa dibaca user ini.

Virtual Host Sederhana

Tulis file virtual host di /etc/nginx/conf.d/example.conf:

Virtual host nginx
server {
    listen 80;
    server_name example.com;
    root /srv/www/example/html;
    index index.html index.php;
 
    location ~ \.php$ {
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }
}

Blok location ~ \.php$ mengarahkan request PHP ke socket PHP-FPM. Setelah menulis file, uji konfigurasi sebelum restart:

Tes dan muat ulang nginx
sudo nginx -t
sudo rc-service nginx restart

nginx -t memvalidasi sintaks seluruh konfigurasi. Jangan pernah restart service sebelum tes ini lulus.

Konfigurasi PHP-FPM

Pool dan Socket

PHP-FPM melayani script PHP lewat pool yang terhubung ke nginx. Pool default ada di /etc/php/php-fpm.d/www.conf. Pastikan listen memakai socket yang sama dengan konfigurasi nginx:

Listen socket di /etc/php/php-fpm.d/www.conf
listen = /run/php-fpm/php-fpm.sock
listen.owner = http
listen.group = http

Ketidakcocokan socket antara nginx dan PHP-FPM adalah penyebab paling umum halaman putih atau error 502. Catat jalur socket di kedua konfigurasi.

Mengaktifkan Ekstensi PHP

Aktifkan ekstensi yang dibutuhkan aplikasi dengan meng-uncomment baris di /etc/php/php.ini atau menyalin file extension dari /etc/php/conf.d/. Setelah mengubah, restart php-fpm.

MariaDB: Setup dan Keamanan Dasar

Inisialisasi Database

Sebelum dipakai, MariaDB perlu inisialisasi direktori data dan pengaturan user root:

Inisialisasi MariaDB
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo rc-service mariadb start
sudo mysql_secure_installation

mysql_secure_installation memandu pengaturan root password dan menghapus akun anonim. Langkah ini wajib sebelum database dipakai produksi.

Membuat Database dan User

Buat database dan user aplikasi:

Buat database dan user
sudo mysql -u root -p
CREATE DATABASE appdb;
CREATE USER 'app'@'localhost' IDENTIFIED BY 'rahasia-kuat';
GRANT ALL PRIVILEGES ON appdb.* TO 'app'@'localhost';
FLUSH PRIVILEGES;
EXIT

Jangan pernah memakai password yang sama dengan contoh. Gunakan appdb dan app sebagai nama database serta user aplikasi kalian.

Aktivasi Service di Semua Init

OpenRC: rc-update

Untuk OpenRC, daftarkan ketiga service ke runlevel default:

Aktifkan stack di OpenRC
rc-update add nginx default
rc-update add php-fpm default
rc-update add mariadb default

runit, s6, dinit

Untuk init lain, pola yang setara:

Aktifkan stack di runit
ln -s /etc/runit/sv/nginx /etc/runit/runsvdir/default/nginx
ln -s /etc/runit/sv/php-fpm /etc/runit/runsvdir/default/php-fpm
ln -s /etc/runit/sv/mariadb /etc/runit/runsvdir/default/mariadb

Untuk s6 gunakan s6-rc dengan database service, dan untuk dinit gunakan dinitctl enable. Pola "install subpaket, daftarkan service, mulai service" berlaku di semua init.

Verifikasi Stack

Uji Semua Lapisan

Setelah semua aktif, uji dari dasar:

Uji web server
curl -I http://localhost/
curl -I http://localhost/index.php
mysqladmin -u app -p ping

curl -I http://localhost/index.php menunjukkan apakah PHP diproses oleh PHP-FPM. Kode respons 200 berarti stack bekerja; 502 atau 404 berarti ada lapisan yang tidak sinkron.

Penutup

Episode 12 membangun LEMP stack penuh di Artix: nginx sebagai web server, PHP-FPM untuk memproses PHP, MariaDB untuk database, semua diaktifkan lewat init pilihan dan terverifikasi dengan uji dari dasar.

Inti yang harus dibawa pulang:

  • Install nginx, php-fpm, mariadb beserta subpaket service sesuai init.
  • Virtual host ditulis di /etc/nginx/conf.d/ dan divalidasi dengan nginx -t.
  • Socket PHP-FPM harus sinkron antara nginx dan pool config.
  • mysql_secure_installation wajib setelah inisialisasi MariaDB.
  • Aktivasi service berbeda per init: rc-update, symlink runsvdir, s6-rc, dinitctl.
  • curl -I menguji setiap lapisan dari atas ke bawah.

Di episode 13 selanjutnya kita akan membahas firewall: nftables dan iptables — aturan dasar, UFW sebagai frontend, fail2ban, dan strategi membatasi port yang terekspos.

Belajar Artix Linux - Web Server & LEMP Stack | Belajar Artix Linux