Cara Install Laravel 5.7 dengan Nginx di Ubuntu 18.04

*Laravel* adalah salah satu PHP framework paling populer saat ini di kalangan developer PHP. Beberapa website yang dikembangkan menggunakan Laravel dapat dilihat di *made with Laravel*. Sebelumnya saya sudah pernah menulis tutorial *instalasi Laravel di Ubuntu yang dipasangkan dengan web server Apache*, tutorial kali ini Laravel dipasangkan dengan web server *Nginx*.

-0. Environment yang digunakan-

Environment yang digunakan dalam tutorial ini:

· Subdomain laravel.educahost.tk · Ubuntu VPS 18.04.1 LTS, RAM 1GB · IP Address VPS 207.148.121.103 · Composer 1.6.3 · Laravel 5.7 · Nginx 1.14.0 · PHP 7.2 · MariaDB 10

-1. Install Nginx-

Yang pertama kali disiapkan adalah web server Nginx.

[INPUT]

1 2 3 4 5 sudo apt update sudo apt upgrade -y sudo apt install nginx -y sudo systemctl enable nginx sudo systemctl status nginx

Pengujian hasil instalasi Nginx dengan mengakses IP Address VPS di web browser.

Halaman Default Nginx

-2. Install PHP-

PHP yang dibutuhkan adalah PHP minimal versi 7.1.3, di tutorial ini saya akan menginstalasi PHP 7.2.

PHP beserta module/extension yang dibutuhkan oleh Laravel 5.7:

· PHP >= 7.1.3 · OpenSSL PHP Extension · PDO PHP Extension · Mbstring PHP Extension · Tokenizer PHP Extension · XML PHP Extension · Ctype PHP Extension · JSON PHP Extension · BCMath PHP Extension

Install PHP beserta extension yang dibutuhkan

[INPUT]

1 sudo apt install php7.2 php7.2-curl php7.2-common php7.2-cli php7.2-mysql php7.2-mbstring php7.2-fpm php7.2-xml php7.2-zip php7.2-bcmath -y

Mengecek hasil instalasi PHP dengan menampilkan versi melalui php-cli.

[INPUT]

1 2 3 4 5 6 php -v   PHP 7.2.10-0ubuntu0.18.04.1 (cli) (built: Sep 13 2018 13:45:02) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies     with Zend OPcache v7.2.10-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies

Menampilkan semua PHP extension/module yang telah terinstall.

[INPUT]

1 php -m

Memeriksa atau mencari ketersediaan PHP module.

[INPUT]

1 php -m | grep namamodule

Misalnya mencari bcmath

[INPUT]

1 2 3 php -m | grep bcmath   bcmath

Mencari nama paket PHP module/extension untuk instalasi.

[INPUT]

1 apt-cache search php7.2-

Nginx menggunakan PHP-FPM untuk mengeksekusi script PHP. Lakukan konfigurasi PHP-FPM pada file php.ini.

[INPUT]

1 2 cd /etc/php/7.2/fpm sudo nano php.ini

Cari opsi *cgi.fix_pathinfo*, hilangkan tanda komentar (#) dan beri nilai 0.

[INPUT]

1 cgi.fix_pathinfo=

Restart dan aktifkan service php-fpm.

[INPUT]

1 2 3 sudo systemctl restart php7.2-fpm sudo systemctl enable php7.2-fpm sudo systemctl status php7.2-fpm

Secara default di Ubuntu, PHP-FPM berjalan di Unix socket dengan membuat file .sock, periksa dengan perintah *netstat*. Lokasi file .sock dibutuhkan untuk konfigurasi *Server Block* di Nginx.

[INPUT]

1 2 3 sudo netstat -pl | grep php7.2-fpm   unix  2      [ ACC ]     STREAM     LISTENING     38038    13299/php-fpm: mast  /run/php/php7.2-fpm.sock

-3. Install Composer-

Composer adalah perangkat lunak manajemen paket untuk bahasa pemrograman PHP. Untuk instalasi Laravel beserta script dependensinya membutuhkan composer. Di Ubuntu 18.04, composer sudah tersedia di repository default, jadi dapat langsung diinstall menggunakan perintah apt.

[INPUT]

1 2 sudo apt install composer -y composer -V

-4. Install Laravel-

Sebelum instalasi Laravel, dibutuhkan aplikasi Unzip, install Unzip terlebih dahulu.

[INPUT]

1 sudo apt install unzip -y

Membuat direktori untuk Laravel.

[INPUT]

1 2 3 4 cd /var/www/ sudo mkdir laravel sudo chown $USER:www-data laravel chmod 775 laravel

Instalasi Laravel dengan menggunakan composer.

[INPUT]

1 2 cd /var/www/laravel composer create-project laravel/laravel .

Composer Install Laravel

Ubah hak akses dan kepemilikan file.

[INPUT]

1 2 sudo chmod -R 775 /var/www/laravel sudo chown -R $USER:www-data /var/www/laravel

-5. Konfigurasi Server Block Nginx-

Selanjutnya adalah membuat konfigurasi Nginx agar script PHP dapat dieksekusi oleh Nginx dan Laravel dapat diakses melalui subdomain laravel.educahost.tk.

[INPUT]

1 2 cd /etc/nginx/sites-available sudo nano laravel.educahost.tk.conf

Masukkan konfigurasi Nginx di bawah ini.

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 server {          listen 80;          server_name laravel.educahost.tk;            root /var/www/laravel/public;          index index.php index.html index.htm;          location / {                  try_files $uri $uri/ /index.php?$query_string;          }          location ~ \.php$ {                  try_files $uri =404;                  fastcgi_split_path_info ^(.+\.php)(/.+)$;                  fastcgi_pass unix:/run/php/php7.2-fpm.sock;                  fastcgi_index index.php;                  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;                  include fastcgi_params;          }           location ~ /\.ht {                 deny all;         }                   access_log /var/log/nginx/laravel-access.log;         error_log /var/log/nginx/laravel-error.log; }

Aktifkan konfigurasi Server Block Nginx, periksa apakah ada error di konfigurasi Nginx, lalu restart service Nginx.

[INPUT]

1 2 3 4 sudo ln -s /etc/nginx/sites-available/laravel.educahost.tk.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx sudo systemctl status nginx

Selanjutnya melakukan pengujian dengan mengakses subdomain http://laravel.educahost.tk.

Halaman Default Laravel

-6. Install MariaDB-

Selanjutnya untuk kebutuhan database, install MariaDB server.

[INPUT]

1 2 3 sudo apt install mariadb-server mariadb-client -y sudo systemctl start mysql sudo systemctl status mysql

Konfigurasi instalasi MariaDB, memberikan password pada user root, menghapus anonymous user, dll.

[INPUT]

1 2 3 4 5 6 7 8 sudo mysql_secure_installation   Enter current password for root (enter for none): enter Set root password? [Y/n] Y Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y

Selanjutnya membuat database dan user tersendiri untuk project Laravel.

[INPUT]

1 2 3 4 5 6 7 sudo mysql -u root -p   CREATE DATABASE laravel; CREATE USER ‘user_laravel’@’localhost’ IDENTIFIED BY ‘rahasia’; GRANT ALL PRIVILEGES ON laravel.* TO ‘user_laravel’@’localhost’; FLUSH PRIVILEGES; exit;

Untuk memastikan database sudah dibuat dan dapat diakses oleh user laravel, login ke mysql shell.

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 12 mysql -u user_laravel -p   SHOW DATABASES; +——————–+ | Database           | +——————–+ | information_schema | | laravel            | +——————–+ 2 rows in set (0.00 sec)   exit;

-7. Konfigurasi Koneksi Database di Laravel-

Lakukan konfigurasi koneksi database MariaDB di Laravel dengan mengubah file *.env*.

[INPUT]

1 2 cd /var/www/laravel nano .env

Cari opsi database di bawah ini.

[INPUT]

1 2 3 DB_DATABASE=laravel   DB_USERNAME=user_laravel DB_PASSWORD=rahasia

Ubah konfigurasi *charset* dan *collation* koneksi *mysql* pada file *config/database.php*.

[INPUT]

1 2 3 4 5 6 7 nano config/database.php   ‘mysql’ => [ … ‘charset’ => ‘utf8’, ‘collation’ => ‘utf8_unicode_ci’, …

File config/database.php

-8. Membuat Register dan Login Laravel-

Jalankan *migrate* untuk membuat struktur tabel user dan password_reset di database.

[INPUT]

1 php artisan migrate

Setelah tabel user terbentuk, buat *authentication* dengan perintah make.

[INPUT]

1 php artisan make:auth

Akses ulang halaman Laravel, terdapat menu link baru untuk Login dan Register.

Halaman Laravel dengan menu Register dan Login

Uji coba dengan membuat akun dan login.

Laravel Form Register

Laravel Form Login

Halaman Laravel setelah Login

Selamat mencoba 🙂

Leave a Reply

Your email address will not be published.