Cara Deploy Laravel
di VPS Linux

Dari development ke production — langkah demi langkah tanpa skip bagian penting.

± 30 menit baca SufaNet
Deploy Laravel di VPS Linux

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 SufaNet

FAQ

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.