Cara Deploy Laravel ke VPS Ubuntu

Hai, Sobat Jagoan! Laravel adalah framework aplikasi web berbasis PHP yang populer karena fitur-fiturnya membantu meningkatkan efisiensi pengembangan. Laravel juga memiliki komunitas yang besar dan aktif sehingga memudahkan siapa pun untuk mendapatkan dukungan dan resource yang dibutuhkan.

Artikel kali ini akan membahas cara deploy Laravel di VPS Ubuntu versi 22.04. Kamu bisa mendapatkan layanan ini melalui laman VPS Terbaik Jagoan Hosting Indonesia yang menyediakan pilihan bandwith dan resource server yang memadai untuk memastikan performa aplikasi Laravel yang optimal.

Prasyarat

  1. Memiliki server VPS Ubuntu aktif yang mendukung stack Laravel seperti Apache atau Nginx, PHP versi terbaru (minimal PHP 8), dan dependensi lainnya.
  2. Menginstal aplikasi SSH seperti PuTTY (untuk pengguna Windows) untuk akses SSH ke VPS
  3. Mengunggah proyek Laravel ke GitHub atau GitLab supaya bisa di-clone langsung ke server

1) Menyiapkan Lingkungan Server

Step 1: Login ke server VPS kamu sebagai user root menggunakan PuTTY. Kalau menggunakan terminal jalankan perintah:

				
					ssh root@IP_SERVER
				
			

Informasi krendensial layanan VPS bisa kamu temukan di halaman detail informasi seperti pada Informasi Awal Layanan VM.

Step 2: Update package repositori manager APT ke versi terbaru menggunakan command berikut:

				
					sudo apt update && sudo apt upgrade
				
			

Apabila muncul jendela package configuration seperti gambar di bawah ini. Kalau tombol Ok belum bewarna merah klik Tab lalu Enter.

1-perbarui-package-vps

Pada gambar di bawah ini disarankan untuk restart agar kernel versi terbaru mulai digunakan. Tanpa restart, kamu tetap pakai kernel lama, dan fitur baru/keamanan dari kernel update belum aktif.

Tapi kali ini lewati dulu restartnya, lanjutkan proses deploy ini sampai tuntas baru setelahnya kamu bisa melakuakn restart.

Jadi, pastikan sudah memilih tombol OK lalu Enter.

2-package-configuration

Untuk melakukan restart server, pastikan tidak ada aktivitas apapun pada server. Kembali ke halaman dashboard VPS, pada bagian Actions klik Stop tunggu beberapa menit klik Start kembali. Lalu login lagi ke VPS seperti biasa dengan PuTTY atau Terminal.

15-stop-start-server-reboot

Bagian ini pastikan tanda (*) berada pada posisi defaultnya > klik Tab (pastikan memilih OK)  lalu Enter.

3-package-configuration-daemon

Untuk pop-up seperti gambar di bawah, klik Tab (pastikan memilih OK) lalu Enter.

4-package-configuration-daemon

Kalau ingin memilih opsi tertenu (tapi disarankan kamu mengikuti instruksi di atas).

Gunakan keyboard:

  • ↑ dan ↓ untuk navigasi
  • Spasi untuk menandai atau menghapus tanda [*]
  • Tab untuk berpindah ke <Ok> atau <Cancel>
  • Enter untuk mengeksekusi

Step 3: Instal web server. Artikel kali ini akan menggunakan Apache.

				
					sudo apt install -y apache2
				
			

Step 4: Selanjutnya, menyiapkan PHP dan ekstensinya. Artikel kali ini menggunakan PHP versi 8.2.

				
					sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

# instal php 8.2 dan ekstensinya
sudo apt install php8.2 php8.2-cli php8.2-common php8.2-mysql php8.2-xml php8.2-mbstring php8.2-curl php8.2-bcmath php8.2-fpm php8.2-intl

# periksa hasilnya
php -v
				
			
5-periksa-versi-php

Step 5: Menginstal MySQL menggunakan command berikut:

				
					sudo apt install -y mysql-server
				
			

Step 6:  Untuk mengelola dependensi Laravel, perlu menginstal composer dengan command:

				
					sudo apt install -y composer
				
			

Step 7: Instal Git untuk meng-clone atau mengambil salinan proyek Laravel dari GitHub atau GitLab ke VPS.

				
					sudo apt install -y git
				
			

2) Menyiapkan Database MySQL

Setelah kamu menginstal MySQL, buat database untuk proyek Laravel dengan langkah-langkah berikut.

Step 1: Login ke MySQL dengan command:

				
					sudo mysql -u root
				
			

Tanda kamu berhasil login akan menampilkan shell mysql>

Step 2: Buat database dan user untuk menghubungkan aplikasi Laravel kamu.

				
					CREATE DATABASE nama_database;
CREATE USER 'nama_user'@'localhost' IDENTIFIED BY 'password_user';
GRANT ALL PRIVILEGES ON nama_database.* TO 'nama_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
				
			
6-buat-database-mysql-di-vps-ubuntu

3) Deploy Aplikasi Laravel

Step 1: Selanjutnya, deploy proyek aplikasi Laravel dari repositori Git dengan menjalankan command di bawah secara berurutan. Jangan lupa ganti URL dengan link repositori Git kamu.

				
					cd /var/www/html
sudo git clone https://github.com/username_kamu/test-laravel.git
				
			
7-clone-proyek-laravel-deploy-vps-ubuntu

Step 2: Setelah itu, buka path direktori proyek kamu dan instal composer.

				
					cd test-laravel
sudo composer install
				
			
8-instal-composer-berhasil

Kalau muncul peringatan seperti ‘Don’t run Composer as root/super user!

Ketik yes lalu Enter. Tujuannya hanya untuk keamanan umum, karena kalau kamu jalankan composer install sebagai root di komputer lokal, bisa berisiko merusak sistem jika ada skrip jahat. Tapi di VPS, biasanya login sebagai root (atau pakai sudo), dan folder Laravel-mu diakses oleh root juga, jadi ini boleh dan aman.

Apabila terminal menampilkan pesan error PHP ekstensi, coba jalankan command update composer. Selain itu, tambahkan opsi -ignore-platform-req=ext-curl untuk melihat apakah masalah sudah berhasil diatasi.

				
					sudo composer update --ignore-platform-req=ext-curl
				
			

4) Konfigurasi File .env

Proses menginstal composer akan menghasilkan tempate file .env.example. File ini menyimpan konfigurasi khusus terkait lingkungan, menentukan berbagai variabel untuk aplikasi kamu seperti informasi database.

Step 1: Untuk menyiapkan file .env pada proyek Laravel kamu, salin template file dengan command:

				
					sudo cp .env.example .env
				
			

Untuk membuka file .env tersebut, menggunakan perintah:

				
					sudo nano .env
				
			

Kemudian, sesuaikan konfigurasi database dan konfigurasi lainnya terikait proyek Laravel kamu.

9-env-setting-cara-deploy-laravel-di-vps-ubuntu

Tekan Ctrl + X, Y dan Enter untuk menyimpan perubahan.

5) Konfigurasi Virtual Host Apache

Step 1: Membuat virtual host untuk proyek Laravel dengan menyiapkan file konfigurasi web server.

				
					sudo nano /etc/apache2/sites-available/laravel.conf
				
			

Step 2: Salin baris kode konfigurasi di bawah ini pada file di dalam file tersebut.

				
					<VirtualHost *:80>
    ServerName domain.com
    ServerAdmin webmaster@domain.com
    DocumentRoot /var/www/html/test-laravel/public

    <Directory /var/www/html/test-laravel/public>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
				
			

Keterangan

  • ServerName : Domain atau IP VPS yang digunakan untuk mengakses aplikasi dari browser
  • ServerAdmin : Alamat email aktif milik kamu atau admin server. Ini akan muncul saat terjadi error di server (meskipun jarang digunakan, tetap sebaiknya diisi)
  • DocumentRoot : Folder yang harus menunjuk ke public/ Laravel, karena di situlah file index.php berada sebagai entry point aplikasi Laravel
  • <Directory …> : Wajib disesuaikan dengan path DocumentRoot.
  • test-laravel : Nama folder ini harus disesuaikan dengan folder hasil clone, jadi harus sesuai dengan nama proyek yang kamu ambil dari GitHub atau GitLab. Contoh https://github.com/username/arsip-persuratan.git maka foldernya jadi /var/www/html/arsip-persuratan
10-konfigurasi-virtual-host-cara-deploy-laravel-vps-ubuntu

FYI! Isi file konfigurasi akan berbeda kalau kamu menggunakan web server lain seperti NGINX.

Pastikan untuk mengganti direktori dengan path yang sesuai dan domain.com dengan alamat IP server kamu atau menggunakan domain yang sudah mengarah ke IP VPS melalui pengaturan DNS.

6) Jalankan Aplikasi

Sebelum menjalankan, ubah pengaturan folder proyek dengan memperbarui hak akses dan kepemilikannya.

				
					sudo chown -R www-data:www-data /var/www/html/test-laravel
sudo chmod -R 755 /var/www/html/test-laravel

sudo chown -R www-data:www-data /var/www/html/test-laravel/storage
sudo chmod -R 755 /var/www/html/test-laravel/storage

sudo chown -R www-data:www-data /var/www/html/test-laravel/bootstrap/cache
sudo chmod -R 775 /var/www/html/test-laravel/bootstrap/cache
				
			

Karena Laravel memerlukan kunci aplikasi, jalankan:

				
					sudo php artisan key:generate
				
			

Perintah ini menghasilkan kunci di APP_KEY pada file .env.

Dan jalankan perintah migrasi database. Pastikan kamu sudah yakin dengan struktur migrasi sudah benar. Database sudah dikosongkan (jika ini pertama kali deploy), atau migrasi sudah diuji di lokal/dev.

				
					sudo php artisan migrate
				
			
11-php-artisan-migrate-cara-deploy-laravel-di-vps-ubuntu

Gunakan tombol panah (↑ atau ↓) untuk memilih Yes, lalu tekan Enter untuk melanjutkan proses migrasi.

Setiap kamu memodifikasi skema database, perbarui file migrasinya supaya konfigurasi untuk aplikasi kamu tetap konsisten dan sinkron.

Menonaktifkan file konfigurasi default virtual host di Apache menggunakan command berikut:

				
					sudo a2dissite 000-default.conf
				
			

Tujuannya untuk menghindari konflik karena Apache bisa mengaktifkan lebih dari satu virtual host. Apache secara default akan mengarahkan permintaan ke 000-default.conf jika tidak menemukan virtual host lain yang cocok. Maka, untuk memastikan permintaan diarahkan ke virtual host Laravel yang sudah dikonfigurasi, konfigurasi default ini sebaiknya dinonaktifkan.

Mengaktifkan virtual host Laravel dan modul rewrite menggunakan:

				
					sudo a2ensite laravel.conf
sudo a2enmod rewrite
				
			

Muat ulang Apache supaya perubahan diterapkan menggunakan perintah systemctl:

				
					sudo systemctl restart apache2
				
			
12-enable-virtual-host-laravel

Setelah proses deployment selesai, kamu coba mengakses http://ip-server atau http://domain.com di web browser untuk memeriksa apakah aplikasi Laravel kamu sudah berfungsi dengan benar.

Troubleshooting

Ketika mengakses website menampilkan halaman index.php bukan tampilan aplikasi Laravel kamu.

14-tampil-file-index-php

Mungkin itu karena modul PHP di Apache belum diaktifkan. Coba jalankan:

				
					sudo a2enmod php8.2
				
			

Kalau outputnya ERROR: Module php8.2 does not exist! artinya modul PHP Apache (libapache2-mod-php8.2) belum terinstal, jadi Apache tidak tahu bagaimana menjalankan file .php. Solusinya perlu menjalankan:

				
					sudo apt install libapache2-mod-php8.2
sudo a2enmod php8.2
sudo systemctl restart apache2
				
			

Itu dia langkah-langkah sistematis untuk mendeploy aplikasi Laravel ke VPS Ubuntu. Jika aplikasi Laravel kamu memiliki file seperti gambar, PDF, atau jenis file lainnya yang perlu diakses melalui browser, kamu perlu membuat symlink (symbolic link) agar file-file tersebut dapat diakses dengan benar melalui URL. Langkah pembuatan symlink ini biasanya dilakukan dengan perintah:

				
					php artisan storage:link
				
			

Perintah itu akan membuat symbolic link dari storage/app/public ke public/storage.

Dan pastikan folder storage sudah dikonfigurasi dengan benar jika menyimpan file publik seperti gambar atau dokumen.

Kalau ada yang bikin bingung, jangan ragu hubungi Tim Support Jagoan Hosting via Live Chat atau Open Ticket, Sob!

Related Posts
Tutorial Upload Aplikasi Laravel ke Hosting Melalui cPanel

Pengantar Hai, Sob! Buat kamu semua para developer yang lagi kepo gimana sih cara Upload Aplikasi Laravel ke Hosting? Nah, Read more

Tutorial Install Laravel di cPanel Jagoan Hosting

Hai Sob! Buat kamu semua para developer yang lagi kepo gimana sih cara Upload Aplikasi Laravel ke Hosting? Nah, tutorial Read more

Cara Install Laravel Dari Clone Git di cPanel

Halo Sob! Bagi developer handal seperti kamu, mendengar istilah laravel dan clone git adalah sesuatu yang familiar bukan? Nah, kali Read more

Cara Membuat Storage Link pada Laravel

Hai Sob! Sebagai seorang developer yang menggunakan laravel, kamu pasti tahu dong bahwa salah satu keuntungan menggunakan framework laravel adalah Read more