
Setup FrankenPHP di Server Ubuntu
Tutorial ini adalah catatan hasil ngulik FrankenPHP classic mode untuk menjalankan aplikasi PHP di server Ubunu 24.04. Asumsinya saya sudah memiliki server Ubuntu 24.04 dan sudah mengarahkan record DNS domain ke IP server.
Tahap 1: Instalasi dan Konfigurasi Dasar
Unduh dan Pasang Binary FrankenPHP: Unduh binary FrankenPHP dan letakkan di lokasi yang bisa dieksekusi, misalnya /usr/local/bin/.
curl https://frankenphp.dev/install.sh | sudo bash sudo mv frankenphp /usr/local/bin/
Buat Direktori Proyek dan Web Root: Buat struktur folder untuk aplikasi produksi.
sudo mkdir -p /var/www/domainanda.com/current/public # Pastikan owner sesuai dengan user service, misal www-data sudo chown -R www-data:www-data /var/www/domainanda.com
Buat File Konfigurasi PHP (php.ini): Untuk optimasi Opcache, buat file php.ini di root proyek.
sudo nano /var/www/domainanda.com/php.ini
Isi dengan konfigurasi Opcache yang optimal untuk produksi:
[opcache] opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.revalidate_freq=300
Buat File Konfigurasi Caddyfile: FrankenPHP menggunakan Caddyfile untuk konfigurasi server. Buat file ini di root proyek.
sudo nano /var/www/domainanda.com/Caddyfile
Isi file dengan konfigurasi domain, web root, dan optimasi performa.
domainanda.com {
root * /var/www/domainanda.com/public
php_server {
# Aktifkan worker mode dengan batasan permintaan untuk mencegah memory leak
# worker_max_requests 5000
}
# Aktifkan kompresi data
encode zstd br gzip
# Opsi logging tambahan
log {
output file /var/log/frankenphp/domainanda.access.log
}
}
Jangan lupa buat direktori log jika belum ada: sudo mkdir -p /var/log/frankenphp
Tahap 2: Menjalankan Aplikasi dengan systemd
Untuk menjalankan aplikasi secara otomatis dan memastikan tetap berjalan, gunakan systemd sebagai layanan.
Buat File Service systemd: Buat file service baru di /etc/systemd/system/.
sudo nano /etc/systemd/system/frankenphp.service
Isi dengan konfigurasi service. Sesuaikan User, Group, dan WorkingDirectory sesuai kebutuhan.
[Unit] Description=FrankenPHP App for domainanda.com After=network.target network-online.target [Service] User=www-data Group=www-data WorkingDirectory=/var/www/domainanda.com ExecStart=/usr/local/bin/frankenphp run --config Caddyfile ExecReload=/usr/local/bin/frankenphp reload --config Caddyfile Restart=always RestartSec=1s [Install] WantedBy=multi-user.target
Aktifkan dan Mulai Service: Muat ulang systemd, aktifkan service, dan jalankan.
sudo systemctl daemon-reload sudo systemctl enable frankenphp.service sudo systemctl start frankenphp.service
Periksa Status Service: Pastikan service berjalan dengan benar.
sudo systemctl status frankenphp.service
Tahap 3: Verifikasi dan Optimasi Lanjutan
Verifikasi Konfigurasi Opcache: Buat file phpinfo() di direktori public (info.php) dan akses melalui browser. Pastikan Loaded Configuration File mengarah ke file php.ini dan opcache.enable bernilai On.
Manajemen File dan Izin Saat Deployment: Karena menggunakan user www-data untuk layanan, pastikan setiap kali deployment dilakukan, izin file dan folder sudah benar. Kita bisa menambahkan perintah chown -R www-data:www-data di akhir skrip deployment.
Tags:
What do you think?
Reactions
