Laravel tidak bisa dipungkiri lagi sebagai framework yang paling banyak digunakan di dunia PHP. Baru-baru ini Laravel merilis versi 8, Larave 8 sendiri akan memiliki Bug Fix sampai 6 April 2021 dan security Fix sampai 8 September 2021.

Beberapa fitur baru di Laravel 8
– Laravel Jetstream
– Model Factory
– Migration squashing
– Job Batching
– Time Testing Helpers

Untuk kebutuhan SSL, setting A record domain/subdomain anda ke A record IP server.

laravel8.jaranguda.com.	3600 IN	A IP-SERVER

Untuk server Laravel 8 mewajibkan sudah terinstall
– PHP >= 7.3
– BCMath PHP
– Ctype PHP
– Fileinfo PHP
– JSON PHP
– Mbstring PHP
– OpenSSL PHP
– PDO PHP
– Tokenizer PHP
– XML PHP

Install PHP 7.4

Laravel 8 mensyaratkan minimal versi PHP 7.3 keatas, untuk itu kita akan menginstall versi 7.4. Untungnya versi ini sudah ada di Ubuntu 20.04, jadi tinggal install dengan package manager apt. Agar proses instalasi lebih cepat kita akan menginstall module PHP yang dibutuhkan oleh Laravel sekaligus.

sudo apt-get install php php-gd php-xmlrpc php-fpm php-curl php-intl php-imagick php-mysql php-zip php-xml php-mbstring php-bcmath php-redis -y

Install composer Depencency Manager

Untuk menginstall laravel kita membutuhkan composer, karena dependency nya akan di install atau update menggunakan composer. Bila di shared hosting biasanya copy semua folder ke root directory web server, di VPS/Server kita tidak perlu karena bisa menginstall dengan composer.

sudo apt install composer -y

Install Redis Server

Untuk kebutuhan cache, kita bisa memanfaatkan Redis yang sudah didukung oleh Laravel secara default.

sudo apt install redis-server -y

Install MariaDB Database Server

Sebagai databasenya install MariaDB

sudo apt install mariadb-server -y

Buat User dan Database untuk Laravel

Ditahap ini kita akan membuat user dan database untuk aplikasi Laravel yang akan kita buat. Sangat direkomendasikan untuk membuat user yang berbeda tiap aplikasi yang dibuat, agar lebih aman. Tahapannya sebagai berikut

1. Login sebagai root mysql

sudo mysql

2. Buat database dengan nama laravel8

create database laravel8;

3. Buat user baru dengan nama laravel8 dan berikan akses penuh ke database laravel8.

GRANT ALL PRIVILEGES ON laravel8.* TO "laravel8"@"localhost" IDENTIFIED BY "zTmLmMayi3hhdeTyELR9";

mysql membuat user dan database baru

Install Nginx Web Server

Nginx bisa dibilang sangat populer beberapa tahun belakangan ini, selain karena kecepatannya, juga karena kemudahan konfigurasinya dibandingkan dengan Apache web server. Sewaktu menginstall PHP 7.4 diatas, Ubuntu otomatis menginstall package apache2 dan menjalankannya. Untuk itu harus matikan service apache dan jalankan nginx.

# matikan service apache
sudo systemctl disable --now apache2
# jalankan service nginx
sudo systemctl enable --now nginx

Server Block Domain

Disini saya akan menggunakan domain laravel8.jaranguda.com, ganti dengan nama domain pilihan anda. Untuk kemudahan pengelolaan, server block dan folder saya memilih menggunakan nama domain yang digunakan.

cat >/etc/nginx/sites-enabled/laravel8.jaranguda.com.conf <<'EOL'
server {
    listen 80;
    server_name laravel8.jaranguda.com;
    root /var/www/html/laravel8.jaranguda.com/public;
    index index.php index.html;
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ \.php(?:$|/) {
        fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
        try_files $fastcgi_script_name =404;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param modHeadersAvailable true;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_intercept_errors on;
    }
}
EOL

Restart konfigurasi nginx

sudo systemctl restart nginx

Install Laravel 8

Sampai disini folder /var/www/html/laravel8.jaranguda.com belum ada, jadi akan kita buat di tahap instalasi Laravel 8.

sudo composer create-project --prefer-dist laravel/laravel:8.* /var/www/html/laravel8.jaranguda.com

Set permission file dan folder agar bisa diakses oleh nginx dan PHP-FPM

sudo chown www-data:www-data -R /var/www/html/laravel8.jaranguda.com

Coba cek di halaman http://namadomain, harusnya sudah tampil halaman default Laravel 8
laravel 8 bisa diakses

Sampai ditahap ini Laravel 8 sudah siap masuk ke production, tinggal di setting dibagian .env

Setting SSL Laravel 8

SSL di zaman sekarang ini bisa dibilang suatu kewajiban, dan merupakan standart untuk semua web server. Menggenerate SSL ini kita akan menggunakan acme.sh, dan menggunakan akun root

1. Login sebagai root user

sudo su -

2. Install acme.sh

apt install socat && curl https://get.acme.sh | sh

Pertama kali setelah menginstall acme.sh, reload konfigurasi .bashrc agar perintah acme.sh dikenali oleh shell.

source ~/.bashrc

3. Generate SSL
Sebelum menggenerate, matikan service nginx, karena kita akan menjalankan http dari socat untuk mempermudah instalasi SSL Lets Encrypt.

# matikan service nginx
systemctl stop nginx
# generate SSL untuk domain
acme.sh --issue -d laravel8.jaranguda.com --standalone
# jalankan service nginx
systemctl start nginx

Update Konfigurasi Nginx dengan SSL

Update konfigurasi nginx untuk menggunakan https dan juga meredirect http ke https secara otomatis

cat >/etc/nginx/sites-enabled/laravel8.jaranguda.com.conf <<'EOL'
server {
    listen 80;
    server_name laravel8.jaranguda.com;
    return 301 https://$host$request_uri;
}
 
server {
    listen 443 ssl http2;
    server_name laravel8.jaranguda.com;
    root /var/www/html/laravel8.jaranguda.com/public;
    index index.php index.html;
    ssl_certificate /root/.acme.sh/laravel8.jaranguda.com/fullchain.cer;
    ssl_certificate_key /root/.acme.sh/laravel8.jaranguda.com/laravel8.jaranguda.com.key;
 
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
 
    location ~ \.php(?:$|/) {
        fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
        try_files $fastcgi_script_name =404;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param modHeadersAvailable true;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_intercept_errors on;
    }
}
EOL

ganti laravel8.jaranguda.com dengan nama domain anda.

Restart nginx

systemctl restart nginx

Buka kembali http://namadomain akan otomatis di arahkan ke https://namadomain
laravel redirect http ke https

Bisa juga menggunakan curl untuk mengecek apakah sudah benar di redirect ke https

curl -I http://NAMADOMAIN

curl check redirect

Leave a comment

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