Episode ini membangun stack web lengkap di Void: nginx dengan PHP-FPM, serta MariaDB atau PostgreSQL sebagai database. Kalian akan mengaktifkan semua service lewat symlink runit dan mengelola log di /var/log/nginx dengan svlogd.

Tiba saatnya mempraktikkan Void untuk workload nyata: web server dan database. Episode 12 memandu kalian membangun stack nginx + PHP-FPM + database, mengaktifkan semuanya sebagai service runit, dan mengelola log-nya. Ini adalah fondasi dari hampir semua aplikasi web modern.
Stack yang kita bangun adalah pola klasik LEMP (Linux, nginx, MariaDB, PHP). Kalian akan melihat bagaimana tiap komponen hidup sebagai service runit yang independen, dan bagaimana log dikelola lewat svlogd — bukan journald.
Mari mulai dengan web server.
Install nginx dan aktifkan sebagai service runit:
sudo xbps-install -S nginx
sudo ln -s /etc/sv/nginx /var/service/
sudo sv start nginxPerintah ln -s /etc/sv/nginx /var/service/ membuat nginx menyala otomatis saat boot. Cek bahwa service benar-benar berjalan:
sv status nginx
ss -tlnp | grep :80Output ss -tlnp | grep :80 menampilkan nginx mendengarkan di port 80 — tanda server web aktif.
Letakkan konfigurasi site di /etc/nginx/conf.d/. Contoh server block:
server {
listen 80;
server_name example.com;
root /srv/http/example;
index index.html index.php;
}Setelah menulis konfigurasi, uji sintaks lalu reload nginx:
sudo nginx -t
sudo sv reload nginxPerintah nginx -t memvalidasi sintaks sebelum diterapkan. sv reload nginx membuat nginx membaca konfigurasi baru tanpa downtime.
Untuk halaman dinamis, pasang PHP-FPM:
sudo xbps-install -S php php-fpm
sudo ln -s /etc/sv/php-fpm /var/service/
sudo sv start php-fpmPaket php-fpm menyediakan service FastCGI Process Manager. Tambahkan ekstensi yang dibutuhkan aplikasi kalian, misalnya php-pdo_mysql untuk database.
Sambungkan nginx ke PHP-FPM lewat server block:
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
include fastcgi.conf;
}Uji integrasi dengan membuat berkas uji:
echo '<?php phpinfo(); ?>' | sudo tee /srv/http/example/index.phpKemudian buka http://localhost/index.php di browser — kalian akan melihat halaman phpinfo jika PHP-FPM bekerja.
Install dan inisialisasi MariaDB:
sudo xbps-install -S mariadb mariadb-connector-c
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo ln -s /etc/sv/mariadbd /var/service/
sudo sv start mariadbdPerintah mysql_install_db menginisialisasi direktori data untuk pertama kali. Setelah service aktif, amankan instalasi:
sudo mysql_secure_installationSebagai alternatif, PostgreSQL juga tersedia:
sudo xbps-install -S postgresql
sudo -u postgres initdb -D /var/lib/postgresql/data
sudo ln -s /etc/sv/postgresql /var/service/
sudo sv start postgresqlPerintah initdb -D /var/lib/postgresql/data membuat cluster database baru. Setelah service aktif, buat user dan database:
sudo -u postgres psql -c "CREATE USER app WITH PASSWORD 'secret';"
sudo -u postgres createdb -O app appdbLog nginx di Void dikelola oleh svlogd. Struktur direktori log:
/etc/sv/nginx/log/run : skrip pengarah log ke svlogd
/var/log/nginx/current : log aktif yang terus ditulisBaca log secara live:
tail -f /var/log/nginx/currentPerintah tail -f /var/log/nginx/current menampilkan log akses nginx secara real-time. File log lama di-rotate dan di-archive oleh svlogd secara otomatis.
Saat site tidak merespons, urutan diagnosis yang tepat:
sv status nginx php-fpm mariadbd
tail -n 20 /var/log/nginx/current
sudo sv restart nginxPeriksa status semua service, baca log nginx, lalu restart komponen yang bermasalah. Kebiasaan ini menyelesaikan mayoritas masalah stack web.
Episode 12 membangun stack web lengkap di Void: nginx dengan PHP-FPM sebagai frontend dinamis, MariaDB atau PostgreSQL sebagai database, semuanya diaktifkan sebagai service runit, dengan log yang dikelola svlogd di /var/log/nginx.
Inti yang harus dibawa pulang:
/var/service/nginx.nginx -t memvalidasi konfigurasi sebelum reload./var/log/nginx/current.sv status membantu diagnosis stack secara berurutan.Di episode 13 selanjutnya kita akan membahas firewall dengan nftables — menulis ruleset dengan CLI nft, mengaktifkan IP forwarding dan NAT untuk gateway, serta menerapkan firewall yang persisten di Void.