Belajar Alpine Linux - Web Server & LEMP Stack
Episode 11 of 23

Belajar Alpine Linux - Web Server & LEMP Stack

Episode ini merangkai LEMP stack di Alpine: nginx sebagai web server, PHP-FPM untuk aplikasi PHP, serta MariaDB, PostgreSQL, atau SQLite sebagai basis data. Kalian belajar instalasi via apk, konfigurasi virtual host, dan mengelola semua service memakai OpenRC.

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

Pendahuluan

Salah satu penggunaan Alpine yang paling umum adalah menjalankan aplikasi web. Episode 11 merangkai LEMP stack — Linux, nginx, MySQL/MariaDB, dan PHP — sepenuhnya di Alpine dengan OpenRC sebagai pengelola service.

Dibandingkan distro lain, merangkai LEMP di Alpine terasa ringan dan cepat: semua komponen tersedia di repository main dan community, konfigurasi berbasis teks sederhana, dan footprint totalnya jauh lebih kecil. Kalian akan membangun stack lengkap dari nol sampai aplikasi PHP pertama terlihat di browser.

nginx sebagai Web Server

Instalasi dan Struktur Konfigurasi

Install nginx dan aktifkan:

Install dan aktifkan nginx
apk add nginx
rc-service nginx start
rc-update add nginx default

File konfigurasi utama ada di /etc/nginx/http.d/ dan /etc/nginx/nginx.conf. Buat virtual host pertama:

Virtual host di /etc/nginx/http.d/app.conf
server {
    listen 80;
    server_name app.example.com;
    root /var/www/app;
    index index.php index.html;
 
    location / {
        try_files $uri $uri/ =404;
    }
 
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Cek syntax lalu reload:

Validasi dan muat ulang nginx
nginx -t
rc-service nginx reload

nginx -t memvalidasi seluruh konfigurasi sebelum diterapkan.

PHP-FPM

Menghubungkan PHP ke nginx

Alpine menyediakan beberapa versi PHP: php81, php82, php83, dan php84. Untuk rilis 3.24, gunakan yang terbaru:

Install PHP-FPM dan ekstensi
apk add php84-fpm php84-mysqli php84-opcache
rc-service php-fpm84 start
rc-update add php-fpm84 default

Service FPM mendengarkan di port 9000, sesuai fastcgi_pass 127.0.0.1:9000 pada virtual host di atas. Buat file uji:

File uji PHP
mkdir -p /var/www/app
printf '%s\n' '<?php phpinfo(); ?>' > /var/www/app/index.php
chown -R nginx:nginx /var/www/app

Lalu cek hasilnya:

Uji aplikasi via curl
curl -I http://localhost/
curl -s http://localhost/ | head -5

Output curl -I http://localhost/ menampilkan header HTTP; jika header memuat 200 OK, nginx dan PHP-FPM sudah tersambung.

Database: MariaDB, PostgreSQL, SQLite

Memilih dan Menginstall Database

Pilihan database tergantung kebutuhan aplikasi:

Install pilihan database
apk add mariadb mariadb-client
apk add postgresql16 postgresql16-client
apk add sqlite

Untuk MariaDB, siapkan direktori data lalu aktifkan service:

Setup MariaDB
mysql_install_db --user=mysql --datadir=/var/lib/mysql
rc-service mariadb start
rc-update add mariadb default
mysql_secure_installation

mysql_secure_installation mengunci instalasi awal: set password root, hapus user anonim, dan matikan database test. Untuk PostgreSQL:

Setup PostgreSQL
rc-service postgresql start
rc-update add postgresql default
su postgres -c "psql -c \"CREATE USER app WITH PASSWORD 'rahasia';\""
su postgres -c "psql -c \"CREATE DATABASE appdb OWNER app;\""

Perintah su postgres -c "psql ..." menjalankan psql sebagai user postgres, sesuai konvensi PostgreSQL.

Merangkai LEMP Stack

Urutan Service dan Testing

Urutan boot yang benar memengaruhi keandalan stack. Pastikan database mulai lebih dulu, lalu aplikasi:

Cek urutan service
rc-update show
rc-status

Semua service — mariadb, php-fpm84, dan nginx — harus berada di runlevel default. Uji stack secara menyeluruh:

Uji seluruh stack
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/index.php
mysql -u app -p -e "SELECT 1;"

Output curl -s -o /dev/null -w "%{http_code}\n" menampilkan kode status HTTP, misalnya 200. Kalau 500, periksa error log:

Cek log nginx dan php
tail -20 /var/log/nginx/error.log
tail -20 /var/log/php-fpm.log

Tip

Jangan install beberapa versi PHP sekaligus — konflik port dan service FPM akan membuat kalian bingung. Pilih satu versi dan install ekstensi yang konsisten dengan versinya, seperti php84-* untuk PHP 8.4.

Penutup

Episode 11 merangkai LEMP stack lengkap di Alpine: nginx dengan virtual host, PHP-FPM dengan ekstensi, MariaDB dan PostgreSQL sebagai opsi database, serta pengelolaan semua service dengan OpenRC.

Inti yang harus dibawa pulang:

  • nginx dan PHP-FPM tersedia di repository main Alpine.
  • Virtual host ditulis di /etc/nginx/http.d.
  • fastcgi_pass 127.0.0.1:9000 menghubungkan nginx ke FPM.
  • MariaDB, PostgreSQL, dan SQLite semuanya didukung Alpine.
  • mysql_secure_installation mengunci instalasi MariaDB awal.
  • Urutan service di OpenRC menentukan keandalan stack.

Di episode 12 selanjutnya kita akan membahas kernel dan manajemen kernel — perbedaan linux-lts dan linux-stable, perintah uname untuk verifikasi, pengelolaan modul dengan modprobe dan lsmod, serta parameter boot lewat GRUB dan efibootmgr.

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