Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku pokazano, jak utworzyć bezpieczną aplikację PHP w usłudze Azure App Service, łączącą się z bazą danych MySQL (przy użyciu elastycznego serwera usługi Azure Database for MySQL). Wdrożysz również usługę Azure Cache for Redis, aby włączyć kod buforowania w aplikacji. Azure App Service to wysoce skalowalna, samodzielnie aktualizująca się usługa hostingu aplikacji, która może łatwo wdrażać aplikacje w systemie Windows lub Linux. Po zakończeniu będziesz mieć aplikację Laravel działającą na Azure App Service w systemie Linux.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Jeśli nie masz konta platformy Azure, możesz go utworzyć bezpłatnie.
- Konto usługi GitHub. Możesz również uzyskać jeden za darmo.
- Znajomość języka PHP z programowaniem w usłudze Laravel.
- (Opcjonalnie) Aby wypróbować narzędzie GitHub Copilot, potrzebujesz konta GitHub Copilot. Dostępna jest 30-dniowa bezpłatna wersja próbna.
1 — Uruchamianie przykładu
Najpierw należy skonfigurować przykładową aplikację opartą na danych jako punkt wyjścia. Dla wygody przykładowe repozytorium zawiera konfigurację kontenera deweloperskiego . Kontener deweloperski ma wszystko, czego potrzebujesz, aby opracować aplikację, w tym bazę danych, pamięć podręczną i wszystkie zmienne środowiskowe wymagane przez przykładową aplikację. Kontener deweloperski może działać w usłudze GitHub codespace, co oznacza, że można uruchomić przykład na dowolnym komputerze z przeglądarką internetową.
Krok 1. W nowym oknie przeglądarki:
- Zaloguj się na istniejącym koncie GitHub.
- Przejdź do https://github.com/Azure-Samples/laravel-tasks/fork.
- Wybierz pozycję Utwórz fork.
Krok 2: W forku GitHub:
- Wybierz Code>Utwórz przestrzeń kodu na głównej gałęzi.
Skonfigurowanie przestrzeni kodu zajmuje kilka minut. Ponadto podany plik env zawiera już fikcyjną
APP_KEY
zmienną, którą usługa Laravel musi uruchomić lokalnie.
Krok 3. W terminalu usługi Codespace:
- Uruchom program
composer install
. - Uruchom migracje bazy danych za pomocą polecenia
php artisan migrate
. - Uruchom aplikację za pomocą polecenia
php artisan serve
. - Po wyświetleniu powiadomienia
Your application running on port 80 is available.
wybierz pozycję Otwórz w przeglądarce. Przykładowa aplikacja powinna być widoczna na nowej karcie przeglądarki. Aby zatrzymać aplikację, wpiszCtrl
+C
.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
2 — Tworzenie usługi App Service, bazy danych i pamięci podręcznej
W tym kroku utworzysz zasoby platformy Azure. Kroki użyte w tym samouczku umożliwiają utworzenie zestawu bezpiecznych domyślnie zasobów obejmujących usługę App Service, usługę Azure Database for MySQL i usługę Azure Cache for Redis. W przypadku procesu tworzenia należy określić:
- Nazwa aplikacji internetowej. Jest ona używana jako część nazwy DNS dla aplikacji.
- Region do fizycznego uruchamiania aplikacji na świecie. Jest ona również używana jako część nazwy DNS aplikacji.
- Stos uruchomieniowy dla aplikacji. W tym miejscu wybierasz wersję języka PHP, która ma być używana dla aplikacji.
- Plan hostingu aplikacji. Jest to warstwa cenowa obejmująca zestaw funkcji i pojemność skalowania aplikacji.
- Grupa zasobów dla aplikacji. Grupa zasobów umożliwia grupowanie (w kontenerze logicznym) wszystkich zasobów platformy Azure potrzebnych dla aplikacji.
Zaloguj się do portalu Azure i wykonaj następujące kroki, aby utworzyć zasoby Azure App Service.
Krok 1. W witrynie Azure Portal:
- Na górnym pasku wyszukiwania wpisz app service.
- Wybierz element oznaczony etykietą App Service pod nagłówkiem Usługi .
- Wybierz pozycję Utwórz>aplikację internetową. Możesz również przejść bezpośrednio do kreatora tworzenia.
Krok 2. Na stronie Tworzenie aplikacji internetowej wypełnij formularz w następujący sposób.
- Nazwa: msdocs-laravel-mysql-XYZ. Zostanie wygenerowana grupa zasobów o nazwie msdocs-laravel-mysql-XYZ_group .
- Stos uruchomieniowy: PHP 8.4.
- System operacyjny: Linux.
- Region: dowolny region świadczenia usługi Azure blisko Ciebie.
- Plan systemu Linux: utwórz nowy i użyj nazwy msdocs-laravel-mysql-XYZ.
- Plan cenowy: Podstawowy. Gdy wszystko będzie gotowe, możesz skalować w górę do innej warstwy cenowej.
Krok 3:
- Wybierz kartę Baza danych .
- Wybierz pozycję Utwórz bazę danych.
- W Silniku wybierz MySQL - Flexible Server.
- Wybierz Utwórz Azure Cache for Redis.
- W polu Nazwa (w obszarze Pamięć podręczna) wprowadź nazwę pamięci podręcznej.
- W SKU wybierz Podstawowa.
Krok 4:
- Wybierz kartę Wdrożenie .
- Włącz ciągłe wdrażanie.
- W obszarze Organizacja wybierz alias usługi GitHub.
- W obszarze Repozytorium wybierz pozycję laravel-tasks.
- W sekcji Gałąź wybierz main.
- Upewnij się, że uwierzytelnianie podstawowe jest wyłączone.
- Wybierz Przejrzyj i utwórz.
- Po zakończeniu walidacji wybierz pozycję Utwórz.
Krok 5: Ukończenie wdrożenia trwa kilka minut. Po zakończeniu wdrażania wybierz przycisk Przejdź do zasobu . Jesteś przekierowany bezpośrednio do aplikacji usługi App Service, ale tworzone są następujące zasoby:
- Grupa zasobów: kontener dla wszystkich utworzonych zasobów.
- Plan usługi App Service: definiuje zasoby obliczeniowe dla usługi App Service. Utworzono plan systemu Linux w warstwie Podstawowa.
- App Service: reprezentuje aplikację i działa w planie usługi App Service.
- Sieć wirtualna: zintegrowana z aplikacją usługi App Service i izoluje ruch sieciowy zaplecza.
- Prywatne punkty końcowe: punkty końcowe dostępu dla serwera bazy danych i pamięci podręcznej Redis w sieci wirtualnej.
- Interfejsy sieciowe: reprezentuje prywatne adresy IP, po jednym dla każdego z prywatnych punktów końcowych.
- Serwer elastyczny usługi Azure Database for MySQL: dostępny tylko zza jego prywatnego punktu końcowego. Baza danych i użytkownik są tworzone dla Ciebie na serwerze.
- Azure Cache for Redis: dostępna tylko z prywatnego punktu końcowego.
- Prywatne strefy DNS: Umożliwiają rozpoznawanie nazw DNS serwera bazy danych i pamięci podręcznej Redis w sieci wirtualnej.
3 — Zabezpieczanie tajnych informacji połączenia
Kreator tworzenia już wygenerował zmienne łączności jako ustawienia aplikacji. Jednak najlepszą praktyką w zakresie zabezpieczeń jest całkowite unikanie przechowywania tajemnic w usłudze App Service. Przeniesiesz swoje tajne dane do magazynu kluczy i zmienisz ustawienie aplikacji na odwołania do magazynu kluczy Key Vault przy użyciu łączników serwisowych.
Krok 1. Pobieranie istniejącej parametry połączenia
- W menu po lewej stronie usługi App Service wybierz pozycję Ustawienia > Zmienne środowiskowe.
- Wybierz pozycję Parametry połączenia.
- Wybierz AZURE_MYSQL_CONNECTIONSTRING.
- W ustawieniu Dodaj/Edytuj aplikację w polu Wartość skopiuj nazwę użytkownika i hasło do użycia później. Łańcuch połączenia umożliwia nawiązanie połączenia z bazą danych MySQL zabezpieczoną za prywatnymi punktami końcowymi. Wpisy tajne są jednak zapisywane bezpośrednio w aplikacji usługi App Service, co nie jest najlepsze. Zmienisz to.
Krok 2: Utwórz magazyn kluczy na potrzeby bezpiecznego zarządzania tajemnicami
- Na górnym pasku wyszukiwania wpisz "key vault", a następnie wybierz Marketplace>Key Vault.
- W obszarze Grupa zasobów wybierz pozycję msdocs-laravel-mysql-XYZ_group.
- W Nazwa magazynu kluczy wpisz nazwę składającą się tylko z liter i cyfr.
- W regionie, ustaw taką samą lokalizację jak grupa zasobów.
Krok 3: Zabezpiecz magazyn kluczy za pomocą prywatnego punktu końcowego
- Wybierz kartę Sieć.
- Usuń zaznaczenie pozycji Włącz dostęp publiczny.
- Wybierz pozycję Utwórz prywatny punkt końcowy.
- W obszarze Grupa zasobów wybierz pozycję msdocs-laravel-mysql-XYZ_group.
- W oknie dialogowym w polu Lokalizacja wybierz tę samą lokalizację co aplikacja usługi App Service.
- W polu Nazwa wpisz msdocs-laravel-mysql-XYZVaultEndpoint.
- W obszarze Sieć wirtualna wybierz sieć wirtualną w grupie msdocs-laravel-mysql-XYZ_group .
- W obszarze Podsieć wybierz dostępną zgodną podsieć. Kreator aplikacji internetowej utworzył go dla Twojej wygody.
- Wybierz przycisk OK.
- Wybierz pozycję Przeglądanie i tworzenie, a następnie wybierz pozycję Utwórz. Poczekaj na zakończenie wdrożenia skarbca kluczy. Powinien zostać wyświetlony komunikat "Wdrożenie zostało ukończone".
Krok 4. Tworzenie łącznika MySQL
- Na górnym pasku wyszukiwania wpisz msdocs-laravel-mysql, a następnie wybierz zasób usługi App Service o nazwie msdocs-laravel-mysql-XYZ.
- Na stronie App Service w menu po lewej stronie wybierz pozycję Ustawienia > Konektor serwisowy.
- Wybierz Utwórz.
- W polu Typ usługi wybierz pozycję BAZA danych dla serwera elastycznego MySQL.
- W przypadku serwera elastycznego MySQL wybierz serwer (na przykład msdocs-laravel-mysql-235-server).
- W przypadku bazy danych MySQL wybierz bazę danych (na przykład msdocs-laravel-mysql-235-database).
Krok 5. Konfigurowanie uwierzytelniania dla łącznika MySQL
- Wybierz kartę Uwierzytelnianie.
- Wybierz Ciąg połączenia.
- W polu Hasło wklej skopiowane wcześniej hasło.
- Wybierz Zapisz sekret w Key Vault.
- W obszarze Połączenie z usługą Key Vault wybierz pozycję Utwórz nową. Okno dialogowe Tworzenie połączenia jest otwierane w górnej części okna dialogowego edycji.
Krok 6. Ustanawianie połączenia z usługą Key Vault
- W oknie dialogowym Tworzenie połączenia dla połączenia Key Vault, w Key Vault dokonaj wyboru utworzonego wcześniej magazynu kluczy.
- Wybierz Przejrzyj i utwórz.
- Po zakończeniu walidacji wybierz pozycję Utwórz.
Krok 6. Finalizowanie ustawień łącznika MySQL
- Wrócisz do okna dialogowego łącznika MySQL. Na karcie Uwierzytelnianie poczekaj, aż łącznik magazynu kluczy zostanie utworzony. Po zakończeniu lista rozwijana Połączenie usługi Key Vault zostanie automatycznie wybrana.
- Wybierz Przejrzyj i utwórz.
- Wybierz Utwórz. Zaczekaj na wyświetlenie powiadomienia Aktualizacja powiodła się .
Krok 7: Skonfiguruj łącznik Redis, aby używać tajemnic Key Vault
- Na stronie Łączniki usługi zaznacz pole wyboru obok łącznika Redis Cache, a następnie wybierz pozycję Edytuj.
- Wybierz kartę Uwierzytelnianie.
- Wybierz Zapisz sekret w Key Vault.
- W obszarze Połączenie z usługą Key Vault wybierz utworzony magazyn kluczy.
- Wybierz pozycję Dalej: Sieć.
- Wybierz pozycję Konfiguruj reguły zapory, aby włączyć dostęp do usługi docelowej. Kreator tworzenia aplikacji zabezpieczył już bazę danych SQL przy użyciu prywatnego punktu końcowego.
- Wybierz pozycję Zapisz. Zaczekaj na wyświetlenie powiadomienia Aktualizacja powiodła się .
Krok 8. Weryfikowanie integracji z usługą Key Vault
- W menu po lewej stronie ponownie wybierz pozycję Ustawienia > Zmienne środowiskowe .
- Obok pozycji AZURE_MYSQL_PASSWORD wybierz pozycję Pokaż wartość. Wartość powinna wynosić
@Microsoft.KeyVault(...)
, co oznacza, że jest to odwołanie do magazynu kluczy, ponieważ wpis tajny jest teraz zarządzany w magazynie kluczy. - Aby zweryfikować ciąg połączenia Redis, wybierz Pokaż wartość obok AZURE_REDIS_CONNECTIONSTRING.
Podsumowując, proces zabezpieczania tajnych informacji o połączeniu obejmował:
- Pobieranie danych poufnych dotyczących połączenia ze zmiennych środowiskowych aplikacji usługi App Service.
- Tworzenie magazynu kluczy.
- Tworzenie połączenia usługi Key Vault z tożsamością zarządzaną przypisaną przez system.
- Aktualizowanie łączników usługi w celu przechowywania sekretów w magazynie kluczy.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
4 — Konfigurowanie zmiennych Platformy Laravel
Krok 1: Utwórz CACHE_DRIVER
jako ustawienie aplikacji.
- Na karcie Ustawienia aplikacji wybierz pozycję Dodaj.
- W polu Nazwa wprowadź CACHE_DRIVER.
- W polu Wartość wprowadź wartość redis.
- Wybierz pozycję Zastosuj, a następnie ponownie zastosuj , a następnie potwierdź.
Krok 2. Korzystając z tych samych kroków w kroku 1, utwórz następujące ustawienia aplikacji:
- MYSQL_ATTR_SSL_CA: użyj /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem jako wartości. To ustawienie aplikacji wskazuje ścieżkę certyfikatu TLS/SSL potrzebnego do uzyskania dostępu do serwera MySQL. Jest on dołączony do przykładowego repozytorium dla wygody.
- LOG_CHANNEL: użyj stderr jako wartości. To ustawienie instruuje Laravel, aby przekierował dzienniki do stderr, co umożliwia ich dostępność w dziennikach usługi App Service.
- APP_DEBUG: użyj wartości 'true'. Jest to zmienna debugowania Laravel, która umożliwia włączanie stron w trybie debugowania.
- APP_KEY: użyj wartości base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw=. Jest to zmienna szyfrowania Laravel.
Ważne
Wartość APP_KEY
jest używana tutaj dla wygody. W przypadku scenariuszy produkcyjnych należy go wygenerować specjalnie dla wdrożenia przy użyciu polecenia php artisan key:generate --show
w wierszu poleceń.
APP_KEY
W idealnym przypadku ustawienie aplikacji powinno być również skonfigurowane jako odwołanie do magazynu kluczy, co jest procesem wieloetapowym. Aby uzyskać więcej informacji, zobacz Jak zmienić ustawienie aplikacji APP_KEY na odwołanie do usługi Key Vault?
5 — Wdrażanie przykładowego kodu
W tym kroku skonfigurujesz wdrożenie usługi GitHub przy użyciu funkcji GitHub Actions. Jest to tylko jeden z wielu sposobów wdrażania w usłudze App Service, ale także doskonały sposób umożliwiający ciągłą integrację w ramach procesu wdrażania. Domyślnie każde git push
do twojego repozytorium GitHub uruchamia akcję kompilacji i wdrażania.
Krok 1: Wróć do codespace GitHub swojego przykładowego forka i uruchom polecenie git pull origin main
.
Spowoduje to pobranie nowo zatwierdzonego pliku przepływu pracy do twojej przestrzeni kodu.
Krok 2 (opcja 1: z rozwiązaniem GitHub Copilot):
- Rozpocznij nową sesję czatu, wybierając widok Czat, a następnie +.
- Zapytaj: "@workspace Jak aplikacja łączy się z bazą danych i usługą Redis?". Copilot może wyjaśnić, jak ustawienia są skonfigurowane w konfiguracji/database.php.
- Zapytaj: "@workspace W trybie produkcyjnym moja aplikacja działa w usłudze App Service, która używa Azure Service Connector do łączenia się z elastycznym serwerem MySQL. Jakie są nazwy zmiennych środowiskowych, których muszę użyć?" Copilot może zasugerować kod podobny do tego w opcja 2: bez GitHub Copilot, a nawet polecić dokonanie zmiany w pliku config/database.php.
- Otwórz plik config/database.php w eksploratorze i dodaj sugestię kodu.
- Zapytaj: "@workspace Moja aplikacja usługi App Service używa również łącznika usługi Azure Service do nawiązywania połączenia z usługą Cache for Redis przy użyciu typu klienta Django. Jakie są nazwy zmiennych środowiskowych, których muszę użyć?*" Copilot może przekazać sugestię kodu podobną do tej w opcji 2: bez narzędzia GitHub Copilot i nawet powie Ci, aby wprowadzić zmianę w pliku config/database.php. Jeśli zostanie wyświetlony monit, zaloguj się do narzędzia GitHub Copilot dla platformy Azure, aby uzyskać dokładniejsze odpowiedzi.
- Dodaj sugestię kodu. Narzędzie GitHub Copilot nie daje tej samej odpowiedzi za każdym razem i nie zawsze jest poprawne. Może być konieczne zadawanie większej liczby pytań, aby dostosować jego odpowiedź. Aby uzyskać porady, zobacz Co mogę zrobić z usługą GitHub Copilot w mojej przestrzeni kodu?.
Krok 2 (opcja 2: bez narzędzia GitHub Copilot):
- Otwórz plik config/database.php w eksploratorze. Znajdź sekcję
mysql
i wprowadź następujące zmiany: - Zastąp
DB_HOST
w wierszu 49 naAZURE_MYSQL_HOST
. - Zastąp
DB_DATABASE
(wiersz 51)AZURE_MYSQL_DBNAME
. - Zastąp
DB_USERNAME
(wiersz 52) naAZURE_MYSQL_USERNAME
. - Zastąp
DB_PASSWORD
(wiersz 53) naAZURE_MYSQL_PASSWORD
. - Zastąp
DB_PORT
naAZURE_MYSQL_PORT
w wierszu 50. - Przewiń do sekcji Redis
cache
i wprowadź następujące zmiany: - Zastąp
REDIS_HOST
tekst (linia 142) tekstemAZURE_REDIS_HOST
. - Zastąp
REDIS_PASSWORD
(wiersz 144) naAZURE_REDIS_PASSWORD
. - Zastąp
REDIS_PORT
(wiersz 145) naAZURE_REDIS_PORT
. - Zastąp
REDIS_CACHE_DB
ciąg (wiersz 146) ciągiemAZURE_REDIS_DATABASE
. - W tej samej sekcji dodaj wiersz za pomocą
'scheme' => 'tls',
. Ta konfiguracja informuje platformę Laravel o użyciu szyfrowania w celu nawiązania połączenia z usługą Redis.
Krok 3:
- Wybierz rozszerzenie Kontrola źródła.
- W polu tekstowym wpisz komunikat zatwierdzenia, taki jak
Configure Azure database and cache connections
. Możesz też wybraći zezwolić usłudze GitHub Copilot na wygenerowanie komunikatu zatwierdzenia.
- Wybierz pozycję Zatwierdź, a następnie potwierdź wartość Tak.
- Wybierz pozycję Synchronizuj zmiany 1, a następnie potwierdź przy użyciu przycisku OK.
Krok 4: Wróć do strony Centrum wdrażania w witrynie Azure Portal:
- Wybierz kartę Dzienniki , a następnie wybierz pozycję Odśwież , aby wyświetlić nowe uruchomienie wdrożenia.
- W dzienniku dla uruchomienia wdrażania wybierz wpis 'Dzienniki budowania/wdrażania' z najnowszym znacznikiem czasu.
Krok 5: Zostaniesz przeniesiony/a do swojego repozytorium GitHub i zobaczysz, że ta akcja GitHub jest uruchomiona. Plik przepływu pracy definiuje dwa oddzielne etapy, kompilowanie i wdrażanie. Poczekaj na uruchomienie usługi GitHub, aby wyświetlić stan Powodzenie. Trwa to około 10 minut.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
6 — Generowanie schematu bazy danych
Asystent konfiguracji umieszcza serwer bazy danych MySQL za prywatnym punktem końcowym, więc jest dostępny tylko z sieci wirtualnej. Ponieważ aplikacja usługi App Service jest już zintegrowana z siecią wirtualną, najprostszym sposobem uruchamiania migracji baz danych z bazą danych jest bezpośrednio z poziomu kontenera usługi App Service.
Krok 1. Powrót na stronę usługi App Service w menu po lewej stronie
- Wybierz Narzędzia deweloperskie>SSH.
- Wybierz Idź.
Krok 2. W terminalu SSH:
- Uruchom program
cd /home/site/wwwroot
. Oto wszystkie wdrożone pliki. - Uruchom program
php artisan migrate --force
. Jeśli to się powiedzie, usługa App Service łączy się pomyślnie z bazą danych MySQL.
Napiwek
W sesji SSH tylko zmiany w plikach w /home
mogą być zachowane po ponownym uruchomieniu aplikacji. Zmiany poza elementem /home
nie są utrwalane.
7 — Zmień katalog główny strony
Zamiast tego cykl życia aplikacji Laravel rozpoczyna się w katalogu /public . Domyślny kontener PHP dla usługi App Service używa serwera Nginx, który rozpoczyna się w katalogu głównym aplikacji. Aby zmienić katalog główny witryny, musisz zmienić plik konfiguracji Nginx w kontenerze PHP (/etc/nginx/sites-available/default). Dla wygody przykładowe repozytorium zawiera niestandardowy plik konfiguracji o nazwie default. Jak wspomniano wcześniej, nie chcesz zastępować tego pliku przy użyciu powłoki SSH, ponieważ zmiana jest poza /home
i zostanie utracona po ponownym uruchomieniu aplikacji.
Krok 1.
- W menu po lewej stronie wybierz pozycję Konfiguracja.
- Wybierz kartę Ustawienia Ogólne.
Krok 2. Na karcie Ustawienia ogólne:
W polu Komenda startowa wprowadź następujące polecenie:cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload .- Wybierz pozycję Zapisz, a następnie wybierz pozycję Kontynuuj. Polecenie zastępuje plik konfiguracji Nginx w kontenerze PHP i uruchamia ponownie serwer Nginx. Ta konfiguracja gwarantuje, że ta sama zmiana zostanie wprowadzona do kontenera przy każdym uruchomieniu.
8 — Przechodzenie do aplikacji
Krok 1. Na stronie usługi App Service:
- W menu po lewej stronie wybierz pozycję Przegląd.
- Wybierz domenę domyślną aplikacji.
Krok 2. Dodaj kilka zadań do listy. Gratulacje, uruchamiasz bezpieczną aplikację PHP z danymi w usłudze App Service w Azure.
Napiwek
Przykładowa aplikacja implementuje wzorzec "cache-aside". Po ponownym załadowaniu strony po wprowadzeniu zmian danych czas odpowiedzi na stronie internetowej jest znacznie szybszy, ponieważ ładuje dane z pamięci podręcznej zamiast bazy danych.
9 — Przesyłanie strumieniowe logów diagnostycznych
Usługa aplikacji Azure przechwytuje wszystkie komunikaty zarejestrowane w konsoli, dzięki czemu łatwiej jest diagnozować problemy z aplikacją. Przykładowa aplikacja generuje komunikaty dziennika konsoli w każdym z jego punktów końcowych, aby zademonstrować tę funkcję. Domyślnie funkcja rejestrowania platformy Laravel (na przykład Log::info()
) zwraca dane wyjściowe do pliku lokalnego. Twoje wcześniejsze ustawienie LOG_CHANNEL
aplikacji sprawia, że wpisy dziennika są dostępne ze strumienia dziennika usługi App Service.
Krok 1. Na stronie usługi App Service:
- W menu po lewej stronie wybierz pozycję Dzienniki usługi App Service.
- W obszarze Rejestrowanie aplikacji wybierz pozycję System plików.
Krok 2: Z menu po lewej stronie wybierz Strumień dziennika. Zobaczysz dzienniki aplikacji, w tym dzienniki platformy i dzienniki z wewnątrz kontenera.
Czyszczenie zasobów
Po zakończeniu możesz usunąć wszystkie zasoby z subskrypcji platformy Azure, usuwając grupę zasobów.
Krok 1. Na pasku wyszukiwania w górnej części witryny Azure Portal:
- Wpisz nazwę grupy zasobów.
- Wybierz odpowiednią grupę zasobów.
Krok 2. Na stronie grupy zasobów wybierz pozycję Usuń grupę zasobów.
Krok 3:
- Wprowadź nazwę grupy zasobów, aby potwierdzić usunięcie.
- Wybierz Usuń.
2. Tworzenie zasobów platformy Azure i wdrażanie przykładowej aplikacji
W tym kroku utworzysz zasoby platformy Azure i wdrożysz przykładową aplikację w celu App Service dla systemu Linux. Kroki używane w tym samouczku umożliwiają utworzenie zestawu bezpiecznych domyślnie zasobów obejmujących usługi App Service i usługę Azure Database for MySQL.
Usługa GitHub Codespace ma już interfejs wiersza polecenia dla deweloperów platformy Azure (AZD).
Wygeneruj klucz szyfrowania platformy Laravel za pomocą polecenia
php artisan key:generate --show
:php artisan key:generate --show
Zaloguj się do platformy Azure, uruchamiając polecenie
azd auth login
i postępując zgodnie z instrukcjami.azd auth login
Utwórz niezbędne zasoby platformy Azure i wdróż kod aplikacji przy użyciu polecenia
azd up
. Postępuj zgodnie z monitem, aby wybrać żądaną subskrypcję i lokalizację zasobów platformy Azure.azd up
Po wyświetleniu monitu podaj następujące odpowiedzi:
Pytanie Odpowiedź Wprowadź nową nazwę środowiska Wpisz unikatową nazwę. Szablon AZD używa tej nazwy jako części nazwy DNS aplikacji internetowej na platformie Azure ( <app-name>-<hash>.azurewebsites.net
). Znaki alfanumeryczne i łączniki są dozwolone.Wybieranie subskrypcji platformy Azure do użycia Wybierz swoją subskrypcję. Wybieranie lokalizacji platformy Azure do użycia Wybierz lokalizację. Wprowadź wartość dla zabezpieczonego parametru infrastruktury "appKey" Użyj tutaj danych wyjściowych php artisan key:generate --show
. Szablon AZD tworzy tajny klucz Key Vault dla tej aplikacji, którego można użyć w aplikacji.Wprowadź wartość dla zabezpieczonego parametru infrastruktury "databasePassword" Hasło bazy danych dla bazy danych MySQL. Musi zawierać co najmniej 8 znaków i zawierać wielkie litery, małe litery, cyfry i znaki specjalne. Wykonanie polecenia
azd up
trwa około 15 minut (najwięcej czasu zajmuje pamięć podręczna Redis). Kompiluje również i wdraża kod aplikacji, ale kod można zmodyfikować później w celu pracy z usługą App Service. Gdy jest uruchomiona, polecenie udostępnia komunikaty dotyczące procesu aprowizacji i wdrażania, w tym link do wdrożenia na platformie Azure. Po zakończeniu polecenie wyświetli również link do aplikacji wdrażania.Ten szablon AZD zawiera pliki (azure.yaml i katalog infra ), które generują domyślną architekturę secure-by-default z następującymi zasobami platformy Azure:
- Grupa zasobów: kontener dla wszystkich utworzonych zasobów.
- Plan usługi App Service: definiuje zasoby obliczeniowe dla usługi App Service. Zostanie utworzony plan systemu Linux w warstwie B1 .
- App Service: reprezentuje aplikację i działa w planie usługi App Service.
- Sieć wirtualna: zintegrowana z aplikacją usługi App Service i izoluje ruch sieciowy zaplecza.
- Serwer elastyczny usługi Azure Database for MySQL: dostępny tylko z sieci wirtualnej za pośrednictwem integracji strefy DNS. Baza danych jest tworzona dla Ciebie na serwerze.
- Azure Cache for Redis: dostępne tylko z poziomu sieci wirtualnej.
- Prywatne punkty końcowe: Punkty końcowe dla magazynu kluczy i pamięci podręcznej Redis w sieci wirtualnej.
- Prywatne strefy DNS: Umożliwiają rozpoznawanie nazw DNS magazynu kluczy, serwera bazy danych i pamięci podręcznej Redis w sieci wirtualnej.
- Obszar roboczy usługi Log Analytics: działa jako kontener docelowy aplikacji w celu wysłania dzienników, gdzie można również wykonywać zapytania dotyczące dzienników.
- Magazyn kluczy: służy do zachowania niezmienionego hasła bazy danych podczas ponownego wdrażania przy użyciu AZD.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
3. Używanie parametrów połączenia platformy Azure w kodzie aplikacji
Szablon AZD wygenerował już dla Ciebie zmienne łączności jako ustawienia aplikacji i wyświetla je w terminalu dla Twojej wygody. Ustawienia aplikacji to jeden ze sposobów na trzymanie tajemnic połączenia z dala od repozytorium kodu.
W danych wyjściowych usługi AZD znajdź ustawienia aplikacji rozpoczynające się od
AZURE_MYSQL_
iAZURE_REDIS_
. Wyświetlane są tylko nazwy ustawień. Wyglądają one następująco w danych wyjściowych usługi AZD:App Service app has the following app settings: - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE - AZURE_MYSQL_DBNAME - AZURE_MYSQL_FLAG - AZURE_MYSQL_HOST - AZURE_MYSQL_PASSWORD - AZURE_MYSQL_PORT - AZURE_MYSQL_USERNAME - AZURE_REDIS_DATABASE - AZURE_REDIS_HOST - AZURE_REDIS_PASSWORD - AZURE_REDIS_PORT - AZURE_REDIS_SSL
Ustawienia rozpoczynające się od
AZURE_MYSQL_
to zmienne połączenia dla bazy danych MySQL, a ustawienia rozpoczynające się odAZURE_REDIS_
są przeznaczone dla pamięci podręcznej Redis. Należy używać ich w swoim kodzie później. Dla wygody szablon AZD wyświetla bezpośredni link do strony ustawień aplikacji w witrynie Azure Portal.W eksploratorze otwórz plik config/database.php. Jest to plik konfiguracji połączeń bazy danych i pamięci podręcznej Redis.
Znajdź część definiującą
mysql
połączenie (wiersze 46-64) i zastąpDB_HOST
,DB_PORT
,DB_DATABASE
,DB_USERNAME
iDB_PASSWORD
ustawieniamiAZURE_MYSQL_
aplikacji z danych wyjściowych usługi AZD. Połączeniemysql
powinno wyglądać podobnie do poniższego kodu.'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('AZURE_MYSQL_HOST', '127.0.0.1'), 'port' => env('AZURE_MYSQL_PORT', '3306'), 'database' => env('AZURE_MYSQL_DBNAME', 'forge'), 'username' => env('AZURE_MYSQL_USERNAME', 'forge'), 'password' => env('AZURE_MYSQL_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ],
Aby uzyskać więcej informacji na temat konfiguracji bazy danych w usłudze Laravel, zobacz dokumentację platformy Laravel.
Znajdź część definiującą połączenie pamięci podręcznej Redis (wiersze 140-147) i zastąp wartości
REDIS_HOST
,REDIS_PASSWORD
,REDIS_PORT
iREDIS_CACHE_DB
ustawieniami aplikacjiAzure_REDIS_
z danych wyjściowych usługi AZD. Ponadto dodaj'scheme' => 'tls',
do połączenia. Twoje połączenie z pamięcią podręczną powinno wyglądać jak poniższy kod:'cache' => [ 'scheme' => 'tls', 'url' => env('REDIS_URL'), 'host' => env('AZURE_REDIS_HOST', '127.0.0.1'), 'username' => env('REDIS_USERNAME'), 'password' => env('AZURE_REDIS_PASSWORD'), 'port' => env('AZURE_REDIS_PORT', '6379'), 'database' => env('AZURE_REDIS_DATABASE', '1'), ],
Aby uzyskać więcej informacji na temat konfiguracji pamięci podręcznej Redis w usłudze Laravel, zobacz dokumentację platformy Laravel.
Uwaga
Pamiętaj, że zmiany nie zostały jeszcze wdrożone. Zostaną one wdrożone na końcu następnego kroku.
4. Konfigurowanie ustawień platformy Laravel w aplikacji internetowej
W eksploratorze otwórz plik infra/resources.bicep. Jest to plik Bicep, który definiuje utworzone zasoby platformy Azure.
Znajdź część definiującą ustawienia aplikacji (wiersze 510-514) i odkomentuj je. Te ustawienia aplikacji to:
Ustawienie Opis CACHE_DRIVER
Informuje platformę Laravel o użyciu usługi Redis jako pamięci podręcznej (zobacz dokumentację platformy Laravel). MYSQL_ATTR_SSL_CA
Wymagane do otwarcia połączenia TLS z bazą danych MySQL na platformie Azure. Plik certyfikatu jest dołączony do przykładowego repozytorium dla wygody. Ta zmienna jest używana przez połączenie mysql w config/database.php LOG_CHANNEL
Informuje Laravel o przekierowaniu dzienników do stderr
, co umożliwia dostęp do nich w ramach dzienników App Service (zobacz dokumentację Laravel).APP_DEBUG
Włącz tryb debugowania w Laravel (zobacz dokumentację Laravel). APP_KEY
Zmienna szyfrowania Laravel. Szablon AZD utworzył już sekret w usłudze Key Vault (wiersze 212–217), aby uzyskać dostęp do niego za pomocą odwołania do Key Vault. W pliku infra/resources.bicep znajdź definicję zasobu dla aplikacji App Service i usuń komentarz z wiersza 315.
appCommandLine: 'cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload'
Cykl życia aplikacji Laravel rozpoczyna się w katalogu /public zamiast katalogu głównego aplikacji. Domyślny kontener PHP dla usługi App Service używa serwera Nginx, który rozpoczyna się w katalogu głównym aplikacji. Aby zmienić katalog główny witryny, musisz zmienić plik konfiguracji Nginx w kontenerze PHP (/etc/nginx/sites-available/default). Dla wygody przykładowe repozytorium zawiera zastępczy plik konfiguracji o nazwie default, który informuje serwer Nginx o zaglądaniu do katalogu /public . To niestandardowe polecenie w
appCommandLine
jest uruchamiane za każdym razem, gdy aplikacja uruchamia się, aby zastosować zamianę pliku za każdym razem, gdy kontener Linuxa zostanie ponownie załadowany ze stanu czystego.Wróć do terminalu usługi Codespace, ponownie uruchom polecenie
azd up
.azd up
Napiwek
azd up
uruchamia azd package
, azd provision
i azd deploy
razem, i ma to sens, ponieważ wprowadzasz zmiany zarówno w infrastrukturze, jak i w aplikacjach. Aby wprowadzić tylko zmiany infrastruktury, uruchom polecenie azd provision
. Aby po prostu wdrożyć zmiany w kodzie aplikacji, uruchom polecenie azd deploy
.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
5. Generowanie schematu bazy danych
W przypadku bazy danych MySQL chronionej przez sieć wirtualną najprostszym sposobem uruchamiania migracji baz danych Platformy Laravel jest sesja SSH z kontenerem systemu Linux w usłudze App Service.
W danych wyjściowych usługi AZD znajdź adres URL sesji SSH i przejdź do niego w przeglądarce. Wygląda na to w danych wyjściowych:
Open SSH session to App Service container at: <URL>
W sesji SSH uruchom migracje baz danych z katalogu /home/site/wwwroot :
cd /home/site/wwwroot php artisan migrate --force
Jeśli to się powiedzie, usługa App Service pomyślnie nawiązuje połączenie z bazą danych.
Uwaga
Tylko zmiany w plikach w /home
mogą przetrwać poza ponownymi uruchomieniami aplikacji.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
6. Przejdź do aplikacji
W danych wyjściowych usługi AZD znajdź adres URL aplikacji i przejdź do niej w przeglądarce. Adres URL wygląda następująco w danych wyjściowych usługi AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>
Dodaj kilka zadań do listy.
Gratulacje, uruchamiasz aplikację internetową w usłudze aplikacja systemu Azure z bezpieczną łącznością z usługą Azure Database for MySQL.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
7. Transmisja dzienników diagnostycznych
Usługa aplikacji Azure przechwytuje wszystkie komunikaty zarejestrowane w konsoli, dzięki czemu łatwiej jest diagnozować problemy z aplikacją. Dla wygody szablon AZD włączył już rejestrowanie w lokalnym systemie plików i wysyła dzienniki do obszaru roboczego usługi Log Analytics.
Przykładowa aplikacja generuje komunikaty dziennika konsoli w każdym z jego punktów końcowych, aby zademonstrować tę funkcję. Domyślnie funkcja rejestrowania platformy Laravel (na przykład Log::info()
) zwraca dane wyjściowe do pliku lokalnego. Twoje wcześniejsze ustawienie LOG_CHANNEL
aplikacji sprawia, że wpisy dziennika są dostępne ze strumienia dziennika usługi App Service.
Route::get('/', function () {
Log::info("Get /");
$startTime = microtime(true);
// Simple cache-aside logic
if (Cache::has('tasks')) {
$data = Cache::get('tasks');
} else {
$data = Task::orderBy('created_at', 'asc')->get();
Cache::add('tasks', $data);
}
return view('tasks', ['tasks' => $data, 'elapsed' => microtime(true) - $startTime]);
});
W danych wyjściowych usługi AZD znajdź link do strumieniowego przesyłania dzienników usługi App Service i przejdź do niego w przeglądarce. Link wygląda następująco w danych wyjściowych usługi AZD:
Stream App Service logs at: <URL>
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
8. Czyszczenie zasobów
Aby usunąć wszystkie zasoby platformy Azure w bieżącym środowisku wdrażania, uruchom polecenie azd down
i postępuj zgodnie z monitami.
azd down
Rozwiązywanie problemów
Otrzymuję błąd podczas migracji bazy danych php_network_getaddresses: getaddrinfo for mysqldb failed: No address associated with hostname...
Wskazuje, że zmienne połączenia MySQL nie są prawidłowo skonfigurowane. Sprawdź, czy AZURE_MYSQL_
ustawienia aplikacji są prawidłowo skonfigurowane w punkcie 3. Korzystaj z ciągów połączenia Azure w kodzie aplikacji.
Otrzymuję pustą stronę w przeglądarce.
Wskazuje, że usługa App Service nie może odnaleźć plików startowych PHP w /public. Wykonaj kroki opisane w sekcji 4. Konfigurowanie ustawień platformy Laravel w aplikacji internetowej.
Otrzymuję stronę debugowania w przeglądarce z informacją Unsupported cipher or incorrect key length.
Wskazuje, że APP_KEY
ustawienie jest ustawione na nieprawidłowy klucz. Upewnij się, że podczas uruchamiania azd up
ustawisz appKey
na wynik działania php artisan key:generate --show
.
Otrzymuję stronę debugowania w przeglądarce z informacją Uncaught Error: Class "Illuminate\..." not found.
Ten błąd i podobne błędy wskazują, że nie uruchomiono composer install
przed azd up
, lub że pakiety w katalogu /vendor są nieaktualne. Uruchom ponownie composer install
i azd deploy
.
Otrzymuję stronę debugowania w przeglądarce z informacją php_network_getaddresses: getaddrinfo for redishost failed: Name or service not known.
Wskazuje, że zmienne połączenia usługi Redis nie są prawidłowo skonfigurowane. Sprawdź, czy AZURE_REDIS_
ustawienia aplikacji są prawidłowo skonfigurowane w punkcie 3. Korzystaj z ciągów połączenia Azure w kodzie aplikacji.
Otrzymuję stronę debugowania w przeglądarce z informacją SQLSTATE[42S02]: Base table or view not found: 1146 Table 'XXXX-XXXXXXXXX-mysql-database.tasks' doesn't exist
Oznacza to, że migracje baz danych nie zostały uruchomione lub migracje baz danych nie powiodły się. Wykonaj kroki opisane na 5. Generowanie schematu bazy danych.
Często zadawane pytania
- Ile kosztuje ta konfiguracja?
- Jak mogę nawiązać połączenie z bazą danych MySQL zabezpieczoną za siecią wirtualną przy użyciu innych narzędzi?
- Jak zmienić ustawienie aplikacji APP_KEY na odwołanie do usługi Key Vault?
- W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?
- Dlaczego wdrożenie funkcji GitHub Actions jest tak powolne?
- Nie mam uprawnień do tworzenia tożsamości przypisanej przez użytkownika
- Co mogę zrobić za pomocą narzędzia GitHub Copilot w swojej przestrzeni kodu?
- Ile kosztuje ta konfiguracja?
- Jak mogę nawiązać połączenie z bazą danych MySQL zabezpieczoną za siecią wirtualną przy użyciu innych narzędzi?
- W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?
- Dlaczego wdrożenie funkcji GitHub Actions jest tak powolne?
- Nie mam uprawnień do tworzenia tożsamości przypisanej przez użytkownika
- Co mogę zrobić za pomocą narzędzia GitHub Copilot w swojej przestrzeni kodu?
Ile kosztuje ta konfiguracja?
Cennik utworzonych zasobów jest następujący:
- Plan usługi App Service jest tworzony w warstwie Podstawowa i można go skalować w górę lub w dół. Zobacz Cennik usługi App Service.
- Serwer elastyczny MySQL jest tworzony w warstwie B1ms i można go skalować w górę lub w dół. W przypadku bezpłatnego konta platformy Azure warstwa B1ms jest bezpłatna przez 12 miesięcy, do miesięcznych limitów. Zobacz Cennik usługi Azure Database for MySQL.
- Usługa Azure Cache for Redis jest tworzona w warstwie Podstawowej z minimalnym rozmiarem pamięci podręcznej. Z tą warstwą wiąże się niewielki koszt. Można ją skalować w górę do wyższych warstw wydajności w celu uzyskania wyższej dostępności, klastrowania i innych funkcji. Zobacz Cennik usługi Azure Cache for Redis.
- Sieci wirtualnej nie są pobierane żadne opłaty, chyba że skonfigurujesz dodatkowe funkcje, takie jak peering. Zobacz Cennik usługi Azure Virtual Network.
- Prywatna strefa DNS wiąże się z niewielką opłatą. Zobacz Cennik usługi Azure DNS.
Jak mogę nawiązać połączenie z bazą danych MySQL zabezpieczoną za siecią wirtualną przy użyciu innych narzędzi?
- Aby uzyskać podstawowy dostęp z poziomu narzędzia wiersza polecenia, można uruchomić
mysql
z poziomu terminalu SSH aplikacji. - Aby nawiązać połączenie z poziomu narzędzia klasycznego, takiego jak MySQL Workbench, maszyna musi znajdować się w sieci wirtualnej. Na przykład może to być maszyna wirtualna platformy Azure połączona z jedną z podsieci lub maszyna w sieci lokalnej, która ma połączenie sieci VPN typu lokacja-lokacja z siecią wirtualną platformy Azure.
- Usługę Azure Cloud Shell można również zintegrować z siecią wirtualną.
Jak zmienić ustawienie aplikacji APP_KEY na odwołanie do usługi Key Vault?
Na etapie portalu w kroku 4 — Konfigurowanie zmiennych Laravel, można zmienić APP_KEY
na odwołanie do Key Vault, uruchamiając następujące polecenia Azure CLI w przestrzeni kodowej GitHub.
# Change the following variables to match your environment
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
KEY_VAULT_NAME=<key-vault-name>
APP_SERVICE_NAME=<app-name>
SECRET_NAME=laravelAppKey
# Set the subscription ID
az account set --subscription $SUBSCRIPTION_ID
# Assign 'Key Vault Secrets Officer' role to your user at the scope of the key vault
az role assignment create \
--assignee $(az ad signed-in-user show --query id -o tsv) \
--role $(az role definition list --name "Key Vault Secrets Officer" --query "[].id" -o tsv) \
--scope $(az keyvault show --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
# Add the secret to the key vault
az keyvault secret set \
--vault-name $KEY_VAULT_NAME \
--name $SECRET_NAME \
--value $(php artisan key:generate --show)
# Add Key Vault reference to the App Service configuration
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP \
--name $APP_SERVICE_NAME \
--settings "APP_KEY=@Microsoft.KeyVault(SecretUri=https://$KEY_VAULT_NAME.vault.azure.net/secrets/$SECRET_NAME)"
Możesz również wykonać to samo w portalu. Aby uzyskać więcej informacji, zobacz:
W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?
Na przykład, pobierz automatycznie wygenerowany plik przepływu pracy z App Service, aby każdy git push
uruchomił nową kompilację i proces wdrożenia. Z lokalnego klonu repozytorium GitHub wprowadzasz żądane aktualizacje i wypychasz je do GitHub. Na przykład:
git add .
git commit -m "<some-message>"
git push origin main
Dlaczego wdrożenie funkcji GitHub Actions jest tak powolne?
Automatycznie wygenerowany plik przepływu pracy z usługi App Service definiuje proces budowania i następnie wdrażania, z uruchomieniem dwóch zadań. Ponieważ każde zadanie jest uruchamiane we własnym czystym środowisku, plik przepływu pracy zapewnia, że zadanie deploy
ma dostęp do plików z zadania build
.
- Na końcu
build
zadania prześlij pliki jako artefakty. - Na początku realizacji
deploy
zadania pobierz artefakty.
Większość czasu w procesie dwóch zadań jest poświęcana na ładowanie i pobieranie artefaktów. Jeśli chcesz, możesz uprościć plik przepływu pracy, łącząc dwa zadania w jedno, co eliminuje konieczność kroków przesyłania i pobierania.
Nie mam uprawnień do tworzenia tożsamości przypisanej przez użytkownika
Zobacz Konfigurowanie wdrożenia GitHub Actions z Centrum wdrażania.
Co mogę zrobić za pomocą narzędzia GitHub Copilot w swojej przestrzeni kodu?
Możliwe, że już zauważyłeś, że widok czatu GitHub Copilot był dostępny w momencie tworzenia codespace'u. Dla Twojej wygody dołączamy rozszerzenie czatu Copilot w usłudze GitHub w definicji kontenera (zobacz .devcontainer/devcontainer.json). Potrzebujesz jednak konta GitHub Copilot (dostępna jest 30-dniowa bezpłatna wersja próbna).
Kilka wskazówek dotyczących rozmowy z usługą GitHub Copilot:
- W jednej sesji czatu pytania i odpowiedzi opierają się na sobie nawzajem, a ty możesz dopracować swoje pytania, aby uściślić uzyskaną odpowiedź.
- Domyślnie narzędzie GitHub Copilot nie ma dostępu do żadnego pliku w repozytorium. Aby zadać pytania dotyczące pliku, najpierw otwórz plik w edytorze.
- Aby umożliwić usłudze GitHub Copilot dostęp do wszystkich plików w repozytorium podczas przygotowywania odpowiedzi, zacznij od pytania
@workspace
. Aby uzyskać więcej informacji, zobacz Use the @workspace agent. - W sesji czatu narzędzie GitHub Copilot może sugerować zmiany i (z
@workspace
) nawet wskazać, gdzie wprowadzić zmiany, ale nie jest dozwolone wprowadzanie ich za Ciebie. Wystarczy dodać sugerowane zmiany i przetestować je.
Następne kroki
Przejdź do następnego samouczka, aby dowiedzieć się, jak zabezpieczyć aplikację przy użyciu domeny niestandardowej i certyfikatu.
Możesz też zapoznać się z innymi zasobami: