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.
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.
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
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.
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.
1 | php -m |
Memeriksa atau mencari ketersediaan PHP module.
1 | php -m | grep namamodule |
Misalnya mencari bcmath
1 2 3 | php -m | grep bcmath bcmath |
Mencari nama paket PHP module/extension untuk instalasi.
1 | apt-cache search php7.2- |
Nginx menggunakan PHP-FPM untuk mengeksekusi script PHP. Lakukan konfigurasi PHP-FPM pada file php.ini.
1 2 | cd /etc/php/7.2/fpm sudo nano php.ini |
Cari opsi cgi.fix_pathinfo, hilangkan tanda komentar (#) dan beri nilai 0.
1 | cgi.fix_pathinfo=0 |
Restart dan aktifkan service php-fpm.
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.
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.
1 2 | sudo apt install composer -y composer -V |
4. Install Laravel
Sebelum instalasi Laravel, dibutuhkan aplikasi Unzip, install Unzip terlebih dahulu.
1 | sudo apt install unzip -y |
Membuat direktori untuk Laravel.
1 2 3 4 | cd /var/www/ sudo mkdir laravel sudo chown $USER:www-data laravel chmod 775 laravel |
Instalasi Laravel dengan menggunakan composer.
1 2 | cd /var/www/laravel composer create-project laravel/laravel . |
Ubah hak akses dan kepemilikan file.
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.
1 2 | cd /etc/nginx/sites-available sudo nano laravel.educahost.tk.conf |
Masukkan konfigurasi Nginx di bawah ini.
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.
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.
6. Install MariaDB
Selanjutnya untuk kebutuhan database, install MariaDB server.
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.
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.
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.
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.
1 2 | cd /var/www/laravel nano .env |
Cari opsi database di bawah ini.
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.
1 2 3 4 5 6 7 | nano config/database.php 'mysql' => [ ... 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', ... |
8. Membuat Register dan Login Laravel
Jalankan migrate untuk membuat struktur tabel user dan password_reset di database.
1 | php artisan migrate |
Setelah tabel user terbentuk, buat authentication dengan perintah make.
1 | php artisan make:auth |
Akses ulang halaman Laravel, terdapat menu link baru untuk Login dan Register.
Uji coba dengan membuat akun dan login.
Selamat mencoba 🙂