Belajar Void Linux - Web Server & Database Stack
Episode 12 of 23

Belajar Void Linux - Web Server & Database Stack

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.

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

Pendahuluan

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.

Memasang dan Mengonfigurasi nginx

Install dan Aktifkan nginx

Install nginx dan aktifkan sebagai service runit:

Pasang dan aktifkan nginx
sudo xbps-install -S nginx
sudo ln -s /etc/sv/nginx /var/service/
sudo sv start nginx

Perintah ln -s /etc/sv/nginx /var/service/ membuat nginx menyala otomatis saat boot. Cek bahwa service benar-benar berjalan:

Cek status dan port nginx
sv status nginx
ss -tlnp | grep :80

Output ss -tlnp | grep :80 menampilkan nginx mendengarkan di port 80 — tanda server web aktif.

Membuat Site Konfigurasi

Letakkan konfigurasi site di /etc/nginx/conf.d/. Contoh server block:

/etc/nginx/conf.d/example.conf
server {
    listen 80;
    server_name example.com;
    root /srv/http/example;
    index index.html index.php;
}

Setelah menulis konfigurasi, uji sintaks lalu reload nginx:

Uji dan reload nginx
sudo nginx -t
sudo sv reload nginx

Perintah nginx -t memvalidasi sintaks sebelum diterapkan. sv reload nginx membuat nginx membaca konfigurasi baru tanpa downtime.

PHP-FPM

Install dan Aktifkan PHP-FPM

Untuk halaman dinamis, pasang PHP-FPM:

Pasang PHP dan FPM
sudo xbps-install -S php php-fpm
sudo ln -s /etc/sv/php-fpm /var/service/
sudo sv start php-fpm

Paket php-fpm menyediakan service FastCGI Process Manager. Tambahkan ekstensi yang dibutuhkan aplikasi kalian, misalnya php-pdo_mysql untuk database.

Menghubungkan nginx ke PHP-FPM

Sambungkan nginx ke PHP-FPM lewat server block:

Location block untuk PHP
location ~ \.php$ {
    fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
    include fastcgi.conf;
}

Uji integrasi dengan membuat berkas uji:

Buat berkas uji PHP
echo '<?php phpinfo(); ?>' | sudo tee /srv/http/example/index.php

Kemudian buka http://localhost/index.php di browser — kalian akan melihat halaman phpinfo jika PHP-FPM bekerja.

Database: MariaDB dan PostgreSQL

MariaDB

Install dan inisialisasi MariaDB:

Pasang 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 mariadbd

Perintah mysql_install_db menginisialisasi direktori data untuk pertama kali. Setelah service aktif, amankan instalasi:

Amankan instalasi MariaDB
sudo mysql_secure_installation

PostgreSQL

Sebagai alternatif, PostgreSQL juga tersedia:

Pasang dan inisialisasi PostgreSQL
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 postgresql

Perintah initdb -D /var/lib/postgresql/data membuat cluster database baru. Setelah service aktif, buat user dan database:

Buat user dan database
sudo -u postgres psql -c "CREATE USER app WITH PASSWORD 'secret';"
sudo -u postgres createdb -O app appdb

Mengelola Log nginx

Log via svlogd

Log nginx di Void dikelola oleh svlogd. Struktur direktori log:

Struktur log nginx
/etc/sv/nginx/log/run   : skrip pengarah log ke svlogd
/var/log/nginx/current  : log aktif yang terus ditulis

Baca log secara live:

Tonton log nginx
tail -f /var/log/nginx/current

Perintah 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.

Menemukan Kesalahan

Saat site tidak merespons, urutan diagnosis yang tepat:

Diagnosis stack web
sv status nginx php-fpm mariadbd
tail -n 20 /var/log/nginx/current
sudo sv restart nginx

Periksa status semua service, baca log nginx, lalu restart komponen yang bermasalah. Kebiasaan ini menyelesaikan mayoritas masalah stack web.

Penutup

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:

  • nginx diaktifkan lewat symlink /var/service/nginx.
  • PHP-FPM terhubung ke nginx via socket Unix.
  • MariaDB dan PostgreSQL diinisialisasi sebelum service aktif.
  • nginx -t memvalidasi konfigurasi sebelum reload.
  • Log nginx dikelola svlogd di /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.

Belajar Void Linux - Web Server & Database Stack | Belajar Void Linux