Notatka
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.
Azure App Service zapewnia wysoce skalowalną, samodzielnie aktualizowaną usługę hostingu internetowego działającą w oparciu o system operacyjny Linux. W tym samouczku pokazano, jak utworzyć bezpieczną aplikację PHP w usłudze Azure App Service połączoną z bazą danych MySQL (przy użyciu usługi Azure Database for MySQL — serwer elastyczny). Po zakończeniu będziesz mieć uruchomioną aplikację Laravel w usłudze Azure App Service w systemie Linux.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Utwórz bezpieczną domyślnie aplikację PHP i MySQL na platformie Azure
- Konfigurowanie kluczy tajnych połączenia z serwerem MySQL za pomocą ustawień aplikacji
- Wdrażanie kodu aplikacji przy użyciu funkcji GitHub Actions
- Aktualizowanie i ponowne wdrażanie aplikacji
- Bezpieczne uruchamianie migracji bazy danych
- Strumieniowe przesyłanie dzienników diagnostycznych z platformy Azure
- Zarządzanie aplikacją w witrynie Azure Portal
Wymagania wstępne
- Subskrypcja platformy Azure Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure. Obecnie za pomocą bezpłatnego konta platformy Azure możesz wypróbować usługę Azure Database for MySQL — serwer elastyczny bezpłatnie przez 12 miesięcy. Aby uzyskać więcej informacji, zobacz Używanie bezpłatnego konta platformy Azure do bezpłatnego wypróbowania usługi Azure Database for MySQL — serwer elastyczny bezpłatnie.
Aplikacja przykładowa
Aby wykonać czynności opisane w tym samouczku, sklonuj lub pobierz przykładową aplikację z repozytorium:
git clone https://github.com/Azure-Samples/laravel-tasks.git
Jeśli chcesz uruchomić aplikację lokalnie, wykonaj następujące czynności:
W pliku env skonfiguruj ustawienia bazy danych (takie jak
DB_DATABASE,DB_USERNAMEiDB_PASSWORD) przy użyciu ustawień w lokalnej bazie danych usługi Azure Database for MySQL — serwer elastyczny. Aby uruchomić ten przykład, potrzebujesz lokalnej instancji serwera Azure Database for MySQL Flexible Server.W katalogu głównym repozytorium uruchom aplikację Laravel przy użyciu następujących poleceń:
composer install php artisan migrate php artisan key:generate php artisan serve
1 — Tworzenie zasobów usługi App Service i usługi Azure Database for MySQL — serwer elastyczny
W tym kroku utworzysz zasoby platformy Azure. Kroki użyte w tym samouczku umożliwiają utworzenie domyślnie bezpiecznej konfiguracji usługi App Service i serwera elastycznego usługi Azure Database for MySQL. W procesie tworzenia określisz następujące elementy:
- Nazwa aplikacji internetowej. Jest to nazwa używana jako część nazwy DNS aplikacji internetowej w postaci
https://<app-name>.azurewebsites.net. - Środowisko uruchomieniowe aplikacji. W tym miejscu wybierasz wersję języka PHP, która ma być używana dla 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 usługi Azure App Service.
| Instrukcje | Zrzut ekranu |
|---|---|
W witrynie Azure Portal:
|
|
Na stronie Tworzenie aplikacji internetowej i bazy danych wypełnij formularz w następujący sposób.
|
|
Wdrożenie trwa kilka minut i tworzy następujące zasoby:
|
|
2 — Konfigurowanie łączności z bazą danych
Kreator wygenerował ustawienia aplikacji, których możesz użyć do połączenia z bazą danych, ale jeszcze nie w formacie, którego można użyć w kodzie. W tym kroku edytujesz i zaktualizujesz ustawienia aplikacji do formatu wymaganego przez aplikację.
| Instrukcje | Zrzut ekranu | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Na stronie App Service w menu po lewej stronie wybierz pozycję Konfiguracja. |
|
||||||||||
Na karcie Ustawienia aplikacji na stronie Konfiguracja dla każdego z następujących ustawień wybierz pozycję Edytuj, zaktualizuj pole Nazwa nowymi wartościami i wybierz przycisk OK.
|
|
||||||||||
Utwórz nowe MYSQL_ATTR_SSL_CA ustawienie bazy danych:
|
|
||||||||||
Utwórz następujące dodatkowe ustawienia aplikacji, wykonując te same kroki, a następnie wybierz pozycję Zapisz.
|
|
3 — Wdrażanie przykładowego kodu
W tym kroku skonfigurujesz wdrożenie usługi GitHub przy użyciu funkcji GitHub Actions. To tylko jeden z wielu sposobów wdrażania do usługi App Service, ale także świetny sposób na wprowadzenie ciągłej integracji do procesu wdrażania. Domyślnie każde git push do Twojego repozytorium GitHub uruchomi akcję kompilacji i wdrażania. Wprowadzisz pewne zmiany w bazie kodu za pomocą programu Visual Studio Code bezpośrednio w przeglądarce, a następnie zezwolisz na automatyczne wdrażanie funkcji GitHub Actions.
| Instrukcje | Zrzut ekranu |
|---|---|
W nowym oknie przeglądarki:
|
|
Na stronie GitHub otwórz program Visual Studio Code w przeglądarce, naciskając . . |
|
W programie Visual Studio Code w przeglądarce otwórz plik config/database.php w eksploratorze. W połączeniu mysql sprawdź, czy ustawienia aplikacji utworzone wcześniej dla połączenia MySQL są już używane (DB_HOST, DB_DATABASE, , DB_USERNAMEDB_PASSWORD, ). MYSQL_ATTR_SSL_CA |
|
| Po powrocie do strony usługi App Service w menu po lewej stronie wybierz pozycję Centrum wdrażania. |
|
Na stronie Centrum wdrażania:
.github/workflows. |
|
Na stronie Centrum wdrażania:
|
|
Aby wprowadzić zmiany w kodzie, przejdź do programu Visual Studio Code w przeglądarce:
Wskazówka Akcja usługi GitHub jest definiowana przez plik w repozytorium GitHub w witrynie .github/workflow. Możesz to przyspieszyć, dostosowując plik. |
|
4 — Generowanie schematu bazy danych
Kreator tworzenia umieszcza elastyczne wystąpienie serwera Azure Database for MySQL za prywatnym punktem końcowym, dzięki czemu jest dostępne 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.
| Instrukcje | Zrzut ekranu |
|---|---|
Na stronie App Service:
https://<app-name>.scm.azurewebsites.net/webssh/host. |
|
W terminalu SSH:
|
|
5 - Zmień katalog główny witryny
Zamiast tego cykl życia aplikacji Laravel rozpoczyna się w katalogu /public . Domyślny kontener PHP 8.0 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 serwera Nginx w kontenerze PHP 8.0 (/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ż zmiany zostaną utracone po ponownym uruchomieniu aplikacji.
6 — Przechodzenie do aplikacji
7 - Przesyłanie dzienników diagnostycznych strumieniowo
Czyszczenie zasobów
Po zakończeniu możesz usunąć wszystkie zasoby z subskrypcji platformy Azure, usuwając grupę zasobów.
Często zadawane pytania
- Ile kosztuje ta konfiguracja?
- Jak połączyć się z bazą danych Azure Database for MySQL Flexible Server, która jest zabezpieczona za pomocą sieci wirtualnej?
- W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?
- Dlaczego wdrożenie funkcji GitHub Actions jest tak powolne?
Ile kosztuje ta konfiguracja?
Ceny zasobów tworzonych są następujące:
- Plan usługi App Service jest tworzony w warstwie Premium V2 i można go skalować w górę lub w dół. Zobacz Cennik usługi App Service.
- Instancja Azure Database for MySQL serwera elastycznego jest tworzona w warstwie B1ms i można ją 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 serwera elastycznego usługi Azure Database for MySQL.
- Sieć wirtualna nie wiąże się z opłatami, 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 nawiązać połączenie z bazą danych Azure Database for MySQL Flexible Server, który jest zabezpieczony za pomocą sieci wirtualnej?
Aby nawiązać połączenie z bazą danych usługi Azure Database for MySQL Flexible Server, możesz użyć kilku metod opartych na narzędziach i środowiskach, którymi dysponujesz.
-
Dostęp do narzędzia wiersza polecenia:
-
mysqlUżyj polecenia z poziomu terminalu SSH aplikacji, aby uzyskać dostęp podstawowy.
-
-
Narzędzia klasyczne (na przykład MySQL Workbench):
-
Korzystanie z tunelowania SSH za pomocą interfejsu wiersza polecenia platformy Azure:
- Nawiąż sesję SSH session z aplikacją internetową za pomocą interfejsu wiersza polecenia platformy Azure.
- Użyj sesji SSH, aby tunelować ruch do programu MySQL.
-
Korzystanie z sieci VPN typu lokacja-lokacja lub maszyny wirtualnej Azure:
- Maszyna musi być częścią sieci wirtualnej.
- Rozważ użycie:
- Maszyna wirtualna platformy Azure połączona z jedną z podsieci.
- Maszyna w sieci lokalnej, która ma połączenie sieci VPN typu lokacja-lokacja z siecią wirtualną platformy Azure.
-
Korzystanie z tunelowania SSH za pomocą interfejsu wiersza polecenia platformy Azure:
-
Integracja usługi Azure Cloud Shell:
- Integrowanie usługi Azure Cloud Shell z siecią wirtualną w celu uzyskania bezpośredniego dostępu.
W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?
Biorąc jako przykład automatycznie wygenerowany plik przepływu pracy z usługi App Service, każdy element git push rozpoczyna nowe uruchomienie kompilacji i wdrożenia. Z lokalnego klonu repozytorium GitHub wprowadzasz potrzebne zmiany 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 przez usługę App Service plik przepływu pracy definiuje dwuzadaniowe uruchomienie typu build-then-deploy. Ponieważ każde zadanie działa 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 zadania
buildprześlij pliki jako artefakty. - Na początku zadania
deploypobierz artefakty.
Większość czasu zajmowanego przez proces składający się z dwóch zadań przypada na przesyłanie i pobieranie artefaktów. Jeśli chcesz, możesz uprościć plik workflow, łącząc te dwa zadania w jedno, dzięki czemu nie będą potrzebne kroki przesyłania i pobierania.
Podsumowanie
W tym samouczku zawarto informacje na temat wykonywania następujących czynności:
- Tworzenie aplikacji PHP z domyślnie zabezpieczoną bazą danych Azure Database for MySQL Flexible Server w Azure
- Konfigurowanie tajnych danych połączenia z usługą Azure Database for MySQL Flexible Server przy użyciu ustawień aplikacji
- Wdrażanie kodu aplikacji przy użyciu funkcji GitHub Actions
- Aktualizowanie i ponowne wdrażanie aplikacji
- Bezpieczne uruchamianie migracji bazy danych
- Strumieniowe przesyłanie dzienników diagnostycznych z platformy Azure
- Zarządzanie aplikacją w witrynie Azure Portal