Menyiapkan Lingkungan Development Lokal Laravel di Linux (Ubuntu 20.04) 🐧

⏱️6 min read

Intro

Sejak tahun 2020 saya gunakan Linux sebagai OS kedua saya setelah Windows. Memang sedikit susah untuk berpindah dari Windows ke Linux apabila sudah nyaman memakainya. Bisa dibilang menggunakan linux lebih “ribet” dibanding menggunakan windows. Kenapa? Karena yang pertama dan yang paling utama adalah ketika kita sudah bergantung dengan yang namanya aplikasi Office milik Microsoft, di Linux tidak ada aplikasi Microsoft Word, Microdoft Pwoer Point, dll. Namun ada aplikasi alternatif seperti Libre, Onlyoffice, WPS office, dll. Yang perlu penyesuaian serta kebanyakan tidak kompatible dengan beberapa format di aplikasi Microsoft Office. Selain tidak adanya Microsoft Office, Alasan selanjutnya adalah kita harus familiar dengan yang namanya CLI atau Command Line Interface. Yaitu kita menggunakan baris perintah untuk melakukan sesuatu contohnya seperti updade repository, upgrade system, dll. Namun semakin kesini banyak distro Linux yang mempemudah sehingga ramah untuk pengguna linux awal.

Oke masuk ke pembahasan, kita akan melakukan konfigurasi sebuah framework PHP yaitu Laravel versi 8. Kita akan menggunakan database MySQL dan PHP versi 7.3.

Install PHP

Tambahkan dan instal PHP 7.3 PPA repository

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.3

Verifikasi versi php yang sudah terinstal dengan perintah

php  -v

Output:

PHP 7.3.33-1+ubuntu20.04.1+deb.sury.org+1 (cli) (built: Nov 19 2021 06:25:05) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.33, Copyright (c) 1998-2018 Zend Technologies
   with Zend OPcache v7.3.33-1+ubuntu20.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

Menginstal Modul PHP 7.3 yang Diperlukan

Laravel membutuhkan banyak modul. Anda dapat menginstalnya menggunakan perintah berikut:

sudo apt-get install php7.3 php7.3-cli php7.3-common php7.3-json php7.3-opcache php7.3-mysql php7.3-mbstring php7.3-mcrypt php7.3-zip php7.3-fpm php7.3-xml

Install MySQL Database

Jalankan perintah:

sudo apt-get install php7.3-mysql
sudo apt-get install mysql-server

Konfigurasi mysql dengan menjalankan perintah:

sudo mysql_secure_installation

Sekarang kita akan disajikan dengan beberapa petunjuk.

Untuk local dev environment, saya biarkan tidak memakai ’Validate Password Plugin’. Kita akan diminta memasukkan kata sandi untuk pengguna root. Dari sana hapus pengguna anonim, larang pengguna root dari akses jarak jauh, dan hapus test database. Ketika diminta untuk reload privilege tables pilih yes.

Buat Pengguna Non-root Dengan Hak Akses Root

Login ke database MySQL sebagai root

sudo mysql -u root -p

Kemudian, jalankan perintah berikut untuk membuat userbaru bernama admin

CREATE USER 'admin'@'localhost' IDENTIFIED BY '';

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

FLUSH PRIVILEGES;

Selanjutnya keluar dari MySQL CLI

mysql> exit

Test pengguna baru dengan masuk sebagai admin tanpa menggunakan sudo.

mysql -u admin

Jika berhasil maka akan muncul

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

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>_

Keluar dari MySql dan kita akan melanjutkan untuk menginstal Composer.

mysql>exit

Untuk mengimport data dari file sql t(pastikan databse sudah dibuat terlebih dahulu) dan lakukan perintah berikut di terminal:

$ mysql -u USER -p NAMA_DATABASE < PATH/TO/FILE.sql

Untuk mengeceknya bisa masuk ke mysql dengan user tersebut

$ mysql -u USER


mysql> USE database_name;
mysql> SHOW tables;

Install Composer

Pertama, kita perlu memperbarui package manager kita.

sudo apt update

Sekarang kita akan menginstal beberapa dependensi yang diperlukan untuk instalasi Composer.

curl untuk mengunduh Komposer php-cli diperlukan untuk menjalankan instalasi php-mbstring menyediakan fungsi untuk perpustakaan yang digunakan git akan memungkinkan Composer mengunduh dependensi proyek unzip untuk membuka zip

sudo apt install curl php-cli php-mbstring git unzip

Dengan itu, kita dapat mengunduh installer Composer. Mulailah dengan pindah ke direktori home.

cd ~

Kemudian download installer Composer menggnakan curl.

curl -sS https://getcomposer.org/installer -o composer-setup.php

Sebelum kita instal kita perlu cek apakah installernya corrupt atau tidak serta memverifikasi bahwa installer yang kita download itu tidak di modifikasi dengan mengecek file Hash dan kita samakan dengan yang ada di webnya.

Buka Link https://composer.github.io/pubkeys.html dan temukan ‘Installer Checksum (SHA-384)’

Gunakan signature dan jalankan perintah berikut untuk memverifikasi installer yang sudah kita download.

HASH=isikan_hash_yang_ada_di_web
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Harusnya Outpus sebagai berikut:

Installer verified

jika tidak, kita harus download ulang installer dan melakukan langkah verifikasi lagi.

Jalankan Installer

Intall Composer secara global pada sistem.

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Ketika sudah berhasil, ubah permission dari direktori composer

sudo chown -R $USER ~/.composer/

Verifikasi Bahwa Composer Sudah Terinstall

⚠️Jangan jalankan komposer sebagai root menggunakan sudo ️⚠️

jalankan

composer

Outputnya:

 ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.2.1 2021-12-22 22:21:31

Mari Install Laravel

Unduh installer Laravel menggunakan Composer.

composer global require laravel/installer

Sekarang kita perlu memperbarui Linux $PATH

echo 'export PATH="$PATH:$HOME/.composer/vendor/bin"' >> ~/.bashrc

Setelah memperbarui $PATH tutup terminal dan buka yang baru.

Coba Hello, World

Mari jalankan aplikasi Laravel boilerplate di localhost kita. Pertama kita perlu membuat database yang akan kita sambungkan. Masuk ke MySQL melalui terminal menggunakan pengguna admin yang telah dibuat sebelumnya.

mysql -u admin

Kemudian buat database

CREATE DATABASE cobalaravel;

Buat project Laravel

laravel new coba-laravel

coba-laravel hanyalah nama aplikasi jadi beri nama apa pun yang kita suka.

Setelah ini selesai cd ke direktori baru untuk aplikasi Anda.

cd coba-laravel

Pada titik ini kita perlu memberi tahu aplikasi Laravel cara terhubung ke database kita.

Untuk ini kita akan mengedit file .env di root aplikasi.

sudo nano .env

Ubah pada bagian database dan sesuaikan dengan database kita menjadi seperti berikut:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cobalaravel
DB_USERNAME=admin
DB_PASSWORD=

Kemudian save.

Sekarang kita perlu menguji koneksi ke database. Untuk ini kita akan mengedit /routes/web.php Seharusnya terlihat seperti

Route::get('/', function () {
    try {
        DB::connection()->getPdo();
        $caught = false;
    } catch (Exception $e) {
        $caught = true;
        die("Could not connect to the database.  Please check your configuration. error:" . $e );
    }

    if(!$caught){
        echo 'Hello, world.';
    }
});

Sekarang jalankan server dengan perintah

php artisan serve

Output:

Laravel development server started: <http://127.0.0.1:8000>

Sekarang Anda dapat memeriksanya di browser http://127.0.0.1:8000 Kita akan melihat ‘Hello, world.’. tamopil di layar menandakan koneksi berhasil ke database.

Jika ada pesan error sebagai berikut

Illuminate\Database\QueryException : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = ota_points and table_name = migrations)

Kita perlu masuk ke MySQL sebagai root kemudian jalankan

ALTER USER 'username-yang-digunakan-dilaravel'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Biarkan password kosong jika tidak ingin menggunakan password. Gunakan username ini di file env laravel kita untuk database MYSQL.

Semoga bermanfaat.