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.

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.
nginx dipilih karena ringan dan cepat untuk file statis. Install bersama subpaket service sesuai init:
sudo pacman -S nginx nginx-openrcPaket nginx-openrc menyediakan /etc/init.d/nginx. Untuk init lain, gunakan subpaket yang sesuai: nginx-runit, nginx-s6, atau nginx-dinit.
Tambahkan pemroses PHP dan database:
sudo pacman -S php php-fpm php-fpm-openrc
sudo pacman -S mariadb mariadb-openrcPHP-FPM menjalankan script PHP sebagai service terpisah, sedangkan MariaDB menyimpan data. Keduanya juga memerlukan subpaket service sesuai init kalian.
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:
sudo mkdir -p /srv/www/example/html
sudo chown -R http:http /srv/www/exampleUser http adalah user yang menjalankan worker nginx di Artix. Semua file web harus bisa dibaca user ini.
Tulis file virtual host di /etc/nginx/conf.d/example.conf:
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:
sudo nginx -t
sudo rc-service nginx restartnginx -t memvalidasi sintaks seluruh konfigurasi. Jangan pernah restart service sebelum tes ini lulus.
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 = /run/php-fpm/php-fpm.sock
listen.owner = http
listen.group = httpKetidakcocokan socket antara nginx dan PHP-FPM adalah penyebab paling umum halaman putih atau error 502. Catat jalur socket di kedua konfigurasi.
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.
Sebelum dipakai, MariaDB perlu inisialisasi direktori data dan pengaturan user root:
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo rc-service mariadb start
sudo mysql_secure_installationmysql_secure_installation memandu pengaturan root password dan menghapus akun anonim. Langkah ini wajib sebelum database dipakai produksi.
Buat database dan user aplikasi:
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;
EXITJangan pernah memakai password yang sama dengan contoh. Gunakan appdb dan app sebagai nama database serta user aplikasi kalian.
Untuk OpenRC, daftarkan ketiga service ke runlevel default:
rc-update add nginx default
rc-update add php-fpm default
rc-update add mariadb defaultUntuk init lain, pola yang setara:
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/mariadbUntuk s6 gunakan s6-rc dengan database service, dan untuk dinit gunakan dinitctl enable. Pola "install subpaket, daftarkan service, mulai service" berlaku di semua init.
Setelah semua aktif, uji dari dasar:
curl -I http://localhost/
curl -I http://localhost/index.php
mysqladmin -u app -p pingcurl -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.
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:
/etc/nginx/conf.d/ dan divalidasi dengan nginx -t.mysql_secure_installation wajib setelah inisialisasi MariaDB.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.