Tutorial 23 Aug 2026 1 Kali Dibaca

Cara Deploy Laravel ke VPS Ubuntu Menggunakan Nginx dan PHP-FPM

Gugun Nurdiansyah
Penulis
Cara Deploy Laravel ke VPS Ubuntu Menggunakan Nginx dan PHP-FPM

Persiapan Server

Sebelum melakukan deployment, siapkan:

  1. VPS Ubuntu.

  2. Domain atau subdomain.

  3. Source code Laravel.

  4. Database.

  5. Akses SSH.

  6. Composer.

  7. PHP-FPM.

Arsitektur sederhananya:

Internet
   ↓
Nginx
   ↓
PHP-FPM
   ↓
Laravel
   ↓
Database

1. Update Ubuntu

Login ke VPS melalui SSH:

ssh root@IP_SERVER

Kemudian update:

sudo apt update
sudo apt upgrade -y

2. Install Nginx

Install Nginx:

sudo apt install nginx -y

Periksa status:

sudo systemctl status nginx

Jika aktif, buka alamat IP server melalui browser untuk memastikan Nginx sudah berjalan.

3. Install PHP dan PHP-FPM

Versi PHP harus disesuaikan dengan requirement Laravel yang digunakan.

Contoh:

sudo apt install php8.3-fpm php8.3-cli php8.3-mysql \
php8.3-mbstring php8.3-xml php8.3-curl \
php8.3-zip php8.3-bcmath php8.3-intl -y

Periksa:

php -v

Kemudian:

sudo systemctl status php8.3-fpm

4. Install Composer

Periksa apakah Composer sudah tersedia:

composer --version

Jika belum, install Composer sesuai dokumentasi resmi Composer.

Setelah selesai:

composer --version

Pastikan Composer dapat dijalankan dari terminal.

5. Install Git

Jika source code Laravel berada di repository Git:

sudo apt install git -y

Kemudian:

git --version

6. Membuat Folder Aplikasi

Contohnya:

sudo mkdir -p /var/www/myapp

Kemudian masuk:

cd /var/www/myapp

Clone repository:

git clone https://github.com/username/repository.git .

Sesuaikan URL repository dengan project Anda.

7. Install Dependency Laravel

Masuk ke folder aplikasi:

cd /var/www/myapp

Kemudian:

composer install \
--no-dev \
--optimize-autoloader

Untuk production, dependency development sebaiknya tidak ikut diinstall.

8. Konfigurasi File .env

Buat .env:

cp .env.example .env

Kemudian edit:

nano .env

Contoh:

APP_NAME="My Application"
APP_ENV=production
APP_DEBUG=false
APP_URL=https://example.com

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myapp
DB_USERNAME=myapp_user
DB_PASSWORD=********

Jangan memasukkan file .env ke repository publik.

9. Generate Application Key

Jalankan:

php artisan key:generate

Periksa:

APP_KEY=base64:xxxxxxxx

Pastikan APP_KEY tersedia sebelum aplikasi digunakan.

10. Konfigurasi Database

Jika menggunakan MySQL:

sudo apt install mysql-server -y

Masuk ke MySQL:

sudo mysql

Buat database:

CREATE DATABASE myapp;

Buat user:

CREATE USER 'myapp_user'@'localhost'
IDENTIFIED BY 'password-kuat';

Berikan permission:

GRANT ALL PRIVILEGES
ON myapp.*
TO 'myapp_user'@'localhost';

Kemudian:

FLUSH PRIVILEGES;
EXIT;

Sesuaikan nama database, username, dan password dengan kebutuhan aplikasi.

11. Jalankan Migration

Setelah .env siap:

php artisan migrate --force

--force diperlukan agar migration dapat dijalankan pada environment production tanpa prompt interaktif.

12. Atur Permission Laravel

Laravel membutuhkan akses tulis pada:

storage/
bootstrap/cache/

Jika PHP-FPM menggunakan www-data:

sudo chown -R www-data:www-data \
storage bootstrap/cache

Kemudian:

sudo chmod -R 775 \
storage bootstrap/cache

User PHP-FPM dapat berbeda pada server tertentu, jadi pastikan owner sesuai dengan konfigurasi server.

13. Buat Storage Link

Jika aplikasi menggunakan upload file:

php artisan storage:link

Hasilnya:

public/storage
        ↓
storage/app/public

14. Konfigurasi Nginx

Buat konfigurasi:

sudo nano /etc/nginx/sites-available/myapp

Contoh:

server {
    listen 80;
    listen [::]:80;

    server_name example.com www.example.com;

    root /var/www/myapp/public;

    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;

        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Bagian yang paling penting adalah:

root /var/www/myapp/public;

Laravel harus diarahkan ke folder public, bukan root project.

15. Aktifkan Konfigurasi Nginx

Buat symbolic link:

sudo ln -s \
/etc/nginx/sites-available/myapp \
/etc/nginx/sites-enabled/myapp

Periksa konfigurasi:

sudo nginx -t

Jika berhasil:

syntax is ok
test is successful

Restart Nginx:

sudo systemctl reload nginx

16. Pastikan PHP-FPM Sesuai

Jika menggunakan PHP 8.3:

fastcgi_pass unix:/run/php/php8.3-fpm.sock;

Pastikan socket tersedia:

ls /run/php/

Contohnya:

php8.3-fpm.sock

Jika socket berbeda, sesuaikan konfigurasi Nginx.

17. Aktifkan HTTPS

Setelah domain mengarah ke VPS, HTTPS dapat dikonfigurasi menggunakan Let's Encrypt dan Certbot.

Install:

sudo apt install certbot python3-certbot-nginx -y

Kemudian:

sudo certbot --nginx \
-d example.com \
-d www.example.com

Certbot akan membantu mengatur sertifikat dan konfigurasi HTTPS pada Nginx.

18. Optimasi Laravel untuk Production

Setelah deployment:

php artisan optimize

Atau:

php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache

Pastikan:

APP_ENV=production
APP_DEBUG=false

Jangan menjalankan production dengan:

APP_DEBUG=true

karena dapat menampilkan informasi internal aplikasi.

19. Menjalankan Queue Worker

Jika aplikasi menggunakan Laravel Queue, worker perlu dijalankan.

Contohnya:

php artisan queue:work

Namun, jangan menjalankannya hanya dari terminal SSH karena proses dapat berhenti ketika session ditutup.

Gunakan process manager seperti Supervisor atau systemd.

Contoh menggunakan Supervisor:

sudo apt install supervisor -y

Konfigurasi worker:

/etc/supervisor/conf.d/laravel-worker.conf

Contoh:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/myapp/artisan queue:work
autostart=true
autorestart=true
numprocs=1
user=www-data
redirect_stderr=true
stdout_logfile=/var/www/myapp/storage/logs/worker.log

Kemudian:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*

20. Laravel Scheduler

Jika aplikasi menggunakan Scheduler, tambahkan cron:

* * * * * cd /var/www/myapp && php artisan schedule:run >> /dev/null 2>&1

Laravel kemudian menjalankan task yang sudah dijadwalkan.

Contohnya:

Cron
 ↓
Laravel Scheduler
 ↓
Backup
 ↓
Notification
 ↓
Cleanup

21. Firewall VPS

Aktifkan firewall dengan hati-hati.

Contoh menggunakan UFW:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable

Kemudian:

sudo ufw status

Jangan membuka port database ke internet jika tidak diperlukan.

22. Periksa Log Jika Website Error

Log Laravel:

tail -f storage/logs/laravel.log

Log Nginx:

sudo tail -f /var/log/nginx/error.log

Log PHP-FPM:

sudo journalctl -u php8.3-fpm -f

Ketiga log tersebut sangat membantu ketika aplikasi mengalami error setelah deployment.

23. Masalah yang Sering Terjadi

Error 403 Forbidden

Periksa:

root /var/www/myapp/public;

dan permission folder.

Semua Route 404

Pastikan Nginx memiliki:

try_files $uri $uri/ /index.php?$query_string;

Error 502 Bad Gateway

Biasanya periksa:

PHP-FPM
↓
Socket PHP
↓
Nginx

Pastikan:

sudo systemctl status php8.3-fpm

dan socket sesuai.

Error Permission Denied

Periksa:

storage/
bootstrap/cache/

Error Database

Periksa:

DB_HOST
DB_PORT
DB_DATABASE
DB_USERNAME
DB_PASSWORD

Kemudian:

php artisan migrate:status

24. Alur Deployment Laravel

Secara keseluruhan:

Source Code
    ↓
Git Clone / Pull
    ↓
Composer Install
    ↓
.env Production
    ↓
Application Key
    ↓
Database
    ↓
Migration
    ↓
Permission
    ↓
Storage Link
    ↓
Nginx
    ↓
PHP-FPM
    ↓
HTTPS
    ↓
Laravel Production

Deployment Laravel Bersama Ovla Media

Ovla Media dapat membantu proses deployment dan maintenance aplikasi Laravel pada:

  1. VPS Ubuntu.

  2. Nginx.

  3. PHP-FPM.

  4. MySQL.

  5. PostgreSQL.

  6. Docker.

  7. cPanel.

  8. SSL/HTTPS.

  9. Queue Worker.

  10. Laravel Scheduler.

  11. Backup database.

  12. Monitoring server.

Deployment juga dapat disesuaikan dengan kebutuhan aplikasi bisnis, POS, klinik, inventory, SaaS, dan sistem multi-cabang.

Kesimpulan

Deploy Laravel ke VPS Ubuntu membutuhkan beberapa komponen utama:

Ubuntu
+
Nginx
+
PHP-FPM
+
Composer
+
Database
+
Laravel

Konfigurasi Nginx harus mengarah ke:

/var/www/myapp/public

sedangkan PHP harus diproses melalui PHP-FPM.

Setelah aplikasi berjalan, jangan lupa mengaktifkan HTTPS, mengatur permission, menonaktifkan APP_DEBUG, menjalankan queue worker jika diperlukan, serta mengatur Laravel Scheduler dan backup database.

Dengan konfigurasi yang tepat, VPS Ubuntu dapat menjadi environment production yang stabil untuk menjalankan aplikasi Laravel.

#Laravel #Deploy Laravel #Laravel VPS #Ubuntu Server #Nginx Laravel #PHP-FPM #Laravel Production #Laravel Deployment #VPS Ubuntu #Laravel Server #Nginx Configuration #PHP 8 #Composer Laravel #Laravel cPanel #Laravel Docker #Laravel SSL #HTTPS Laravel #Laravel Queue #Laravel Scheduler #Web Development #Ovla Media #Jasa Laravel
Beranda Produk Artikel
Konsultasi
OVLA

Navigasi Utama

Hubungi Kami

Mulai Konsultasi Sekarang