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";
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
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
Bisa juga menggunakan curl untuk mengecek apakah sudah benar di redirect ke https
curl -I http://NAMADOMAIN