Pendahuluan
Laravel adalah PHP framework paling populer di Indonesia dan Asia Tenggara. Tapi banyak developer bingung ketika harus memindahkan app dari localhost ke VPS sungguhan.
Artikel ini membahas seluruh proses — dari server kosong hingga Laravel berjalan dengan SSL, queue worker aktif, dan cronjob berfungsi.
Persiapan VPS
Spesifikasi minimal untuk Laravel production:
- 2 vCPU, 2 GB RAM (4 GB ideal untuk traffic sedang)
- Ubuntu 22.04 LTS (disarankan)
- SSD minimal 20 GB
Update sistem dan install dependency dasar:
sudo apt update && sudo apt upgrade -y
sudo apt install git curl unzip zip -y
Install PHP 8.3, Nginx, dan Composer
# Tambahkan repository PHP terbaru
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
# Install PHP 8.3 dengan ekstensi Laravel
sudo apt install php8.3-fpm php8.3-cli php8.3-mysql php8.3-pgsql \
php8.3-mbstring php8.3-xml php8.3-bcmath php8.3-curl \
php8.3-zip php8.3-redis php8.3-gd php8.3-intl -y
# Install Nginx
sudo apt install nginx -y
# Install Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer --version
Upload Aplikasi Laravel ke VPS
Cara paling rapi menggunakan Git:
cd /var/www
sudo git clone https://github.com/username/repo-laravel.git myapp
sudo chown -R www-data:www-data /var/www/myapp
cd /var/www/myapp
# Install dependencies
composer install --optimize-autoloader --no-dev
Konfigurasi .env dan Storage
cp .env.example .env
nano .env # isi APP_KEY, DB_*, MAIL_*, dll
# Generate app key
php artisan key:generate
# Setup storage & cache
php artisan storage:link
php artisan config:cache
php artisan route:cache
php artisan view:cache
# Permission storage
sudo chmod -R 775 storage bootstrap/cache
sudo chown -R www-data:www-data storage bootstrap/cache
Konfigurasi Nginx Virtual Host
sudo nano /etc/nginx/sites-available/myapp
server {
listen 80;
server_name domain-kamu.com www.domain-kamu.com;
root /var/www/myapp/public;
index index.php index.html;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Setup Queue Worker dan Laravel Scheduler
Buat systemd service untuk queue worker:
sudo nano /etc/systemd/system/laravel-worker.service
[Unit]
Description=Laravel Queue Worker
[Service]
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/php artisan queue:work --sleep=3 --tries=3
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl enable laravel-worker
sudo systemctl start laravel-worker
Tambahkan Laravel Scheduler ke cron:
sudo crontab -u www-data -e
# Tambahkan:
* * * * * cd /var/www/myapp && php artisan schedule:run >> /dev/null 2>&1
Install SSL dengan Certbot
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d domain-kamu.com -d www.domain-kamu.com
Kenapa VPS SufaNet Cocok untuk Laravel?
- Resource konsisten untuk PHP-FPM dan queue worker
- SSD cepat untuk akses file dan session
- Lokasi Singapore — latency rendah untuk user Indonesia
- Harga terjangkau mulai dari ratusan ribu per bulan
Laravel production butuh VPS yang stabil
Shared hosting tidak cukup untuk Laravel yang butuh queue worker dan cron berjalan terus.
🚀 Lihat VPS Singapore SufaNetFAQ
Berapa RAM minimal untuk Laravel?
Minimal 1 GB untuk development, 2 GB untuk production. Jika menggunakan Redis dan queue worker aktif, 4 GB lebih nyaman.
Pakai MySQL atau PostgreSQL untuk Laravel?
Keduanya didukung penuh. MySQL lebih familiar, PostgreSQL lebih powerful untuk query kompleks. Pilih sesuai kebutuhan.
Bagaimana cara update aplikasi setelah deploy?
Jalankan: git pull, composer install, php artisan migrate, php artisan config:cache, lalu restart queue worker.
Kesimpulan
Deploy Laravel di VPS membutuhkan lebih banyak langkah daripada di shared hosting. Tapi hasilnya jauh lebih baik: control penuh, performa lebih kencang, dan tidak ada limitasi.
Lakukan sekali dengan benar, setup CI/CD untuk deploy otomatis selanjutnya.