Cara Install Laravel Framework dan Nginx di Ubuntu 18.04

Selasa, 05 Januari 2021

Oke di tutorial ini saya akan sharing sedikit mengenai cara instalasi Framework Laravel dan Nginx di server Ubuntu. Untuk tutorial ini yang saya gunakan adalah Ubuntu 18.04, namun seharusnya bisa diikuti di Ubuntu versi lain.

Install Dependensi

Oke pertama kita install PHP dan dependensi lain yang dibutuhkan oleh Laravel terlebih dahulu. Biasakan untuk menggunakan user biasa dengan hak akses sudo ketika ingin melakukan konfigurasi di server.

sudo apt update

sudo apt install -y php-mbstring php-xml php-fpm php-zip php-common php-fpm php-cli unzip curl nginx

Selanjutnya adalah install Composer di Ubuntu dengan perintah

sudo curl -s https://getcomposer.org/installer | php

sudo mv composer.phar /usr/local/bin/composer

Install Laravel

Selanjutnya adalah proses instalasi Laravel Framework. Di tutorial ini kita akan membuat contoh projectnya di direktori /var/www dengan nama project laravel

cd /var/www/

sudo composer global require laravel/installer

sudo composer create-project --prefer-dist laravel/laravel laravel

Saat menjalankan dua perintah diatas kalian mungkin akan mendapatkan warning karena menjalankan composer menggunakan sudo. Namun itu bisa diabaikan terlebih dahulu.

Baru setelah itu kita ubah hak aksesnya ke user yang kita gunakan saat ini.

sudo chmod -R 755 /var/www/laravel

sudo chown -R $(whoami): /var/www/laravel

Langkah selanjutnya adalah instalasi project laravel yang kita buat sebelumnya.

cd laravel

composer install

Selanjutnya, kalian bisa test terlebih dahulu untuk memeriksa apakah projectnya sudah terinstall dengan benar.

php artisan serve --host=0.0.0.0 --port=8080

Cek di port 8080. Jika semuanya sudah berjalan dengan baik, sekarang kalian bisa stop http server phpnya, lalu mulai masuk ke konfigurasi Nginx. 

Konfigurasi Nginx

Untuk mempublish service kalian, tentu kita tidak bisa menggunakan php server seperti perintah diatas. Kita harus menggunakan layanan web server yang lebih stabil dan aman. Dan Nginx adalah salahsatunya.

User yang digunakan oleh Nginx dan juga PHP di Ubuntu secara default adalah www-data. Maka, ubah hak ases user di direktori /var/www/laravel menjadi www-data.

sudo chown -R www-data: /var/www/laravel

Untuk konfigurasi virtualhostnya, kalian bisa ikuti template punya saya, lalu sesuaikan sendiri.

sudo nano /etc/nginx/site-available/laravel.conf

Isinya:

server {
       listen         80;
       server_name    laravel.zafkiel.net;
       return         301 https://$server_name$request_uri;
}

server {
	listen 443 http2 ssl;
	ssl_certificate /etc/letsencrypt/live/laravel.zafkiel.net/fullchain.pem;	
	ssl_certificate_key     /etc/letsencrypt/live/laravel.zafkiel.net/privkey.pem;	
	ssl_protocols TLSv1.2 TLSv1.3;          # TLS 1.3 requires nginx >= 1.13.0	
	ssl_prefer_server_ciphers on;
	ssl_dhparam /etc/ssl/certs/dhparam.pem; # openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
	ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
	ssl_ecdh_curve secp384r1;               # Requires nginx >= 1.1.0
	ssl_session_timeout  10m;
	ssl_session_cache shared:SSL:10m;
	ssl_session_tickets off;                # Requires nginx >= 1.5.9
	ssl_stapling on;                        # Requires nginx >= 1.3.7
	ssl_stapling_verify on;                 # Requires nginx => 1.3.7
	ssl_early_data off;                     # 0-RTT, enable if desired - Requires nginx >= 1.15.4
	resolver 1.1.1.1 valid=300s;            # Replace with your local resolver
	resolver_timeout 5s;

server_name laravel.zafkiel.net;
root /var/www/laravel/public;
access_log /var/log/nginx/laravel-access.log;
index index.php;


	location / {
               try_files $uri $uri/ /index.php?$query_string;
		}
	error_page 404 /404.html;
	error_page 500 502 503 504 /50x.html;
	location = /50x.html {
		root /var/www/html/;
		}

#fastcgi tweak
     location ~ \.php$ {
        include /etc/nginx/snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;   
}

#blokir htaccess milik apache
    location ~ /\.ht {
        deny all;
    }

#lets encrypt
location ~ /.well-known {
                allow all;
        }

}
Untuk pemasangan SSL Let's Encrypt, kalian bisa ikuti tutorial berikut:

Untuk mengaktifkan virtual host kalian, symlink konfigurasinya ke direktori site-enabled.
sudo ln -s /etc/nginx/sites-available/laravel.conf /etc/nginx/sites-enabled/
Cek apakah konfigurasi Nginx nya sudah benar dengan perintah
sudo nginx -t
Jika sudah oke, reload Nginx dengan perintah
sudo service nginx reload
Selesai.


Agar lebih aman, di production kalian juga bisa mengubah beberapa parameter didalam .env nya, contohnya mematikan APP_DEBUG dengan mengubah nilainya menjadi false. Untuk filenya, ada di /var/www/laravel/.env.
Oke, mungkin sekian tutorial singkat kali ini. Semoga bermanfaat. Jika ada yang ingin ditanyakan silahkan tinggalkan komentar.

Artikel Terkait Laravel ,Ubuntu 18.04