Cara Deploy Laravel Terbaru di Ubuntu 24.04 LTS

Daftar Isi
- Pengenalan
- Persyaratan
- Tahapan
- 1. Update dan Upgrade OS Ubuntu 24.04 LTS
- 2. Instalasi Nginx
- 3. Instalasi MariaDB Server
- 4. Amankan Instalasi Database dan Buat Database Laravel
- 5. Instalasi PHP-FPM 8.4 dan Ekstensi yang Dibutuhkan Laravel
- 6. Instalasi Composer
- 7. Deploy Project Laravel
- 8. Konfigurasi File .env
- 9. Set Permission Folder Storage dan Bootstrap/Cache
- 10. Konfigurasi Nginx untuk Laravel
- 11. Migrasi Database
- 12. Uji Akses Aplikasi
- 13. Konfigurasi SSL dengan Let's Encrypt
- Kesimpulan
Laravel adalah framework PHP paling populer saat ini, digunakan untuk membangun aplikasi web berbasis arsitektur MVC. Panduan ini menjelaskan langkah deploy aplikasi Laravel versi terbaru di Ubuntu 24.04 LTS, menggunakan paket qVM-2, dengan stack Nginx, PHP-FPM 8.4, dan MariaDB. Pembahasan mencakup instalasi environment server, konfigurasi Composer, pengaturan file .env, migrasi database, konfigurasi Nginx untuk Laravel, hingga pemasangan SSL gratis menggunakan Let's Encrypt.
Pengenalan
Laravel adalah framework PHP dengan arsitektur MVC (Model-View-Controller) yang banyak digunakan untuk membangun aplikasi web modern, mulai dari sistem internal, API, hingga aplikasi skala enterprise. Versi terbaru Laravel saat ini adalah Laravel 13, yang mensyaratkan PHP 8.3 sebagai versi minimum. Beberapa dependensi inti pada Laravel 13.3 ke atas (Symfony 8) secara praktis membutuhkan PHP 8.4, sehingga panduan ini langsung menggunakan PHP-FPM 8.4 agar kompatibel dengan versi Laravel terbaru maupun pembaruan minor berikutnya.
Stack yang digunakan pada panduan ini adalah Nginx sebagai web server, PHP-FPM sebagai process manager PHP, dan MariaDB sebagai database. Kombinasi ini umum digunakan untuk deployment Laravel karena performanya baik dalam menangani banyak koneksi bersamaan dan mudah dikonfigurasi ulang sesuai kebutuhan aplikasi.
Ubuntu 24.04 LTS dipilih sebagai basis OS karena mendapat dukungan resmi (security update dan bug fix) hingga April 2029, sehingga sesuai digunakan untuk server aplikasi yang membutuhkan masa pakai jangka panjang. Panduan ini ditujukan untuk VPS atau qVM yang baru saja di-deploy (fresh install) dan belum memiliki konfigurasi tambahan apa pun.
Persyaratan
Sebelum memulai deploy, pastikan hal-hal berikut sudah terpenuhi:
Software
- Ubuntu 24.04 LTS, kondisi fresh install (belum ada web server/database lain yang bentrok port)
- Akses root atau user dengan hak sudo
- Koneksi internet untuk mengunduh paket dari repository Ubuntu, dependensi Composer, dan sertifikat SSL
- SSH client pada sisi lokal untuk remote ke qVM
- Project Laravel yang akan di-deploy (project baru maupun repository Git yang sudah ada)
Hardware / Spesifikasi VPS qVM
Panduan ini menggunakan paket qVM-2, dengan spesifikasi:
- vCPU: 1 core
- RAM: 2 GiB
- Storage: 50 GiB
- Domain yang sudah diarahkan (A record) ke IP Publik qVM — digunakan untuk konfigurasi server block dan penerbitan sertifikat SSL
Spesifikasi ini sudah memadai untuk deploy aplikasi Laravel skala kecil hingga menengah. Untuk aplikasi dengan traffic tinggi, banyak proses background (queue worker), atau ukuran dependensi Composer yang besar, disarankan menggunakan paket qVM dengan RAM lebih besar agar proses build dan operasional aplikasi lebih stabil.
Tahapan
1. Update dan Upgrade OS Ubuntu 24.04 LTS
Lakukan update dan upgrade pada sistem operasi Ubuntu 24.04 LTS terlebih dahulu, sebelum memulai instalasi service lainnya.
apt update && sudo apt upgrade -y2. Instalasi Nginx
apt install nginx -yAktifkan agar berjalan otomatis saat qVM di-reboot, lalu periksa statusnya:
systemctl enable nginx
systemctl status nginx
Apabila status menunjukkan active (running), Nginx sudah dapat digunakan. Akses http://<IP-qVM> melalui browser untuk memastikan halaman default "Welcome to nginx!" tampil dengan benar.

3. Instalasi MariaDB Server
MariaDB digunakan sebagai database untuk menyimpan seluruh data aplikasi Laravel.
apt install mariadb-server -yAktifkan agar berjalan otomatis saat qVM di-reboot:
systemctl enable mariadb
systemctl status mariadb
4. Amankan Instalasi Database dan Buat Database Laravel
Jalankan script keamanan bawaan untuk mengatur password root, menghapus user anonymous, dan menonaktifkan remote login untuk root.
mysql_secure_installationIkuti prompt yang muncul: atur password root, jawab Y untuk menghapus test database, menghapus akses remote root, dan reload privilege table.

Selanjutnya, buat database beserta user khusus untuk aplikasi Laravel — bukan menggunakan user root, agar aplikasi tidak memiliki hak akses penuh ke seluruh instance database:
mysql -u root -pCREATE DATABASE laravel_db;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'PasswordKuatAnda';
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Ganti PasswordKuatAnda dengan password yang kuat dan unik. Kredensial ini akan digunakan pada file .env di tahap 8.
5. Instalasi PHP-FPM 8.4 dan Ekstensi yang Dibutuhkan Laravel
Ubuntu 24.04 LTS secara default hanya menyediakan PHP 8.3 pada repository resminya. Tambahkan repository PPA Ondřej Surý agar PHP 8.4 dapat diinstal:
apt install software-properties-common ca-certificates apt-transport-https lsb-release -y
add-apt-repository ppa:ondrej/php -y
apt update -yInstal PHP-FPM 8.4 beserta ekstensi yang dibutuhkan Laravel:
apt install php8.4 php8.4-fpm php8.4-mysql php8.4-cli php8.4-curl php8.4-xml php8.4-mbstring php8.4-zip php8.4-bcmath php8.4-gd php8.4-intl -yEkstensi di atas mencakup kebutuhan inti Laravel: mbstring, xml, curl, dan zip untuk kebutuhan dasar framework dan Composer, bcmath untuk operasi angka presisi tinggi, gd untuk pemrosesan gambar, dan intl untuk lokalisasi/internasionalisasi.
Aktifkan agar PHP-FPM berjalan otomatis saat qVM di-reboot, lalu periksa statusnya:
systemctl enable php8.4-fpm
systemctl status php8.4-fpm
6. Instalasi Composer
Composer digunakan untuk mengelola dependensi PHP pada project Laravel.
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composerVerifikasi instalasi:
composer --version
7. Deploy Project Laravel
Buat direktori project dan buat project Laravel baru dengan versi terbaru menggunakan Composer:
mkdir -p /var/www
cd /var/www
composer create-project laravel/laravel laravel-app
Perintah di atas mengunduh Laravel versi stabil terbaru beserta seluruh dependensinya ke /var/www/laravel-app. Apabila project sudah ada di repository Git, gunakan git clone diikuti composer install di dalam direktori project sebagai gantinya.
Pada qVM dengan RAM terbatas (misalnya qVM-2), proses
composer create-projectataucomposer installyang menarik dependensi besar dapat memakan memori cukup tinggi. Apabila proses gagal karena kehabisan memori, tambahkan swap sementara sebagai penyangga sebelum menjalankan ulang perintah tersebut.
Atur kepemilikan direktori project:
chown -R $USER:www-data /var/www/laravel-app8. Konfigurasi File .env
Salin file environment contoh dan sesuaikan isinya:
cd /var/www/laravel-app
cp .env.example .env
vim .envSesuaikan minimal bagian berikut:
APP_NAME="Nama Aplikasi Anda"
APP_ENV=production
APP_URL=https://laravel.sequel.web.id
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=PasswordKuatAndaSesuaikan DB_DATABASE, DB_USERNAME, dan DB_PASSWORD dengan kredensial yang dibuat pada tahap 4.
Generate application key, digunakan Laravel untuk enkripsi session dan data lain:
php artisan key:generate
9. Set Permission Folder Storage dan Bootstrap/Cache
Folder storage dan bootstrap/cache perlu dapat ditulis oleh web server (PHP-FPM berjalan sebagai user www-data):
chown -R www-data:www-data /var/www/laravel-app/storage /var/www/laravel-app/bootstrap/cache
chmod -R 775 /var/www/laravel-app/storage /var/www/laravel-app/bootstrap/cache10. Konfigurasi Nginx untuk Laravel
Document root Laravel mengarah ke folder public, bukan root project, karena hanya folder tersebut yang boleh diakses langsung dari luar.
vim /etc/nginx/sites-available/laravel.sequel.web.id.confIsi dengan konfigurasi berikut:
server {
listen 80;
listen [::]:80;
server_name laravel.sequel.web.id;
root /var/www/laravel-app/public;
index index.php index.html;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
}
location ~ /\.(?!well-known).* {
deny all;
}
access_log /var/log/nginx/laravel-app_access.log;
error_log /var/log/nginx/laravel-app_error.log;
}
Baris try_files $uri $uri/ /index.php?$query_string; meneruskan seluruh request yang tidak cocok dengan file fisik ke index.php, sesuai kebutuhan routing Laravel.
Aktifkan dengan symlink ke sites-enabled, lalu uji dan reload konfigurasi:
ln -s /etc/nginx/sites-available/laravel.sequel.web.id.conf /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
11. Migrasi Database
Jalankan migrasi untuk membuat struktur tabel default Laravel (users, cache, jobs, dan lain-lain) pada database yang sudah dikonfigurasi:
php artisan migrateApabila project memiliki data awal (seeder), jalankan juga:
php artisan db:seed
12. Uji Akses Aplikasi
Pastikan Anda sudah melakukan pointing subdomain laravel.sequel.web.id ke IP qVM Anda

Akses http://laravel.sequel.web.id melalui browser. Apabila halaman welcome Laravel tampil, berarti seluruh stack (Nginx, PHP-FPM, dan koneksi ke MariaDB) sudah berjalan dengan benar.

Untuk lingkungan production, jalankan optimasi cache agar response time lebih cepat:
php artisan config:cache
php artisan route:cache
php artisan view:cacheKetiga perintah di atas perlu dijalankan ulang setiap kali ada perubahan pada file konfigurasi, route, atau view.

13. Konfigurasi SSL dengan Let's Encrypt
Instal Certbot beserta plugin Nginx-nya untuk otomatisasi penerbitan dan pemasangan SSL.
apt install certbot python3-certbot-nginx -yJalankan Certbot dan arahkan ke domain yang digunakan:
certbot --nginx -d laravel.sequel.web.idCertbot akan meminta email untuk notifikasi perpanjangan, konfirmasi persetujuan term of service, kemudian menawarkan opsi redirect otomatis dari HTTP ke HTTPS — pilih opsi redirect agar seluruh trafik diteruskan melalui HTTPS. Plugin ini secara otomatis mengedit server block yang sudah dibuat pada tahap 10 untuk menambahkan blok listen 443 ssl beserta path sertifikat.

Sertifikat Let's Encrypt berlaku 90 hari dan diperpanjang otomatis melalui systemd timer bawaan Certbot. Periksa terlebih dahulu apakah mekanisme perpanjangan (renewal) berjalan dengan normal:
certbot renew --dry-run
Setelah tahap ini, https://laravel.sequel.web.id sudah dapat diakses dengan koneksi terenkripsi SSL, dan APP_URL pada file .env sebaiknya disesuaikan menjadi https:// apabila sebelumnya masih http://.

Kesimpulan
Sampai tahap ini, VPS qVM-2 (1 core, 2 GiB RAM, 50 GiB storage) sudah menjalankan aplikasi Laravel versi terbaru di atas stack Nginx, PHP-FPM 8.4, dan MariaDB. Project Laravel berhasil di-deploy melalui Composer, database sudah dimigrasikan, dan aplikasi telah diamankan dengan SSL gratis dari Let's Encrypt beserta redirect otomatis ke HTTPS. Konfigurasi ini sudah memadai untuk aplikasi skala kecil hingga menengah dalam lingkungan production; untuk aplikasi yang lebih besar, langkah lanjutan yang disarankan adalah mengatur queue worker dengan Supervisor, menjadwalkan cron untuk Laravel Scheduler, memisahkan konfigurasi cache/session ke Redis, dan menyiapkan proses deployment otomatis (CI/CD) untuk pembaruan aplikasi berikutnya.
