Deploy AI Agent PHP ke VPS Ubuntu dari nol: setup Nginx sebagai web server, konfigurasi SSL dengan Certbot, domain, Supervisor untuk proses daemon, dan Cron job.
Daftar Isi
- Definisi: Bagaimana Standar Deployment AI Agent PHP di VPS Produksi?
- TL;DR (Ringkasan Cepat)
- Persiapan VPS Ubuntu untuk AI Agent PHP
- Konfigurasi Nginx dan Optimasi Timeout AI Agent
- Pasang Sertifikat SSL Gratis dengan Certbot Let's Encrypt
- Deploy Aplikasi AI Agent PHP
- Setup Supervisor untuk Background Queue Worker
- Troubleshooting Error Deploy AI Agent PHP
- FAQ: Tanya Jawab Teknis Deployment AI Agent PHP
- 1. Bagaimana cara mengatasi request AI Agent yang terputus karena timeout panjang?
- 2. Mengapa daemon Supervisor ai-agent-worker sering restart sendiri?
- 3. Bagaimana cara mengamankan file .env agar tidak bisa didownload lewat browser?
Terakhir diperbarui:
Definisi: Bagaimana Standar Deployment AI Agent PHP di VPS Produksi?
Direct Answer:Deploy AI Agent PHP ke VPS Ubuntu adalah proses penerbitan aplikasi agen cerdas ke server Linux mandiri dengan mengonfigurasi Nginx sebagai reverse proxy ber-SSL Certbot (dilengkapi fastcgi_read_timeout 120s), PHP 8.3-FPM sebagai runtime interpreter, dan Supervisor sebagai manajer proses daemon (worker queue) untuk mengeksekusi pipeline LLM secara non-blocking tanpa terputus.Menjalankan AI Agent di server produksi membutuhkan penyesuaian batas timeout soket dan isolasi permission file .env agar tidak memicu HTTP 504 Gateway Timeout saat pemanggilan model LLM memerlukan waktu inferensi lebih dari 30 detik.
TL;DR (Ringkasan Cepat)
- Spesifikasi Minimum: VPS Ubuntu 22.04 / 24.04 LTS dengan minimal 1 vCPU dan 2GB RAM untuk PHP 8.3 & Supervisor.
- Konfigurasi Timeout Nginx: Wajib menyetel
fastcgi_read_timeout 120;danproxy_read_timeout 120;untuk menangani latensi respons model AI. - Daemon Worker Supervisor: Kelola background job runner dengan
numprocs=2danautorestart=true. - Keamanan Direktori: Blokir file sensitif (
.env,.git) di blok virtual host Nginx dan set izin folderlogs/kewww-data.

Persiapan VPS Ubuntu untuk AI Agent PHP
Direct Answer:Persiapan server diawali dengan menginstal runtime PHP 8.3-FPM beserta ekstensi wajib (curl,mbstring,mysql,zip), database MySQL, Nginx web server, dan Composer package manager.
Eksekusi perintah terminal berikut di VPS Ubuntu Anda menggunakan user dengan hak akses sudo:
# 1. Update package repository & system upgrade
sudo apt update && sudo apt upgrade -y
# 2. Tambahkan repository PPA PHP resmi Ondrej
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
# 3. Instal PHP 8.3 FPM, CLI, dan ekstensi yang dibutuhkan AI Agent
sudo apt install php8.3-fpm php8.3-cli php8.3-curl php8.3-mbstring \
php8.3-json php8.3-mysql php8.3-xml php8.3-zip php8.3-redis php8.3-bcmath -y
# 4. Instal Nginx Web Server dan MySQL Server
sudo apt install nginx mysql-server -y
# 5. Instal Composer secara global
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer --versionKonfigurasi Nginx dan Optimasi Timeout AI Agent
Direct Answer:Konfigurasi Nginx untuk AI Agent mewajibkan direktiffastcgi_read_timeout 120;dan proteksi akseslocation ~ /\. { deny all; }guna mengamankan file.envdari akses peretas publik.
Buat file konfigurasi server block pada /etc/nginx/sites-available/ai-agent:
# /etc/nginx/sites-available/ai-agent
server {
listen 80;
server_name ai-agent.domainanda.com;
root /var/www/ai-agent/public;
index index.php index.html;
# Security Headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# Routing URL Friendly
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# PHP-FPM FastCGI Handler dengan Penambahan Timeout Inferensi AI
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
# Timeout ditingkatkan ke 120s agar eksekusi multi-tools agent tidak 504 Gateway Timeout
fastcgi_read_timeout 120;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 120;
}
# Blokir akses ke file rahasia .env, .git, .htaccess
location ~ /\.(?!well-known).* {
deny all;
access_log off;
log_not_found off;
}
}# Uji sintaks Nginx dan aktifkan virtual host
sudo ln -s /etc/nginx/sites-available/ai-agent /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxPasang Sertifikat SSL Gratis dengan Certbot Let's Encrypt
Amankan jalur transmisi kunci API dan data pengguna dengan enkripsi HTTPS TLS 1.3:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d ai-agent.domainanda.com --non-interactive --agree-tos -m admin@domainanda.com
# Uji auto-renewal sertifikat SSL
sudo certbot renew --dry-runDeploy Aplikasi AI Agent PHP
Direct Answer:Deployment aplikasi mencakup cloning repositori Git, instalasi dependensi produksi viacomposer install --no-dev --optimize-autoloader, konfigurasi environment variable.env, dan pengaturan izin kepemilikan user web serverchown -R www-data:www-data.
Lakukan cloning kode sumber dan setup direktori produksi:
cd /var/www
# Clone repositori aplikasi AI Agent Anda
git clone https://github.com/username/php-ai-agent.git ai-agent
cd /var/www/ai-agent
# Instal dependensi PHP tanpa paket development
composer install --no-dev --optimize-autoloader
# Atur perizinan kepemilikan file web server
sudo chown -R www-data:www-data /var/www/ai-agent
sudo chmod -R 755 /var/www/ai-agent
sudo chmod -R 775 /var/www/ai-agent/logs /var/www/ai-agent/storage
# Salin konfigurasi environment production
cp .env.example .env
nano .env # Masukkan OPENAI_API_KEY, JWT_SECRET, dan kredensial Database MySQL productionSetup Supervisor untuk Background Queue Worker
Direct Answer:Supervisor bertindak sebagai daemon manager yang menjaga proses eksekusi worker worker.php berjalan terus-menerus di latar belakang (*always-on*) dan secara otomatis me-restart proses jika terjadi crash akibat kehabisan memori atau error jaringan.Instal Supervisor dan buat file konfigurasi program worker:
# /etc/supervisor/conf.d/ai-agent-worker.conf
[program:ai-agent-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/ai-agent/worker.php
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/ai-agent/logs/worker.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5# Muat ulang konfigurasi dan jalankan worker daemon
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start ai-agent-worker:*
sudo supervisorctl statusTroubleshooting Error Deploy AI Agent PHP
Direct Answer:Kendala umum pada deployment AI Agent mencakup HTTP 504 Gateway Timeout (akibat fastcgi timeout terlalu rendah), Supervisor Worker Crash / FATAL Exit (karena memory leak atau exception unhandled), dan HTTP 500 Permission Denied pada direktori log.
Tabel komparasi di bawah ini merangkum diagnosis gejala error dan solusi perbaikan teknis di level server:
| Gejala Error | Penyebab Utama | Solusi Perbaikan Server | Lokasi Log Diagnosis |
|---|---|---|---|
| 504 Gateway Timeout | Inferensi model LLM atau chained tools melebihi batas default 60s Nginx. | Naikkan fastcgi_read_timeout 120s di Nginx dan max_execution_time = 120 di php.ini. | /var/log/nginx/error.log |
| Worker FATAL / Crash | Proses worker kehabisan RAM atau terjadi Uncaught Exception tanpa try-catch. | Tambahkan memory_limit = 256M, tangani Throwable, dan set autorestart=true pada Supervisor. | /var/www/ai-agent/logs/worker.log |
| HTTP 500 Internal Error | User www-data tidak memiliki hak tulis pada direktori logs atau session storage. | Jalankan sudo chown -R www-data:www-data /var/www/ai-agent/logs dan chmod 775. | /var/log/php8.3-fpm.log |
| cURL Error 28 Timeout | Koneksi keluar (outbound) ke OpenAI/Anthropic terblokir firewall UFW atau DNS. | Buka port outbound 443 pada UFW (sudo ufw allow out 443/tcp) dan cek nameserver 8.8.8.8. | storage/logs/agent.log |
FAQ: Tanya Jawab Teknis Deployment AI Agent PHP
1. Bagaimana cara mengatasi request AI Agent yang terputus karena timeout panjang?
Ringkasan Jawaban:Tingkatkan nilaifastcgi_read_timeout 120;danproxy_read_timeout 120;pada blok Nginx, serta ubahmax_execution_time = 120pada konfigurasi/etc/php/8.3/fpm/php.ini.
Untuk tugas agen yang memerlukan waktu lebih dari 2 menit, pindahkan eksekusi ke background queue berbasis Redis dan Supervisor dengan polling status endpoint.
2. Mengapa daemon Supervisor ai-agent-worker sering restart sendiri?
Ringkasan Jawaban:Penyebab paling umum adalah terjadinya memory leak dalam loop pemrosesan panjang atau exception yang tidak tertangkap (uncaught exception) saat koneksi API LLM terputus.
Bungkus loop utama worker dalam blok try-catch (Throwable $e) dan panggil gc_collect_cycles() secara periodik untuk membebaskan alokasi memori RAM.
3. Bagaimana cara mengamankan file .env agar tidak bisa didownload lewat browser?
Ringkasan Jawaban:Pastikan direktori root Nginx menunjuk ke folder/var/www/ai-agent/public(bukan root folder proyek) dan tambahkan direktiflocation ~ /\.(?!well-known).* { deny all; }pada konfigurasi Nginx.
Dengan pemisahan folder public, file .env berada satu tingkat di atas dokumen web root sehingga secara fisik mustahil diakses via URL browser.
- Timeout Alignment: Sinkronisasi batas waktu FastCGI Nginx dan PHP-FPM ke 120 detik untuk mencegah 504 Gateway Timeout.
- Background Worker Resiliency: Pengelolaan daemon proses worker menggunakan Supervisor dengan opsi
autorestart=truedan log rotation. - Zero-Leak Environment Security: Isolasi direktori public web root dan pemblokiran akses file dotfile (
.env) di level web server. - SSL & Security Headers: Enkripsi otomatis HTTPS via Certbot Let's Encrypt dengan perlindungan header HSTS dan X-Frame-Options.
Rusmawan Abdullah Sani
Lead Software Engineer & System Architect
Praktisi pengembangan backend PHP modern, arsitektur AI Agent, microservices, dan otomasi server Linux. Terhubung melalui profil LinkedIn.