Deployment Laravel dengan Nginx >
1. Instalasi Composer, PHP, Nginx, MySQL dan GIT
Untuk tahap pertama kita memerlukan beberapa system requirement seperti PHP, Composer dan juga Nginx, untuk itu kita perlu menginstall requirement tersebut.
# Update dependecies pada sistem operasi
sudo apt update -y && sudo apt upgrade -y
# Install PHP dan beberapa ektensi PHP untuk running laravel
sudo apt install php php-fpm php-cli php-intl php-mbstring php-xml php-bcmath php-curl php-mysql php-zip unzip curl -y
# Install composer di Linux
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
# Install Nginx
sudo apt install nginx -y
# Install MySQL
sudo apt install mysql-server -y
# Install GIT
sudo apt install git -y
Note: untuk PHP biasanya akan saya tambahi versinya dalam menginstall contoh:
sudo apt install php8.3
2. Konfigurasi MySQL (Database)
Selanjutnya kita perlu melakukan konfigurasi database untuk website kita. Karena kita membutuhkan tempat untuk menyimpan data—seperti user, postingan, komentar, dll—maka dalam tutorial ini saya akan menggunakan MySQL sebagai database.
Membuat User MySQL
Pertama membuat user login untuk MySQL agar bisa diakses oleh web kita nantinya
# Masuk ke MySQL
sudo mysql
# Pembuatan nama database
CREATE DATABASE myblog;
# Pembuatan user login MySQL
CREATE USER 'root'@'%' IDENTIFIED BY 'passwordamdin'; # Bebas untuk password
GRANT ALL PRIVILEGES ON myblog.* TO 'root'@'%';
FLUSH PRIVILEGES;
EXIT;
3. Konfigurasi Nginx
Nah, untuk keperluan deploy Laravel pada Nginx ini agak sedikit berbeda dari konfigurasi Nginx yang biasa, karena Nginx memerlukan tambahan script agar PHP bisa dijalankan oleh Nginx, ikuti saja perintah dibawah ini.
# Membuat file konfigurasi untuk Nginx
sudo nano /etc/nginx/conf.d/site.conf
Nah, seperti tutorial sebelumnya nama site.conf ini bebas boleh kalian beri apa namanya yang terpenting ada .conf, nah masukkan saja script dibawah ini.
file: /etc/nginx/conf.d/site.conf
server {
listen 80;
server_name 0.0.0.0;
root /var/www/html/MyBlog/public/;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; # Ganti dengan versi PHP yang digunakan di servermu
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Untuk menghindari akses langsung ke file yang ada di storage atau vendor
location ~* /(?:storage|vendor)/.*\.php$ {
deny all;
}
}
Setelah konfigurasi Nginx selesai, selanjutnya kita perlu menyiapkan web Laravel yang sudah jadi, disini saya sudah membuat web Laravel nya dan saya simpan di github, jadi saya bisa langsung cloning repository dari github ke server saya
# Masuk ke direktori /var/www/html
cd /var/www/html
# Cloning repository
git clone https://github.com/Ngab-Rio/MyBlog.git
Di script konfigurasi tadi kita sudah menambahkan root direktori ke:
/var/www/html/MyBlog/public/
Nah, mungkin ada teman-teman yang bertanya-tanya,
“Kenapa sih harus pakai /public? Bukannya cukup di root folder Laravel aja?”
Analogi sederhananya begini:
Direktori /public dalam Laravel bisa kita anggap sebagai "pintu gerbang utama" menuju ke dalam rumah Laravel.
Jadi, semua orang (user lewat browser) harus masuk lewat pintu depan ini, yaitu file public/index.php.
Setelah kita melakukan proses cloning repository Laravel dari GitHub atau sumber lainnya, langkah selanjutnya adalah menginstall semua dependency yang dibutuhkan oleh Laravel.
Di terminal, jalankan perintah berikut dari dalam folder proyek:
composer install
Perintah ini akan membaca file composer.json yang berisi daftar package/library yang dibutuhkan, lalu menginstall-nya ke dalam folder vendor/
Setelah itu kita coba edit file .env
untuk menyesuaikan dengan server kita.
Jalankan pada shell
nano .env
Ubah bagian berikut sesuai dengan server / service yang sudah kamu konfigurasi kan tadi.
APP_NAME="My Blog"
APP_ENV=production
APP_KEY= # akan kita generate nanti
APP_DEBUG=false
APP_URL=http://0.0.0.0
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=myblog # Nama database yang sudah dibuat tadi
DB_USERNAME=root # Nama user MySQL yang sudah dibuat tadi
DB_PASSWORD=passwordadmin # Password yang sudah kita buat tadi
Setelah itu coba kita migrate agar otomatis membuat tabel pada database yang sudah kita buat tadi jalankan php artisan migrate
pada shell.
Setelah semua langkah yang kalian ikuti di atas selesai—mulai dari instalasi dependency, konfigurasi .env, hingga migrasi database—Laravel kamu sebenarnya sudah siap untuk dijalankan di browser.
Namun, sebelum itu ada beberapa hal tambahan yang perlu kita pastikan agar aplikasi benar-benar berjalan dengan baik di server:
Laravel membutuhkan izin akses untuk menulis file ke folder tertentu, seperti storage/
dan bootstrap/cache
. Jalankan perintah ini.
sudo chown -R www-data:www-data /var/www/html/MyBlog
sudo chmod -R 775 /var/www/html/MyBlog/storage
sudo chmod -R 775 /var/www/html/MyBlog/bootstrap/cache
Setelah semua nya benar-benar kalian ikuti kalian bisa melakukan restart Nginx dan juga PHP agar aplikasi kalian yang sudah kalian konfigurasi tadi berhasil dijalankan oleh server.
sudo systemctl restart nginx
sudo systemctl restart php8.3-fpm # Sesuaikan versi PHP kamu
Setelah itu akses http://localhost