- Pengenalan
- Instalasi
- Menyediakan Situs
- Membagikan Situs
- Variabel Lingkungan Khusus Situs
- Melakukan Proksi Layanan
- Driver Valet Kustom
- Perintah Valet Lainnya
- Direktori & File Valet
Laravel Valet adalah lingkungan pengembangan minimalis untuk macOS. Laravel Valet mengonfigurasi Mac Anda untuk selalu menjalankan Nginx pada latar belakang saat mesin Anda dinyalakan. Kemudian, dengan menggunakan DnsMasq, Valet memproksi semua permintaan pada domain *.test
untuk mengarahkan ke situs-situs yang terinstal di mesin lokal Anda.
Dengan kata lain, Valet adalah lingkungan pengembangan Laravel yang sangat cepat yang menggunakan RAM sekitar 7 MB. Valet bukanlah pengganti untuk Sail atau Homestead, tetapi menyediakan alternatif yang bagus jika Anda menginginkan dasar-dasar yang fleksibel, lebih suka kecepatan ekstrem, atau bekerja pada mesin dengan jumlah RAM yang terbatas.
Tidak menutup kemungkinan, Valet juga tidak terbatas untuk :
<style> #valet-support > ul { column-count: 3; -moz-column-count: 3; -webkit-column-count: 3; line-height: 1.9; } </style>Selain itu, Anda dapat memperluas dukungan Valet dengan menggunakan driver khusus Anda sendiri.
Peringatan
Valet memerlukan macOs dan Homebrew. Sebelum melakukan instalasi, sebaiknya Anda memastikan jika tidak ada program seperti Apache atau Nginx yang sedang bertaut pada koneksi lokal dengan port 80.
Untuk memulai, pertama-tama Anda harus memastikan jika Homebrew sudah menggunakan versi terbaru dengan menggunakan perintah update
:
brew update
Selanjutnya, Anda harus menggunakan Homebrew untuk menginstal PHP:
brew install php
Setelah menginstal PHP, Anda siap untuk menginstal Composer Package Manager. Perlu diingat, Anda harus memastikan jika direktori ~/.composer/vendor/bin
ada di dalam "PATH". Setelah Composer terinstal, Anda dapat menginstal Laravel Valet sebagai paket Composer yang bersifat global:
composer global require laravel/valet
Setelah semua selesai, silahkan jalankan Valet dengan menggunakan valet install
. Perintah ini akan mengonfigurasi dan menginstal Valet dan DnsMasq. Daemon-daemon yang diperlukan oleh Valet akan dikonfigurasi untuk berjalan ketika sistem menyala.
valet install
Setelah Valet terinstal, cobalah melakukan ping ke domain *.test
yang mana saja pada terminal Anda menggunakan perintah seperti ping foobar.test
. Jika Valet telah terinstal dengan sempurna, maka domain akan merespon dengan 127.0.0.1
.
Valet akan secara otomatis memulai layanan yang diperlukan setiap kali mesin Anda dinyalakan.
Valet memungkinkan Anda untuk mengganti versi PHP menggunakan perintah valet use php@version
. Valet akan menginstal versi PHP secara spesifik menggunakan Homebrew jika belum terinstal.
valet use [email protected]
valet use php
Anda juga dapat membuat file .valetphprc
di dalam direktori akar (root) proyek Anda. File .valetphprc
harus berisi versi PHP yang ingin digunakan oleh situs:
Setelah semua file telah dibuat, Anda cukup menjalankan perintah valet use
. Perintah tersebut akan menentukan versi PHP yang diinginkan oleh situs dengan membaca berkas tersebut.
Peringatan
Valet hanya akan menjalankan satu versi PHP pada satu waktu, walaupun Anda memiliki beberapa versi PHP yang berbeda.
Jika aplikasi Anda membutuhkan basis data, Silahkan lihat DBngin, yang menyediakan alat manajemen basis data yang lengkap dan gratis yang mencakup MySQL, PostgreSQL, dan Redis. Setelah DBngin terinstal, Anda dapat menyambungkan basis data Anda pada 127.0.0.1
menggunakan nama pengguna root
dan string kosong untuk kata sandi.
Jika Anda mengalami masalah untuk menjalankan Valet yang sesuai, jalankan perintah composer global require laravel/valet
yang diikuti dengan valet install
, perintah ini akan mereset instalasi Anda dan dapat menyelesaikan berbagai masalah. Dalam kasus yang jarang terjadi, Anda mungkin perlu untuk melakukan "hard reset" Valet dengan mengeksekusi valet uninstall --force
diikuti dengan valet install
.
Anda dapat memperbarui instalasi Valet dengan menjalankan perintah composer global require laravel/valet
pada terminal Anda. Setelah melakukan pembaruan, baiknya Anda menjalankan perintah valet install
sehingga Valet dapat melakukan pembaruan tambahan pada file konfigurasi Anda jika diperlukan.
Setelah Valet terinstal, Anda siap untuk mulai membuka aplikasi Laravel Anda. Valet menyediakan dua perintah untuk membantu Anda menyediakan aplikasi-aplikasi Anda: park
dan link
.
Perintah park
akan mendaftarkan sebuah direktori pada mesin Anda yang berisi aplikasi-aplikasi Anda. Setelah direktori tersebut "diparkir" dengan Valet, semua direktori di dalamnya akan dapat diakses di browser web Anda pada http://<nama-direktori>.test
:
cd ~/kumpulan-proyek
valet park
Sekarang, aplikasi apa pun yang Anda buat di dalam direktori yang telah "terparkir" tersebut akan secara otomatis tersedia (dapat diakses) dengan menggunakan konvensi http://<nama-direktori>.test
. Jadi, jika direktori "terparkir" Anda berisi direktori bernama "laravel", aplikasi di dalam direktori tersebut akan dapat diakses pada http://laravel.test
. Selain itu, Valet secara otomatis mengizinkan Anda untuk mengakses situs menggunakan subdomain-subdomain wildcard (http://foo.laravel.test
).
Perintah link
juga dapat digunakan untuk menyajikan aplikasi Laravel Anda. Perintah ini berguna jika Anda ingin menyajikan satu situs dalam sebuah direktori dan bukan seluruh direktori:
cd ~/kumpulan-proyek/laravel
valet link
Setelah aplikasi berhasil ditautkan ke Valet menggunakan perintah link
, Anda dapat mengakses aplikasi tersebut menggunakan nama direktorinya. Jadi, situs yang ditautkan pada contoh di atas dapat diakses pada http://laravel.test
. Selain itu, Valet secara otomatis mengizinkan Anda untuk mengakses situs menggunakan subdomain-subdomain wildcard (http://foo.laravel.test
).
Jika Anda ingin menyediakan aplikasi dengan nama host yang berbeda, Anda dapat mengoper nama host ke perintah link
. Sebagai contoh, Anda dapat menjalankan perintah berikut untuk membuat aplikasi tersedia di http://aplikasi-gue.test
:
cd ~/kumpulan-proyek/laravel
valet link aplikasi-gue
Anda juga dapat menyajikan aplikasi pada/menjadi subdomain menggunakan perintah link
:
valet link api.aplikasi-gue
Anda juga dapat menjalankan perintah links
untuk menampilkan semua daftar direktori yang anda miliki:
valet links
Perintah unlink
dapat digunakan untuk menghancurkan tautan simbolis (symbolic link) untuk sebuah situs:
cd ~/kumpulan-proyek/laravel
valet unlink
Secara default, Valet menyajikan situs melalui (protokol) HTTP. Namun, jika Anda ingin menyajikan situs melalui TLS yang terenkripsi menggunakan HTTP/2, Anda dapat menggunakan perintah secure
. Sebagai contoh, jika situs Anda disajkian oleh Valet pada domain laravel.test
, Anda harus menjalankan perintah berikut ini untuk mengamankannya:
valet secure laravel
Untuk "tidak mengamankan" sebuah situs dan kembali melayani lalu lintas melalui HTTP biasa, gunakan perintah unsecure
. Seperti perintah secure
, perintah ini menerima nama host yang tidak ingin diamankan:
valet unsecure laravel
Terkadang, Anda mungkin ingin mengonfigurasi Valet untuk menampilkan situs "default" alih-alih menampilkan 404
saat mengunjungi domain test
yang tidak dikenal. Untuk melakukan ini, Anda dapat menambahkan opsi default
ke file konfigurasi ~/.config/valet/config.json
, yang berisi path ke situs yang akan berfungsi sebagai situs default Anda:
"default": "/Users/Sally/Sites/example-site",
Secara default, Valet menggunakan instalasi PHP global Anda untuk menyajikan situs-situs Anda. Namun, jika Anda perlu mendukung beberapa versi PHP pada berbagai situs, Anda dapat menggunakan perintah isolate
untuk menentukan versi PHP yang harus digunakan oleh situs tertentu. Perintah isolate
mengonfigurasi Valet untuk menggunakan versi PHP yang ditentukan untuk situs yang terletak di direktori kerja Anda saat ini:
cd ~/kumpulan-proyek/situs-contoh
valet isolate [email protected]
Jika nama situs anda tidak sesuai dengan direktori tempat aplikasi ada berada, Anda dapat menentukan nama situs dengan opsi --site
:
valet isolate [email protected] --site="nama-situs"
Demi kenyamanan, Anda dapat menggunakan perintah valet php
, composer
, dan which-php
untuk menjalankan panggilan secara langsung ke CLI PHP atau alat lain yang sesuai dengan versi PHP yang dikonfigurasikan pada situs tersebut:
valet php
valet composer
valet which-php
Anda dapat menjalankan perintah isolated
untuk menampilkan semua daftar situs terisolasi yang Anda miliki serta versi PHP-nya:
valet isolated
Untuk mengembalikan situs ke Versi PHP yang terinstal secara global, Anda dapat menggunakan perintah unisolate
dari direktori root situs.
valet unisolate
Valet juga menyertakan perintah untuk membagikan situs lokal anda ke seluruh dunia, gunanya untuk mempermudah pengujian pada perangkat mobile atau dibagikan kepada rekan kerja dan mitra.
Untuk membagikan situs, arahkan ke direktori situs pada terminal Anda dan jalankan perintah share
milik Valet. URL yang dapat diakses publik akan dimasukkan ke dalam clipboard Anda dan siap untuk ditempelkan langsung pada browser Anda atau dibagikan kepada tim Anda:
cd ~/kumpulan-proyek/laravel
valet share
Untuk berhenti membagikan situs Anda, Anda dapat menekan Control + C
. Membagikan situs Anda menggunakan Ngrok mengharuskan Anda untuk memiliki akun Ngrok dan mengatur sebuah autentikasi.
Note
Anda dapat memberikan parameter Ngrok tambahan pada perintahshare
, sepertivalet share --region=eu
. Untuk informasi lebih lanjut, lihat dokumentasi Ngrok.
Jika Expose Anda telah terinstal, Anda bisa membagikan situs anda dengan mengarahkan ke direktori situs pada terminal Anda dan menjalankan perintah expose
. Lihat dokumentasi Expose untuk informasi mengenai parameter tambahan yang tersedia untuk perintah. Setelah membagikan situs, Expose akan menampilkan URL yang dapat dibagikan yang dapat Anda gunakan pada perangkat lain atau pada anggota tim yang lain:
cd ~/kumpulan-proyek/laravel
expose
Untuk berhenti membagikan, silahkan tekan Control + C
Valet membatasi lalu lintas yang masuk ke antarmuka internal 127.0.0.1
secara default sehingga mesin pengembangan Anda tidak terpapar risiko keamanan dari Internet.
Jika Anda ingin mengizinkan perangkat lain pada jaringan lokal Anda untuk mengakses situs Valet pada mesin Anda melalui alamat IP mesin Anda (misalnya: 192.168.1.10/aplikasi-gue.test
), Anda perlu memodifikasi file konfigurasi Nginx secara manual yang sesuai untuk situs tersebut untuk menghapus pembatasan pada direktif listen
. Anda harus menghapus awalan 127.0.0.1:
pada direktif listen
untuk port 80 dan 443.
Jika Anda belum menjalankan valet secure
pada proyek, Anda dapat membuka akses jaringan untuk semua situs non-HTTPS dengan memodifikasi file /usr/local/etc/nginx/valet/valet.conf
. Namun, jika Anda menyediakan situs proyek melalui HTTPS (Anda telah menjalankan valet secure
untuk situs tersebut) maka Anda harus memodifikasi file ~/.config/valet/Nginx/nama-aplikasi.test
.
Setelah Anda memperbarui konfigurasi Nginx, jalankan perintah valet restart
untuk menerapkan perubahan konfigurasi.
Beberapa aplikasi yang menggunakan kerangka kerja lain mungkin bergantung pada variabel lingkungan server tetapi tidak menyediakan cara mengonfigurasi variabel tersebut untuk proyek Anda. Valet memungkinkan Anda untuk mengonfigurasi variabel lingkungan spesifik/khusus situs tersebut dengan menambahkan file .valet-env.php
di dalam root proyek Anda. File ini akan mengembalikan sebuah larik pasangan situs-variabel lingkungan yang akan ditambahkan ke larik $_SERVER
global untuk setiap situs yang ditentukan dalam larik tersebut:
<?php
return [
// Set $_SERVER['key'] to "value" for the laravel.test site...
'laravel' => [
'key' => 'value',
],
// Set $_SERVER['key'] to "value" for all sites...
'*' => [
'key' => 'value',
],
];
Terkadang, Anda mungkin ingin memproksi domain Valet ke layanan lain pada mesin lokal Anda. Sebagai contoh, Anda mungkin terkadang perlu menjalankan Valet sembari menjalankan situs terpisah di Docker; namun, Valet dan Docker tidak dapat menautkan port 80 secara bersamaan.
Untuk mengatasi hal ini, Anda dapat menggunakan perintah proxy
untuk menghasilkan proksi. Sebagai contoh, Anda dapat memproksi semua lalu lintas dari http://elasticsearch.test
ke http://127.0.0.1:9200
:
# Proxy melalui HTTP...
valet proxy elasticsearch http://127.0.0.1:9200
# Proxy melalui TLS + HTTP/2...
valet proxy elasticsearch http://127.0.0.1:9200 --secure
Anda dapat menghapus sebuah proksi dengan menggunakan perintah unproxy
:
valet unproxy elasticsearch
Anda juga dapat menggunakan perintah proxies
untuk menampilkan daftar semua konfigurasi situs yang telah dilakukan proksi:
valet proxies
Anda dapat menulis "driver" Valet Anda sendiri untuk menyediakan aplikasi-aplikasi PHP yang berjalan pada sebuah kerangka kerja atau CMS yang tidak didukung oleh Valet. Ketika Anda menginstal Valet, direktori ~/.config/valet/Drivers
dibuat yang berisi file SampleValetDriver.php
. File ini berisi contoh implementasi driver untuk mendemonstrasikan cara menulis driver yang kustom. Menulis driver hanya memerlukan implementasi tiga metode: serves
, isStaticFile
, dan frontControllerPath
.
Ketiga metode tersebut menerima nilai $sitePath
, $siteName
, dan $uri
sebagai argumennya. $sitePath
adalah path lengkap (fully qualified path) ke situs yang ingin disajikan pada mesin Anda, seperti /Users/Lisa/kumpulan-proyek/aplikasi-gue
. $siteName
adalah bagian "host"/"nama situs" dari domain (aplikasi-gue
). $uri
adalah URI untuk permintaan yang masuk (/foo/bar
).
Setelah Anda menyelesaikan driver Valet khusus Anda, letakkan pada direktori ~/.config/valet/Drivers
dengan menggunakan konvensi penamaan FrameworkValetDriver.php
. Sebagai contoh, jika Anda menulis driver valet khusus untuk WordPress, maka nama file Anda akan menjadi WordPressValetDriver.php
.
Sekarang, kita coba mengimplementasikan setiap metode dari kustom Valet yang perlu Anda tulis.
Metode services
harus mengembalikan true
jika driver Anda harus menangani permintaan yang masuk. Jika tidak, metode tersebut akan mengembalikan nilai false
. Jadi, di dalam metode ini, Anda harus mencoba menentukan apakah $sitePath
yang diberikan berisi proyek dengan tipe tertuntu yang Anda coba sajikan.
Sebagai contoh, bayangkan kita sedang menulis WordPressValetDriver
. Metode services
kita mungkin akan terlihat seperti ini:
/**
* Tentukan apakah driver melayani permintaan.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return bool
*/
public function serves($sitePath, $siteName, $uri)
{
return is_dir($sitePath.'/wp-admin');
}
Metode isStaticFile
harus menentukan apakah permintaan yang masuk adalah file "statis", seperti gambar atau stylesheet. Jika file tersebut besifat statis, metode ini harus mengembalikan path lengkap ke file statis yang terdapat pada disk. Jika permintaan yang masuk bukan untuk file statis, metode harus mengembalikan false
:
/**
* Tentukan apakah permintaan yang masuk adalah untuk berkas statis.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string|false
*/
public function isStaticFile($sitePath, $siteName, $uri)
{
if (file_exists($staticFilePath = $sitePath.'/public/'.$uri)) {
return $staticFilePath;
}
return false;
}
Peringatan
MetodeisStaticFile
hanya akan dipanggil jika metodeserves
mengembalikan nilaitrue
untuk permintaan yang masuk dan URI permintaan bukan/
.
Metode frontControllerPath
harus mengembalikan path lengkap ke "pengendali depan" milik aplikasi Anda, yang biasanya berupa file "index.php" atau yang sejenisnya:
/**
* Dapatkan jalur yang sepenuhnya terselesaikan ke pengontrol depan aplikasi.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string
*/
public function frontControllerPath($sitePath, $siteName, $uri)
{
return $sitePath.'/public/index.php';
}
Jika Anda ingin mendefinisikan driver Valet khusus untuk satu aplikasi, buat file LocalValetDriver.php
di dalam direktori root milik aplikasi tersebut. Driver kustom Anda perlu melakukan extend terhadap kelas driver dasar ValetDriver
atau melakukan extend terhadap driver untuk aplikasi spesifik yang sudah ada seperti LaravelValetDriver
:
use Valet\Drivers\LaravelValetDriver;
class LocalValetDriver extends LaravelValetDriver
{
/**
* Determine if the driver serves the request.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return bool
*/
public function serves($sitePath, $siteName, $uri)
{
return true;
}
/**
* Get the fully resolved path to the application's front controller.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string
*/
public function frontControllerPath($sitePath, $siteName, $uri)
{
return $sitePath.'/public_html/index.php';
}
}
Perintah | Deskripsi |
---|---|
valet list |
Menampilkan daftar semua perintah Valet. |
valet forget |
Jalankan perintah ini dari direktori "terparkir" untuk menghapusnya dari daftar direktori terparkir. |
valet log |
Melihat daftar log yang ditulis oleh layanan milik Valet. |
valet paths |
Melihat semua path yang "terparkir" milik Anda. |
valet restart |
Memulai ulang daemon Valet. |
valet start |
Memulai daemon Valet. |
valet stop |
Menghentikan daemon Valet. |
valet trust |
Menambahkan file sudoers untuk Brew dan Valet agar perintah Valet dapat dijalankan tanpa meminta kata sandi Anda. |
valet uninstall |
Copot pemasangan Valet: menampilkan instruksi untuk pencopotan pemasangan manual. Berikan opsi --force untuk menghapus semua sumber daya Valet secara agresif. |
Anda mungkin memerlukan informasi mengenai direktori dan file berikut ini saat memecahkan masalah dengan lingkungan Valet Anda:
Berisi semua konfigurasi Valet. Anda mungkin ingin menyimpan cadangan direktori ini.
Direktori ini berisi konfigurasi DNSMasq.
Direktori ini berisi driver-driver Valet. Driver menentukan bagaimana sebuah framework / CMS tertentu dilayani.
Direktori ini berisi ekstensi/perintah khusus Valet.
Direktori ini berisi semua konfigurasi situs Nginx milik Valet. file-file ini dibangun/ditulis ulang saat menjalankan perintah install
dan secure
.
Direktori ini berisi semua tautan simbolik untuk proyek yang ditautkan.
File ini adalah file konfigurasi utama mililk Valet.
This file is the PHP-FPM socket used by Valet's Nginx installation. This will only exist if PHP is running properly.
This file is the user log for PHP errors.
This file is the user log for Nginx errors.
This file is the system log for PHP-FPM errors.
Direktori ini berisi semua log akses dan eror pada Nginx.
File ini berisi file-file .ini
untuk berbagai pengaturan konfigurasi PHP.
File ini adalah file konfigurasi PHP-FPM pool.
File ini adalah konfigurasi default Nginx yang digunakan untuk membangun sertifikat SSL untuk situs Anda.
Sejak macOS 10.14, akses ke beberapa file dan direktori telah dibatasi secara default. Pembatasan ini termasuk direktori Desktop, Dokumen, dan Unduhan. Selain itu, akses volume jaringan dan volume removable juga dibatasi. Oleh karena itu, Valet merekomendasikan folder situs Anda berada di luar lokasi yang dilindungi ini.
Namun, jika Anda ingin menyajikan situs dari dalam salah satu lokasi tersebut, Anda harus memberikan "Akses Disk Penuh" kepada Nginx. Jika tidak, Anda mungkin akan mengalami eror server atau perilaku tak terduga lainnya dari Nginx, terutama saat melayani aset statis. Biasanya, macOS akan secara otomatis meminta Anda untuk memberikan akses penuh kepada Nginx ke lokasi-lokasi ini. Atau, Anda dapat melakukannya secara manual melalui Preferensi Sistem
> Keamanan & Privasi
> Keprivasian
dan memilih Akses Disk Penuh
. Selanjutnya, aktifkan entri nginx
pada panel jendela utama.