Menginstall Laravel 7 di Ubuntu bisa berhari-hari, tetapi bisa juga hanya beberapa menit. Tergantung dari kemampuan menginstall dan konfigurasinya, belum lagi memasang SSL? Tutorial kali akan dibahas tahap demi tahap cara install Laravel 7 di Ubuntu Focal Fossa, tutorial ini cocok untuk pemula karena dipandu dari awal sampai akhir dengan contoh nyata.

Sebelum memulai install PHP Nginx MariaDB

Agar laravel bisa langsung diakses dari domain pilihan anda, yang perlu dilakukan , Set A (IP VPS) record ke domain pilihan anda contoh laravel.jaranguda.com
a record subdomain

Buat Database dan User Baru

Untuk koneksi ke database, kita akan membuat user dan database baru. Jalankan mysql lalu eksekusi

create database laravel;
GRANT ALL PRIVILEGES ON laravel.* TO "laravel"@"localhost" IDENTIFIED BY "K7XLHMhbvfKbLfprweJd";

Install Composer

Install composer langsung dari repository Ubuntu

apt install composer -y

Install Laravel

Install Laravel dengan composer. Kita akan meletakkan folder Laravel di /var/www/laravel.jaranguda.com agar lebih teratur dan rapi kalo dalam satu server ada banyak aplikasi.

cd /var/www/
composer create-project --prefer-dist laravel/laravel laravel.jaranguda.com

Jalankan composer install

Pindah ke folder /var/www/laravel.jaranguda.com, lalu jalankan composer install

composer install --no-dev

Buka file .env di /var/www/laravel.jaranguda.com, sesuaikan konfigurasi mysql diatas

APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=K7XLHMhbvfKbLfprweJd

Ubah file/folder permission, agar bisa diakses, dan ditulis oleh user nginx, dalam hal ini www-data

chown www-data:www-data -R /var/www/laravel.jaranguda.com

Buat Server Block Nginx

Agar website tersebut bisa diakses dari Nginx, kita harus membuat server block untuk domain tersebut. Buat file /etc/nginx/sites-enabled/laravel.jaranguda.com.conf

server {
    listen       80;
    server_name  laravel.jaranguda.com;
    root   /var/www/laravel.jaranguda.com/public/;
    index index.php index.html;
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ \.php(?:$|/) {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_intercept_errors on;
    }
}

Ingat untuk mengganti laravel.jaranguda.com dengan domain yang anda miliki. Setelah selesai, test dan restart nginx

nginx -t
# bila semuanya oke
systemctl restart nginx

Buka laravel.jaranguda.com, seharusnya sudah muncul halaman default Laravel
install laravel berhasil

Untuk test koneksi database, buka file routes/web.php, tambahkan code berikut ini

Route::get('/tes', function () {
   dd(\DB::connection()->getDatabaseName());
});

buka di browser domain/tes, harusnya tampil laravel, sesuai dengan database yang disetting di .env
laravel test database

Setelah semuanya di coba dan berjalan dengan lancar, saatnya install SSL.

Setting SSL

Untuk SSL kita akan menggunakan SSL gratis dari Lets Encrypt, untuk menginstallnya kita menggunakan bantuan acme.sh.
Download dan install acme.sh dengan

curl https://get.acme.sh | sh

karena acme.sh menambah file shortcut di .bashrc, kita harus me-reload file .bashrc

source ~/.bashrc
# atau
. ~/.bashrc

Karena kita akan menggunakan mode standalone untuk validasi domain, jadi kita perlu mematikan service nginx sebentar. Port 80 tersebut akan digunakan oleh acme.sh

systemctl stop nginx

Request SSL untuk domain laravel.jaranguda.com

acme.sh --issue -d laravel.jaranguda.com --standalone

tunggu 1 menit sampai muncul
ssl generated by server

Sekarang ini dimana-mana http diredirect langsung ke https, maka kita akan mengikuti konsep tersebut disini. Setiap user yang mengunjungi http://laravel.jaranguda.com akan dilempar ke https//laravel.jaranguda.com.
Sertifikat SSL telah diterima, sekarang waktunya menggunakan SSL tersebut di nginx. Ubah /etc/nginx/sites-enabled/laravel.jaranguda.com.conf menjadi

server {
    listen 80;
    server_name laravel.jaranguda.com;
    return 301 https://$server_name$request_uri;
}
 
server {
    listen 443 ssl http2;
    server_name  laravel.jaranguda.com;
    root   /var/www/laravel.jaranguda.com/public/;
    index index.php index.html;
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
 
   ssl_certificate /root/.acme.sh/laravel.jaranguda.com/fullchain.cer;
   ssl_certificate_key /root/.acme.sh/laravel.jaranguda.com/laravel.jaranguda.com.key;
 
    location ~ \.php(?:$|/) {
        try_files $uri =404;   
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_intercept_errors on;
    }
}

Tes dan restart nginx

nginx -t
# bila semuanya oke
systemctl restart nginx

Buka kembali http://laravel.jaranguda.com/tes
redirect http ke https laravel
sudah kelihatan langsung diarahkan ke https

Join the Conversation

2 Comments

Your email address will not be published. Required fields are marked *

  1. bang saya ikutin tutor diatas tapi masih error HTTP ERROR 500

    salah dimana yah kira kira ?
    padahal udah buat block di nginx.

    tolong pencerahannya

    trims