Color Switcher

Check template with your color

Or custom color..

Blog Details

  • Home
  • tutorial-upload-laravel-12-mysql-ke-vps
Blog Image
admin 18 April, 2026 iconTutorial

Tutorial Upload Laravel 12 + MYSQL ke VPS

Panduan Setup VPS Ubuntu — Laravel + Nginx + SSL

Dokumentasi lengkap konfigurasi VPS dari awal hingga deployment Laravel dengan domain dan SSL.

1. Update & Persiapan Sistem

bash
sudo apt update && sudo apt upgrade -y

Jika muncul dialog "Newer kernel available", tekan Enter/OK saja. Itu notifikasi, bukan error.

2. Install PHP 8.2 & Extension Laravel

bash
sudo apt install -y php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-mbstring \
php8.2-xml php8.2-bcmath php8.2-curl php8.2-zip php8.2-tokenizer unzip git

3. Install Composer

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

Verifikasi:

bash
composer --version

4. Install MySQL

bash
sudo apt install mysql-server -y
sudo systemctl start mysql
sudo systemctl enable mysql

Buat database (tanpa password root di Ubuntu):

bash
sudo mysql

sql CREATE DATABASE presensi_db; EXIT;

5. Install Node.js

Catatan: Gunakan flag DEBIAN_FRONTEND=noninteractive untuk menghindari dialog popup yang menyebabkan terminal stuck.
bash
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo DEBIAN_FRONTEND=noninteractive apt install -y nodejs

Verifikasi:

bash
node --version
npm --version

6. Install Nginx

bash
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

7. Koneksi GitHub via SSH (Private Repository)

Generate SSH key:

bash
ssh-keygen -t ed25519 -C "email@kamu.com"

Tekan Enter untuk semua prompt (skip passphrase).

Tampilkan public key:

bash
cat ~/.ssh/id_ed25519.pub

Copy seluruh output → GitHub → Settings → SSH and GPG keys → New SSH key → Paste → Save.

Test koneksi:

bash
ssh -T git@github.com
# Output: Hi username! You've successfully authenticated...

8. Clone Repository

Penting: Jangan gunakan sudo git clone karena SSH key milik user biasa, bukan root.
bash
sudo chown -R $USER:$USER /var/www
cd /var/www
git clone git@github.com:username/nama-repo.git

9. Setup Laravel

bash
cd /var/www/presensi

# Install dependencies
composer install --no-dev --optimize-autoloader
npm install

# Buat file .env
cp .env.example .env
nano .env

Isi bagian database di .env:

text
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=presensi_db
DB_USERNAME=root
DB_PASSWORD=

bash # Generate APP_KEY php artisan key:generate # Jalankan migration & seeder php artisan migrate --seed

10. Permission Storage

bash
sudo chown -R $USER:www-data /var/www/presensi
sudo chmod -R 775 /var/www/presensi/storage
sudo chmod -R 775 /var/www/presensi/bootstrap/cache

Jika muncul error Permission denied saat php artisan config:cache, jalankan ulang dua perintah di atas terlebih dahulu.

11. Konfigurasi Nginx

bash
sudo nano /etc/nginx/sites-available/presensi

Isi dengan:

text
server {
    listen 80;
    server_name smkn1seyegan.my.id www.smkn1seyegan.my.id;
    root /var/www/presensi/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;
    charset utf-8;

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

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

Aktifkan konfigurasi:

bash
sudo ln -s /etc/nginx/sites-available/presensi /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

12. Optimasi Laravel Production

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

13. Setup SSL (Let's Encrypt)

bash
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d smkn1seyegan.my.id -d www.smkn1seyegan.my.id

Ikuti prompt:

  • Masukkan email
  • Ketik Y untuk setuju terms
  • Ketik N untuk share email dengan EFF
  • Pilih 2 (Redirect) untuk auto redirect HTTP → HTTPS

Test auto-renewal:

bash
sudo certbot renew --dry-run

14. Flow Update Code (Local → GitHub → VPS)

Di Local (Laptop):

bash
git add .
git commit -m "deskripsi perubahan"
git push origin main

Di Server (VPS):

bash
cd /var/www/presensi
git pull origin main
php artisan config:cache
php artisan route:cache
php artisan view:cache

Shortcut Deploy (semua dalam satu baris):

bash
cd /var/www/presensi && git pull origin main && composer install --no-dev --optimize-autoloader && php artisan migrate --force && php artisan config:cache && php artisan route:cache && php artisan view:cache

Buat alias deploy:

bash
echo "alias deploy='cd /var/www/presensi && git pull origin main && php artisan config:cache && php artisan route:cache && php artisan view:cache'" >> ~/.bashrc
source ~/.bashrc

Selanjutnya cukup ketik deploy di terminal.

Ringkasan Perintah Penting

PerintahFungsisudo systemctl reload nginx | Reload konfigurasi Nginx
sudo systemctl restart php8.2-fpm | Restart PHP-FPM
sudo systemctl status mysql | Cek status MySQL
php artisan migrate | Jalankan migration baru
php artisan config:cache | Cache konfigurasi Laravel
sudo certbot renew | Renew SSL manual

Checklist Akhir

  •  Ubuntu VPS updated
  •  PHP 8.2 + extension terinstall
  •  Composer terinstall
  •  MySQL + database presensi_db dibuat
  •  Node.js + NPM terinstall
  •  Nginx terinstall & dikonfigurasi
  •  SSH key terdaftar di GitHub
  •  Repository berhasil di-clone
  •  Laravel dependencies terinstall
  •  File .env dikonfigurasi
  •  Migration & seeder berhasil
  •  Permission storage diperbaiki
  •  SSL Let's Encrypt aktif & auto-renew


Last Update: 18 April, 2026