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:
- MacOS
- PHP (PHP 7.4 untuk kompatibilitas dengan Laravel 5.8)
- Nginx (untuk server web)
- 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
- 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.
- Tambahkan konfigurasi ke Nginx: Ubah file konfigurasi Nginx (
/usr/local/etc/nginx/nginx.conf
) untuk menyertakan konfigurasi domain. Tambahkan baris berikut di dalam blokhttp { ... }
:
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:
- 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.