- Wprowadzenie
- Instalacja
- Obsługa Stron
- Udostępnianie Stron
- Zmienne Środowiskowe Specyficzne dla Strony
- Proxy Serwisów
- Niestandardowe Sterowniki Valeta
- Inne Komendy Valeta
- Katalogi i Pliki Valeta
Note
Szukasz jeszcze łatwiejszego sposobu na rozwijanie aplikacji Laravel na macOS lub Windows? Sprawdź Laravel Herd. Herd zawiera wszystko, czego potrzebujesz, aby zacząć rozwój Laravel, w tym Valet, PHP i Composer.
Laravel Valet to środowisko deweloperskie dla minimalistów macOS. Laravel Valet konfiguruje twojego Maca tak, aby zawsze uruchamiał Nginx w tle, gdy twój komputer się uruchamia. Następnie, używając DnsMasq, Valet przekierowuje wszystkie żądania w domenie *.test, aby wskazywały na strony zainstalowane na twoim lokalnym komputerze.
Innymi słowy, Valet to błyskawiczne środowisko deweloperskie Laravel, które używa około 7 MB RAM-u. Valet nie jest pełnym zastępstwem dla Saila lub Homesteada, ale stanowi świetną alternatywę, jeśli chcesz elastycznych podstaw, wolisz ekstremalną szybkość lub pracujesz na komputerze z ograniczoną ilością RAM-u.
Gotowe wsparcie Valeta obejmuje między innymi:
<style> #valet-support > ul { column-count: 3; -moz-column-count: 3; -webkit-column-count: 3; line-height: 1.9; } </style>Jednak możesz rozszerzyć Valeta własnymi niestandardowymi sterownikami.
Warning
Valet wymaga macOS i Homebrew. Przed instalacją upewnij się, że żaden inny program, taki jak Apache lub Nginx, nie wiąże się z portem 80 twojego lokalnego komputera.
Aby zacząć, musisz najpierw upewnić się, że Homebrew jest aktualny, używając komendy update:
brew updateNastępnie powinieneś użyć Homebrew do zainstalowania PHP:
brew install phpPo zainstalowaniu PHP jesteś gotowy do zainstalowania menedżera pakietów Composer. Ponadto powinieneś upewnić się, że katalog $HOME/.composer/vendor/bin znajduje się w "PATH" twojego systemu. Po zainstalowaniu Composera możesz zainstalować Laravel Valet jako globalny pakiet Composer:
composer global require laravel/valetNa koniec możesz wykonać komendę install Valeta. To skonfiguruje i zainstaluje Valeta oraz DnsMasq. Ponadto demony, od których zależy Valet, zostaną skonfigurowane do uruchamiania przy starcie systemu:
valet installPo zainstalowaniu Valeta spróbuj zrobić ping dowolnej domeny *.test w terminalu za pomocą komendy takiej jak ping foobar.test. Jeśli Valet jest zainstalowany poprawnie, powinieneś zobaczyć tę domenę odpowiadającą na 127.0.0.1.
Valet będzie automatycznie uruchamiać wymagane usługi za każdym razem, gdy twój komputer się uruchomi.
Note
Zamiast modyfikować globalną wersję PHP, możesz polecić Valetowi używanie wersji PHP dla poszczególnych stron za pomocą komendy isolate command.
Valet pozwala przełączać wersje PHP używając komendy valet use php@version. Valet zainstaluje określoną wersję PHP za pośrednictwem Homebrew, jeśli nie jest już zainstalowana:
valet use php@8.2
valet use phpMożesz również utworzyć plik .valetrc w katalogu głównym swojego projektu. Plik .valetrc powinien zawierać wersję PHP, której strona powinna używać:
php=php@8.2Po utworzeniu tego pliku możesz po prostu wykonać komendę valet use, a komenda określi preferowany wersję PHP strony, odczytując plik.
Warning
Valet obsługuje tylko jedną wersję PHP w tym samym czasie, nawet jeśli masz zainstalowanych wiele wersji PHP.
Jeśli twoja aplikacja potrzebuje bazy danych, sprawdź DBngin, który zapewnia darmowe, kompleksowe narzędzie do zarządzania bazami danych, w tym MySQL, PostgreSQL i Redis. Po zainstalowaniu DBngin możesz połączyć się ze swoją bazą danych pod adresem 127.0.0.1 używając nazwy użytkownika root i pustego ciągu znaków jako hasła.
Jeśli masz problemy z prawidłowym działaniem instalacji Valeta, wykonanie komendy composer global require laravel/valet, a następnie valet install zresetuje instalację i może rozwiązać różne problemy. W rzadkich przypadkach może być konieczne "twarde resetowanie" Valeta poprzez wykonanie valet uninstall --force, a następnie valet install.
Możesz zaktualizować instalację Valeta wykonując komendę composer global require laravel/valet w terminalu. Po aktualizacji dobrze jest uruchomić komendę valet install, aby Valet mógł wykonać dodatkowe aktualizacje plików konfiguracyjnych, jeśli to konieczne.
Jeśli aktualizujesz z Valeta 3 do Valeta 4, wykonaj następujące kroki, aby prawidłowo zaktualizować instalację Valeta:
- Jeśli dodałeś pliki
.valetphprcw celu dostosowania wersji PHP strony, zmień nazwę każdego pliku.valetphprcna.valetrc. Następnie dodajphp=przed istniejącą zawartością pliku.valetrc. - Zaktualizuj wszystkie niestandardowe sterowniki, aby odpowiadały przestrzeni nazw, rozszerzeniu, podpowiedziom typów i zwrotom typów nowego systemu sterowników. Możesz skonsultować się z SampleValetDriver Valeta jako przykład.
- Jeśli używasz PHP 7.1 - 7.4 do obsługi swoich stron, upewnij się, że nadal używasz Homebrew do zainstalowania wersji PHP 8.0 lub wyższej, gdyż Valet użyje tej wersji, nawet jeśli nie jest to twoja główna połączona wersja, do uruchamiania niektórych skryptów.
Po zainstalowaniu Valeta jesteś gotowy do rozpoczęcia obsługi aplikacji Laravel. Valet udostępnia dwie komendy, które pomogą ci obsługiwać aplikacje: park i link.
Komenda park rejestruje katalog na twoim komputerze, który zawiera twoje aplikacje. Po "zaparkowaniu" katalogu w Valecie wszystkie katalogi w tym katalogu będą dostępne w przeglądarce internetowej pod adresem http://<nazwa-katalogu>.test:
cd ~/Sites
valet parkTo wszystko, czego potrzeba. Teraz każda aplikacja utworzona w "zaparkowanym" katalogu będzie automatycznie obsługiwana przy użyciu konwencji http://<nazwa-katalogu>.test. Więc jeśli twój zaparkowany katalog zawiera katalog o nazwie "laravel", aplikacja w tym katalogu będzie dostępna pod adresem http://laravel.test. Ponadto Valet automatycznie pozwala ci uzyskiwać dostęp do strony używając wieloznacznych poddomen (http://foo.laravel.test).
Komenda link może być również użyta do obsługi aplikacji Laravel. Ta komenda jest przydatna, jeśli chcesz obsłużyć pojedynczą stronę w katalogu, a nie cały katalog:
cd ~/Sites/laravel
valet linkPo połączeniu aplikacji z Valetem za pomocą komendy link możesz uzyskiwać dostęp do aplikacji używając nazwy jej katalogu. Więc strona, która została połączona w powyższym przykładzie, może być dostępna pod adresem http://laravel.test. Ponadto Valet automatycznie pozwala ci uzyskiwać dostęp do strony używając wieloznacznych poddomen (http://foo.laravel.test).
Jeśli chcesz obsłużyć aplikację pod inną nazwą hosta, możesz przekazać nazwę hosta do komendy link. Na przykład możesz uruchomić następującą komendę, aby udostępnić aplikację pod adresem http://application.test:
cd ~/Sites/laravel
valet link applicationOczywiście możesz również obsługiwać aplikacje na poddomenach używając komendy link:
valet link api.applicationMożesz wykonać komendę links, aby wyświetlić listę wszystkich połączonych katalogów:
valet linksKomenda unlink może być użyta do zniszczenia dowiązania symbolicznego strony:
cd ~/Sites/laravel
valet unlinkDomyślnie Valet obsługuje strony przez HTTP. Jednak jeśli chcesz obsługiwać stronę przez szyfrowane TLS używając HTTP/2, możesz użyć komendy secure. Na przykład, jeśli twoja strona jest obsługiwana przez Valeta w domenie laravel.test, powinieneś uruchomić następującą komendę, aby ją zabezpieczyć:
valet secure laravelAby "odzabezpieczyć" stronę i powrócić do obsługi jej ruchu przez zwykły HTTP, użyj komendy unsecure. Podobnie jak komenda secure, ta komenda akceptuje nazwę hosta, który chcesz odzabezpieczyć:
valet unsecure laravelCzasami możesz chcieć skonfigurować Valeta, aby obsługiwał "domyślną" stronę zamiast 404 podczas odwiedzania nieznanej domeny test. Aby to osiągnąć, możesz dodać opcję default do pliku konfiguracyjnego ~/.config/valet/config.json, zawierającą ścieżkę do strony, która powinna służyć jako twoja domyślna strona:
"default": "/Users/Sally/Sites/example-site",
Domyślnie Valet używa twojej globalnej instalacji PHP do obsługi stron. Jednak jeśli musisz obsługiwać wiele wersji PHP na różnych stronach, możesz użyć komendy isolate, aby określić, której wersji PHP powinna używać określona strona. Komenda isolate konfiguruje Valeta, aby używał określonej wersji PHP dla strony znajdującej się w twoim bieżącym katalogu roboczym:
cd ~/Sites/example-site
valet isolate php@8.0Jeśli nazwa twojej strony nie odpowiada nazwie katalogu, który ją zawiera, możesz określić nazwę strony używając opcji --site:
valet isolate php@8.0 --site="site-name"Dla wygody możesz używać komend valet php, composer i which-php do przekierowywania wywołań do odpowiedniego CLI PHP lub narzędzia na podstawie skonfigurowanej wersji PHP strony:
valet php
valet composer
valet which-phpMożesz wykonać komendę isolated, aby wyświetlić listę wszystkich odizolowanych stron i ich wersji PHP:
valet isolatedAby przywrócić stronę do globalnie zainstalowanej wersji PHP Valeta, możesz wywołać komendę unisolate z katalogu głównego strony:
valet unisolateValet zawiera komendę do udostępniania lokalnych stron światu, zapewniając łatwy sposób testowania strony na urządzeniach mobilnych lub udostępniania jej członkom zespołu i klientom.
Gotowo, Valet obsługuje udostępnianie stron przez ngrok lub Expose. Przed udostępnieniem strony powinieneś zaktualizować konfigurację Valeta używając komendy share-tool, określając ngrok, expose lub cloudflared:
valet share-tool ngrokJeśli wybierzesz narzędzie i nie masz go zainstalowanego przez Homebrew (dla ngrok i cloudflared) lub Composer (dla Expose), Valet automatycznie poprosi cię o jego zainstalowanie. Oczywiście oba narzędzia wymagają uwierzytelnienia twojego konta ngrok lub Expose przed rozpoczęciem udostępniania stron.
Aby udostępnić stronę, przejdź do katalogu strony w terminalu i uruchom komendę share Valeta. Publicznie dostępny URL zostanie umieszczony w schowku i jest gotowy do wklejenia bezpośrednio do przeglądarki lub udostępnienia zespołowi:
cd ~/Sites/laravel
valet shareAby zatrzymać udostępnianie strony, możesz nacisnąć Control + C.
Warning
Jeśli używasz niestandardowego serwera DNS (takiego jak 1.1.1.1), udostępnianie ngrok może nie działać poprawnie. Jeśli tak jest na twoim komputerze, otwórz ustawienia systemowe Maca, przejdź do ustawień Sieci, otwórz ustawienia Zaawansowane, następnie przejdź do zakładki DNS i dodaj 127.0.0.1 jako pierwszy serwer DNS.
Udostępnianie strony przy użyciu ngrok wymaga utworzenia konta ngrok i skonfigurowania tokena uwierzytelniającego. Po uzyskaniu tokena uwierzytelniającego możesz zaktualizować konfigurację Valeta o ten token:
valet set-ngrok-token YOUR_TOKEN_HERENote
Możesz przekazać dodatkowe parametry ngrok do komendy share, takie jak valet share --region=eu. Więcej informacji znajdziesz w dokumentacji ngrok.
Udostępnianie strony przy użyciu Expose wymaga utworzenia konta Expose i uwierzytelnienia się w Expose za pomocą tokena uwierzytelniającego.
Możesz sprawdzić dokumentację Expose, aby uzyskać informacje o dodatkowych parametrach wiersza poleceń, które obsługuje.
Valet domyślnie ogranicza przychodzący ruch do wewnętrznego interfejsu 127.0.0.1, aby twój komputer deweloperski nie był narażony na zagrożenia bezpieczeństwa z Internetu.
Jeśli chcesz pozwolić innym urządzeniom w twojej sieci lokalnej na dostęp do stron Valeta na twoim komputerze poprzez adres IP twojego komputera (np. 192.168.1.10/application.test), będziesz musiał ręcznie edytować odpowiedni plik konfiguracyjny Nginx dla tej strony, aby usunąć ograniczenie dyrektywy listen. Powinieneś usunąć prefiks 127.0.0.1: w dyrektywie listen dla portów 80 i 443.
Jeśli nie uruchomiłeś valet secure w projekcie, możesz otworzyć dostęp sieciowy dla wszystkich stron non-HTTPS, edytując plik /usr/local/etc/nginx/valet/valet.conf. Jednak jeśli obsługujesz stronę projektu przez HTTPS (uruchomiłeś valet secure dla strony), powinieneś edytować plik ~/.config/valet/Nginx/app-name.test.
Po zaktualizowaniu konfiguracji Nginx uruchom komendę valet restart, aby zastosować zmiany w konfiguracji.
Niektóre aplikacje używające innych frameworków mogą zależeć od zmiennych środowiskowych serwera, ale nie zapewniają sposobu na skonfigurowanie tych zmiennych w projekcie. Valet pozwala skonfigurować zmienne środowiskowe specyficzne dla strony, dodając plik .valet-env.php w katalogu głównym projektu. Ten plik powinien zwrócić tablicę par strona / zmienna środowiskowa, które zostaną dodane do globalnej tablicy $_SERVER dla każdej strony określonej w tablicy:
<?php
return [
// Ustaw $_SERVER['key'] na "value" dla strony laravel.test...
'laravel' => [
'key' => 'value',
],
// Ustaw $_SERVER['key'] na "value" dla wszystkich stron...
'*' => [
'key' => 'value',
],
];Czasami możesz chcieć przekierować domenę Valeta do innej usługi na swoim lokalnym komputerze. Na przykład, możesz czasami uruchamiać Valeta podczas uruchamiania oddzielnej strony w Dockerze; jednak Valet i Docker nie mogą jednocześnie wiązać się z portem 80.
Aby to rozwiązać, możesz użyć komendy proxy do wygenerowania proxy. Na przykład możesz przekierować cały ruch z http://elasticsearch.test do http://127.0.0.1:9200:
# Proxy przez HTTP...
valet proxy elasticsearch http://127.0.0.1:9200
# Proxy przez TLS + HTTP/2...
valet proxy elasticsearch http://127.0.0.1:9200 --secureMożesz usunąć proxy używając komendy unproxy:
valet unproxy elasticsearchMożesz użyć komendy proxies, aby wyświetlić wszystkie konfiguracje stron, które są przekierowywane:
valet proxiesMożesz napisać własny "sterownik" Valeta do obsługi aplikacji PHP działających na frameworku lub CMS, który nie jest natywnie obsługiwany przez Valeta. Podczas instalacji Valeta tworzony jest katalog ~/.config/valet/Drivers, który zawiera plik SampleValetDriver.php. Ten plik zawiera przykładową implementację sterownika, aby zademonstrować, jak napisać niestandardowy sterownik. Pisanie sterownika wymaga zaimplementowania tylko trzech metod: serves, isStaticFile i frontControllerPath.
Wszystkie trzy metody otrzymują wartości $sitePath, $siteName i $uri jako argumenty. $sitePath to w pełni kwalifikowana ścieżka do strony obsługiwanej na twoim komputerze, na przykład /Users/Lisa/Sites/my-project. $siteName to część "host" / "nazwa strony" domeny (my-project). $uri to przychodzący URI żądania (/foo/bar).
Po ukończeniu niestandardowego sterownika Valeta umieść go w katalogu ~/.config/valet/Drivers używając konwencji nazewnictwa FrameworkValetDriver.php. Na przykład, jeśli piszesz niestandardowy sterownik Valeta dla WordPressa, nazwa pliku powinna być WordPressValetDriver.php.
Przyjrzyjmy się przykładowej implementacji każdej metody, którą powinien implementować twój niestandardowy sterownik Valeta.
Metoda serves powinna zwrócić true, jeśli twój sterownik powinien obsłużyć przychodzące żądanie. W przeciwnym razie metoda powinna zwrócić false. Więc w tej metodzie powinieneś spróbować określić, czy podane $sitePath zawiera projekt typu, który próbujesz obsłużyć.
Na przykład, wyobraźmy sobie, że piszemy WordPressValetDriver. Nasza metoda serves może wyglądać mniej więcej tak:
/**
* Określ, czy sterownik obsługuje żądanie.
*/
public function serves(string $sitePath, string $siteName, string $uri): bool
{
return is_dir($sitePath.'/wp-admin');
}Metoda isStaticFile powinna określić, czy przychodzące żądanie dotyczy pliku, który jest "statyczny", takiego jak obraz lub arkusz stylów. Jeśli plik jest statyczny, metoda powinna zwrócić w pełni kwalifikowaną ścieżkę do pliku statycznego na dysku. Jeśli przychodzące żądanie nie dotyczy pliku statycznego, metoda powinna zwrócić false:
/**
* Określ, czy przychodzące żądanie dotyczy pliku statycznego.
*
* @return string|false
*/
public function isStaticFile(string $sitePath, string $siteName, string $uri)
{
if (file_exists($staticFilePath = $sitePath.'/public/'.$uri)) {
return $staticFilePath;
}
return false;
}Warning
Metoda isStaticFile zostanie wywołana tylko wtedy, gdy metoda serves zwraca true dla przychodzącego żądania i URI żądania nie jest /.
Metoda frontControllerPath powinna zwrócić w pełni rozwiązaną ścieżkę do "front controllera" aplikacji, który zazwyczaj jest plikiem "index.php" lub równoważnym:
/**
* Pobierz w pełni rozwiązaną ścieżkę do front controllera aplikacji.
*/
public function frontControllerPath(string $sitePath, string $siteName, string $uri): string
{
return $sitePath.'/public/index.php';
}Jeśli chcesz zdefiniować niestandardowy sterownik Valeta dla pojedynczej aplikacji, utwórz plik LocalValetDriver.php w katalogu głównym aplikacji. Twój niestandardowy sterownik może rozszerzać bazową klasę ValetDriver lub rozszerzać istniejący sterownik specyficzny dla aplikacji, taki jak LaravelValetDriver:
use Valet\Drivers\LaravelValetDriver;
class LocalValetDriver extends LaravelValetDriver
{
/**
* Określ, czy sterownik obsługuje żądanie.
*/
public function serves(string $sitePath, string $siteName, string $uri): bool
{
return true;
}
/**
* Pobierz w pełni rozwiązaną ścieżkę do front controllera aplikacji.
*/
public function frontControllerPath(string $sitePath, string $siteName, string $uri): string
{
return $sitePath.'/public_html/index.php';
}
}| Komenda | Opis |
|---|---|
valet list |
Wyświetl listę wszystkich komend Valeta. |
valet diagnose |
Wyprowadź diagnostykę w celu wspomagania debugowania Valeta. |
valet directory-listing |
Określ zachowanie listowania katalogów. Domyślnie "off", który renderuje stronę 404 dla katalogów. |
valet forget |
Uruchom tę komendę z "zaparkowanego" katalogu, aby usunąć go z listy zaparkowanych katalogów. |
valet log |
Wyświetl listę logów zapisanych przez usługi Valeta. |
valet paths |
Wyświetl wszystkie twoje "zaparkowane" ścieżki. |
valet restart |
Uruchom ponownie demony Valeta. |
valet start |
Uruchom demony Valeta. |
valet stop |
Zatrzymaj demony Valeta. |
valet trust |
Dodaj pliki sudoers dla Brew i Valeta, aby umożliwić uruchamianie komend Valeta bez monitowania o hasło. |
valet uninstall |
Odinstaluj Valeta: pokaż instrukcje ręcznej dezinstalacji. Przekaz opcję --force, aby agresywnie usunąć wszystkie zasoby Valeta. |
Następujące informacje o katalogach i plikach mogą być pomocne podczas rozwiązywania problemów z środowiskiem Valeta:
Zawiera całą konfigurację Valeta. Możesz chcieć zachować kopię zapasową tego katalogu.
Ten katalog zawiera konfigurację DNSMasq.
Ten katalog zawiera sterowniki Valeta. Sterowniki określają, jak obsługiwany jest określony framework / CMS.
Ten katalog zawiera wszystkie konfiguracje stron Nginx Valeta. Te pliki są przebudowywane podczas uruchamiania komend install i secure.
Ten katalog zawiera wszystkie dowiązania symboliczne dla twoich połączonych projektów.
Ten plik jest głównym plikiem konfiguracyjnym Valeta.
Ten plik to gniazdo PHP-FPM używane przez instalację Nginx Valeta. Będzie istnieć tylko wtedy, gdy PHP działa prawidłowo.
Ten plik to log użytkownika dla błędów PHP.
Ten plik to log użytkownika dla błędów Nginx.
Ten plik to log systemowy dla błędów PHP-FPM.
Ten katalog zawiera logi dostępu i błędów Nginx.
Ten katalog zawiera pliki *.ini dla różnych ustawień konfiguracyjnych PHP.
Ten plik to plik konfiguracyjny puli PHP-FPM.
Ten plik to domyślna konfiguracja Nginx używana do budowania certyfikatów SSL dla twoich stron.
Od macOS 10.14, dostęp do niektórych plików i katalogów jest domyślnie ograniczony. Te ograniczenia obejmują katalogi Desktop, Documents i Downloads. Ponadto dostęp do wolumenów sieciowych i wolumenów wymiennych jest ograniczony. Dlatego Valet zaleca, aby foldery stron były zlokalizowane poza tymi chronionymi lokalizacjami.
Jednak jeśli chcesz obsługiwać strony z jedną z tych lokalizacji, będziesz musiał nadać Nginx "Pełny dostęp do dysku". W przeciwnym razie możesz napotkać błędy serwera lub inne nieprzewidywalne zachowanie Nginx, zwłaszcza podczas obsługi zasobów statycznych. Zazwyczaj macOS automatycznie poprosi cię o przyznanie Nginx pełnego dostępu do tych lokalizacji. Lub możesz to zrobić ręcznie poprzez System Preferences > Security & Privacy > Privacy i wybranie Full Disk Access. Następnie włącz wszystkie wpisy nginx w głównym panelu okna.