Framework & Development

Cara Deploy Laravel Terbaru di Ubuntu 24.04 LTS

Cara Deploy Laravel Terbaru di Ubuntu 24.04 LTS
Daftar Isi

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.

bash
apt update && sudo apt upgrade -y

2. Instalasi Nginx

bash
apt install nginx -y

Aktifkan agar berjalan otomatis saat qVM di-reboot, lalu periksa statusnya:

bash
systemctl enable nginx
systemctl status nginx

SCR-20260815-tblx

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.

SCR-20260815-tbvm

3. Instalasi MariaDB Server

MariaDB digunakan sebagai database untuk menyimpan seluruh data aplikasi Laravel.

bash
apt install mariadb-server -y

Aktifkan agar berjalan otomatis saat qVM di-reboot:

bash
systemctl enable mariadb
systemctl status mariadb

SCR-20260815-tcif

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.

bash
mysql_secure_installation

Ikuti prompt yang muncul: atur password root, jawab Y untuk menghapus test database, menghapus akses remote root, dan reload privilege table.

SCR-20260815-tcqk

Selanjutnya, buat database beserta user khusus untuk aplikasi Laravel — bukan menggunakan user root, agar aplikasi tidak memiliki hak akses penuh ke seluruh instance database:

bash
mysql -u root -p
sql
CREATE DATABASE laravel_db;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'PasswordKuatAnda';
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

SCR-20260815-tdcz

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:

bash
apt install software-properties-common ca-certificates apt-transport-https lsb-release -y
add-apt-repository ppa:ondrej/php -y
apt update -y

Instal PHP-FPM 8.4 beserta ekstensi yang dibutuhkan Laravel:

bash
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 -y

Ekstensi 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:

bash
systemctl enable php8.4-fpm
systemctl status php8.4-fpm

SCR-20260815-tdvu

6. Instalasi Composer

Composer digunakan untuk mengelola dependensi PHP pada project Laravel.

bash
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

Verifikasi instalasi:

bash
composer --version

SCR-20260815-teet

7. Deploy Project Laravel

Buat direktori project dan buat project Laravel baru dengan versi terbaru menggunakan Composer:

bash
mkdir -p /var/www
cd /var/www
composer create-project laravel/laravel laravel-app

SCR-20260815-temy

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-project atau composer install yang 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:

bash
chown -R $USER:www-data /var/www/laravel-app

8. Konfigurasi File .env

Salin file environment contoh dan sesuaikan isinya:

bash
cd /var/www/laravel-app
cp .env.example .env
vim .env

Sesuaikan minimal bagian berikut:

text
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=PasswordKuatAnda

Sesuaikan 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:

bash
php artisan key:generate

SCR-20260815-tfxn

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):

bash
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/cache

10. Konfigurasi Nginx untuk Laravel

Document root Laravel mengarah ke folder public, bukan root project, karena hanya folder tersebut yang boleh diakses langsung dari luar.

bash
vim /etc/nginx/sites-available/laravel.sequel.web.id.conf

Isi dengan konfigurasi berikut:

text
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;
}

SCR-20260815-tgfx

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:

bash
ln -s /etc/nginx/sites-available/laravel.sequel.web.id.conf /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

SCR-20260815-tglr

11. Migrasi Database

Jalankan migrasi untuk membuat struktur tabel default Laravel (users, cache, jobs, dan lain-lain) pada database yang sudah dikonfigurasi:

bash
php artisan migrate

Apabila project memiliki data awal (seeder), jalankan juga:

bash
php artisan db:seed

SCR-20260815-tgrp

12. Uji Akses Aplikasi

Tips

Pastikan Anda sudah melakukan pointing subdomain laravel.sequel.web.id ke IP qVM Anda

SCR-20260815-tgxh

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.

SCR-20260815-thqe

Untuk lingkungan production, jalankan optimasi cache agar response time lebih cepat:

bash
php artisan config:cache
php artisan route:cache
php artisan view:cache

Ketiga perintah di atas perlu dijalankan ulang setiap kali ada perubahan pada file konfigurasi, route, atau view.

SCR-20260815-thjt

13. Konfigurasi SSL dengan Let's Encrypt

Instal Certbot beserta plugin Nginx-nya untuk otomatisasi penerbitan dan pemasangan SSL.

bash
apt install certbot python3-certbot-nginx -y

Jalankan Certbot dan arahkan ke domain yang digunakan:

bash
certbot --nginx -d laravel.sequel.web.id

Certbot 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.

SCR-20260815-tidz

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:

bash
certbot renew --dry-run

SCR-20260815-timq

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://.

SCR-20260815-tirx

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.

Bagikan
Apakah artikel ini membantu?