DevOps: Membuat Service seperti Laravel Valet

iwanna
3 min readJan 1, 2025

--

Laravel Valet adalah alat pengembangan yang luar biasa yang menyediakan kemudahan dalam menjalankan aplikasi Laravel secara lokal dengan hanya menggunakan domain lokal seperti project.test.

Dalam artikel ini, kita akan membahas bagaimana cara membuat layanan lokal serupa bernama valex, yang akan memungkinkan kita untuk menghubungkan dan mengelola project Laravel di lingkungan pengembangan lokal.

Mengapa Menggunakan valex?

Laravel Valet memiliki banyak fitur hebat, tetapi tidak selalu cocok dengan setiap versi PHP atau Laravel. Misalnya, jika kita bekerja dengan Laravel 5.8 dan PHP 7.4, kita mungkin menemui beberapa peringatan (deprecation warnings) yang terkait dengan perubahan di PHP 7.4. Namun, menggunakan valex memberi kita kontrol penuh atas lingkungan pengembangan, dan kita dapat menyesuaikan konfigurasi server sesuai kebutuhan.

Langkah 1: Instalasi dan persiapan

Sebelum membuat layanan valex, pastikan sudah menginstal komponen berikut:

  1. MacOS
  2. PHP (PHP 7.4 untuk kompatibilitas dengan Laravel 5.8)
  3. Nginx (untuk server web)
  4. DNSMasq (untuk menangani domain lokal)

Install semuanya menggunakan Homebrew:

brew install php nginx dnsmasq

Setelah menginstal, konfigurasikan DNSMasq untuk mengarahkan domain .test ke 127.0.0.1:

echo "address=/.test/127.0.0.1" > /usr/local/etc/dnsmasq.conf
sudo brew services start dnsmasq

Langkah 2: Membuat script valex

  1. Buat file valex di /usr/local/bin/valex:
sudo nano /usr/local/bin/valex

2. Tambahkan skrip berikut: Skrip ini akan menangani perintah link untuk menghubungkan project dan unlink untuk menghapus project dari domain .test.

#!/bin/bash

VAL_PATH="/usr/local/etc/nginx/valex"
SITES_PATH="$HOME/Sites"

function valex_link {
local project=$1
local project_path="$SITES_PATH/$project"
local nginx_config="$VAL_PATH/$project.test.conf"

if [ ! -d "$project_path" ]; then
echo "Project $project does not exist in $SITES_PATH"
exit 1
fi

# Create Nginx configuration
cat <<EOL > "$nginx_config"
server {
listen 80;
server_name $project.test;
root $project_path/public;
index index.php index.html;

location / {
try_files \$uri \$uri/ /index.php?\$query_string;
}

location ~ \.php\$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000; # Adjust PHP-FPM socket or port
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
}

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

echo "Linked $project to $project.test"
sudo brew services restart nginx
}

function valex_unlink {
local project=$1
local nginx_config="$VAL_PATH/$project.test.conf"

if [ -f "$nginx_config" ]; then
rm "$nginx_config"
echo "Unlinked $project"
sudo brew services restart nginx
else
echo "Project $project is not linked."
fi
}

# Command routing
case $1 in
link)
valex_link $2
;;
unlink)
valex_unlink $2
;;
*)
echo "Usage: valex [link|unlink] [project-name]"
;;
esac

3. Berikan izin eksekusi:

sudo chmod +x /usr/local/bin/valex

Langkah 3: Mengonfigurasi nginx

Agar valex bekerja dengan baik, kita perlu mengonfigurasi Nginx untuk mengenali domain .test yang digunakan oleh project web kita.

  1. Tambahkan konfigurasi ke Nginx: Ubah file konfigurasi Nginx (/usr/local/etc/nginx/nginx.conf) untuk menyertakan konfigurasi domain. Tambahkan baris berikut di dalam blok http { ... }:
include /usr/local/etc/nginx/valex/*.conf;

2. Restart Nginx: Agar konfigurasi terbaru diterapkan:

sudo brew services restart nginx

Langkah 4: Menjalankan valex

Sekarang kita dapat mulai menggunakan valex untuk mengelola project Laravel di lingkungan lokal.

  • Menautkan project ke domain .test:
valex link myapp

Perintah ini akan membuat symlink ke project kita dan mengonfigurasi Nginx untuk menyajikan project melalui domain myapp.test.

  • Menghapus tautan project:
valex unlink myapp
  • Melihat project yang terhubung:
valex list

Langkah 5: Kompatibilitas dengan PHP dan Laravel

valex sepenuhnya kompatibel dengan PHP 7.4 dan Laravel 5.8. Pastikan telah menginstal PHP 7.4 dan mengonfigurasi PHP-FPM dengan benar untuk versi PHP yang pilih. Berikut adalah beberapa langkah tambahan untuk memastikan kompatibilitas:

  1. Periksa versi PHP:
php -v

2. Mengonfigurasi PHP-FPM untuk menggunakan PHP 7.4: Jika memiliki beberapa versi PHP, pastikan Nginx menggunakan socket PHP-FPM yang sesuai dengan versi PHP yang pilih:

fastcgi_pass unix:/usr/local/var/run/php/php7.4-fpm.sock;

Kesimpulan

Dengan mengikuti langkah-langkah di atas, kita telah berhasil membuat layanan lokal serupa Laravel Valet menggunakan valex. Kita kini dapat dengan mudah mengelola domain lokal untuk project Laravel dengan menggunakan domain .test. Ini memberikan fleksibilitas penuh dalam mengonfigurasi lingkungan pengembangan lokal, terutama ketika bekerja dengan berbagai versi PHP dan Laravel.

--

--

iwanna
iwanna

Written by iwanna

Software Engineer | Sharing insights on web development & coding practices.

No responses yet