Cara Deploy Laravel di Server Ubuntu (Nginx, PHP 8.1, Mysql)

Install Nginx

Langkah pertama yang harus dilakukan adalah menginstall Nginx. Nginx adalah web server yang akan digunakan untuk mengakses aplikasi Laravel. Untuk menginstall Nginx, jalankan perintah berikut:

sudo apt update
sudo apt install nginx

Setelah selesai, jalankan perintah berikut untuk memastikan Nginx sudah berjalan:

sudo systemctl status nginx

Aktifkan UFW untuk mengizinkan akses ke Nginx. UFW adalah firewall yang sudah terinstall secara default di Ubuntu. Kamu bisa mengaktifkan UFW dengan menjalankan perintah berikut:

sudo ufw allow 'Nginx HTTP'

Kamu bisa mengecek status UFW dengan menjalankan perintah berikut:

sudo ufw status

Command tersebut akan menampilkan output seperti berikut:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Coba akses Nginx melalui browser dengan mengunjungi alamat IP server kamu. Jika berhasil, kamu akan melihat halaman Nginx seperti berikut:

nginx

Install Mysql

Langkah selanjutnya adalah menginstall Mysql. Mysql adalah database yang akan digunakan untuk menyimpan data aplikasi Laravel. Untuk menginstall Mysql, jalankan perintah berikut:

sudo apt install mysql-server

Setelah proses instalasi selesai, jalankan perintah berikut untuk menjalankan script security, script ini akan mengamankan instalasi Mysql kamu:

sudo mysql_secure_installation

Kamu akan diminta untuk mengisi password root Mysql. Isi password yang kamu inginkan, lalu jawab pertanyaan yang muncul dengan Y atau Yes.

Setelah selesai, kamu bisa menguji koneksi Mysql dengan menjalankan perintah berikut:

sudo mysql

Jika berhasil, kamu akan masuk ke command line Mysql seperti berikut:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)

Keluar dari command line Mysql dengan menjalankan perintah berikut:

exit

Install PHP

Langkah selanjutnya adalah menginstall PHP. PHP adalah bahasa pemrograman yang akan digunakan untuk membuat aplikasi Laravel. Untuk menginstall PHP, jalankan perintah berikut:

Sebelum menginstall PHP, tambahkan repository PHP 8.1 dengan menjalankan perintah berikut:

sudo apt install ca-certificates apt-transport-https software-properties-common
sudo add-apt-repository ppa:ondrej/php

Untuk memastikan repository sudah terinstall, jalankan perintah berikut:

sudo grep -rhE ^deb /etc/apt/sources.list* | grep -i ondrej

Selanjutnya update package list dengan menjalankan perintah berikut:

sudo apt update

Setelah proses update selesai, kamu bisa menginstall PHP dengan menjalankan perintah berikut:

sudo apt install php8.1 php-fpm php-mysql

Setelah proses instalasi selesai, jalankan perintah berikut untuk memastikan PHP sudah berjalan:

php -v

Konfigurasi Nginx

Pertama, buat project laravel baru, atau clone project laravel yang sudah ada. Untuk membuat project baru, jalankan perintah berikut:

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

Tambahkan akses ke folder project dengan menjalankan perintah berikut:

sudo chown -R www-data.www-data /var/www/project_kamu/storage
sudo chown -R www-data.www-data /var/www/project_kamu/bootstrap/cache

Langkah selanjutnya adalah mengkonfigurasi Nginx. Untuk mengkonfigurasi Nginx, buat file baru dengan menjalankan perintah berikut:

sudo vim /etc/nginx/sites-available/project_kamu

Kemudian isi file tersebut dengan konfigurasi berikut:

server {
    listen 80;
    server_name your_domain www.your_domain;
    root /var/www/your_domain;

    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
     }

    location ~ /\.ht {
        deny all;
    }
}

Ganti `your_domain` dengan domain kamu. Jika kamu tidak memiliki domain, kamu bisa menggunakan IP server kamu.

Kemudian atur link simbolik dengan menjalankan perintah berikut:

sudo ln -s /etc/nginx/sites-available/project_kamu /etc/nginx/sites-enabled/

Untuk memastikan tidak ada error pada konfigurasi Nginx, jalankan perintah berikut:

sudo nginx -t

Jika tidak ada error, reload Nginx dengan menjalankan perintah berikut:

sudo systemctl reload nginx