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
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
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
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
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
sudah kelihatan langsung diarahkan ke https
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
Sepertinya config nginx nya salah