Skip to content

Instantly share code, notes, and snippets.

@alfajrimutawadhi
Last active August 7, 2024 14:46
Show Gist options
  • Save alfajrimutawadhi/5f1d5174ab1d28142c16b159c51b2936 to your computer and use it in GitHub Desktop.
Save alfajrimutawadhi/5f1d5174ab1d28142c16b159c51b2936 to your computer and use it in GitHub Desktop.
Cara deploy Laravel ke server (VPS)

Cara deploy aplikasi Laravel ke server (VPS)


Beberapa hal yang kamu perlukan :

  • project Laravel
  • VPS / Virtual Private Server
  • Domain (jika punya)

Berikut cara deploy aplikasi Laravel kamu ke server

  1. Letakkan project Laravelmu ke source code management (github/gitlab/yang lain)
    Disini saya akan menggunakan repository company-management saya.
    https://github.com/alfajrimutawadhi/company-management repo

  2. Buat personal access token
    Token ini digunakan untuk mengkloning project kalian ke server nanti. Kalian bisa langsung membuat personal access token di https://github.com/settings/tokens/new
    Tulis catatan sesuai keinginan dan centang pada bagian repo saja, lalu langsung klik generate dibagian paling bawah
    Setelah berhasil, copy atau simpan token tersebut untuk dipakai nanti
    token

  3. Setup server
    Kalian dapat masuk ke terminal server menggunakan ssh, untuk menginstall database dan beberapa dependencies yang diperlukan

    • Install database sesuai dengan database Laravel kalian (disini saya menggunakan mysql)

      sudo apt-get install mysql-server
      

      *jangan lupa membuat database setelah melakukan instalasi ini

    • Install PHP-FPM dan beberapa ekstensi PHP

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

      *sesuai dengan versi PHP yang kalian butuhkan

      sudo apt install php8.1-fpm php8.1-common php8.1-mysql php8.1-xml php8.1-ctype php8.1-curl php8.1-gd php8.1-dom php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-soap php8.1-zip php8.1-bcmath php8.1-fileinfo php8.1-pdo php8.1-tokenizer -y
      
    • Install NGINX

      sudo apt install -y nginx
      
    • Install composer

      sudo apt install -y composer
      
  4. Cloning aplikasi Laravel

    • Copy URL repositori kalian url-repo
    • Clone repository kalian kedalam folder /srv
      git clone <URLrepo> /srv/app
      
    • Masukkan username github kalian. Bagian password, isi dengan personal access token yang sudah kita buat sebelumnya (apabila diperlukan)
  5. Resetup aplikasi laravel

    • Masuk ke folder aplikasi kalian dan ubah file .env.example menjadi file .env

      cd /srv/app
      mv .env.example .env
      
    • Atur ulang file .env menggunakan vim

      vim .env
      

      *APP_URL dapat kalian isi dengan IP atau domain
      Screenshot 2023-03-31 at 18 54 57

    • Menambahkan folder vendor, migrasi dan optimasi

      composer update
      composer install --optimize-autoloader --no-dev
      php artisan migrate
      php artisan key:generate
      php artisan config:cache
      php artisan route:cache
      php artisan view:cache
      sudo chmod -R 775 public && sudo chmod -R 777 storage
      
  6. Mengatur configurasi NGINX

    vim /etc/nginx/sites-enabled/default
    
    • Hapus semua isi file dan silahkan paste dengan configurasi dibawah ini :
      server {
          listen 80;
          listen [::]:80;
          server_name domain.com;
          root /srv/app/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 = /favicon.ico { access_log off; log_not_found off; }
          location = /robots.txt  { access_log off; log_not_found off; }
      
          error_page 404 /index.php;
      
          location ~ \.php$ {
              fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
              fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
              include fastcgi_params;
          }
      
          location ~ /\.(?!well-known).* {
              deny all;
          }
      }
    • restart NGINX
      nginx -s reload
      

Aplikasi Laravel kalian sudah bisa diakses 🥳

laravel


Tambahan

Jika kalian punya domain dan kalian ingin aplikasi web kalian dapat diakses menggunakan HTTPS, kalian bisa mengikuti cara dibawah ini :

  1. Masuk ke folder Laravel anda

    cd /srv/app
    
  2. Tambahkan code ini di folder app/Providers/AppServiceProvider.php menggunakan vim

    public function boot()
    {
       if(config('app.env') === 'production') {
          \URL::forceScheme('https');
       }
    }
  3. Rubah file .env Laravel dan resetup config

    vim .env
    

    rubah APP_URL menjadi https://domain.com
    Screenshot 2023-04-01 at 07 54 22
    lalu resetup config

    php artisan config:cache
    
  4. Install certbot

    sudo apt install certbot python3-certbot-nginx
    
  5. Membuat SSL certificate

    certbot --nginx -d domain.com
    

    certbot

  6. Reload NGINX

    nginx -s reload
    

Web Aplikasi Laravel kalian sudah dapat diakses menggunakan HTTPS 🚀

final

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment