Samouczek: tworzenie aplikacji PHP (Laravel) i Azure Database for MySQL — elastyczny serwer w usłudze aplikacja systemu Azure Service

DOTYCZY: Azure Database for MySQL — serwer elastyczny

usługa aplikacja systemu Azure Service oferuje wysoce skalowalną, samonastosową usługę hostingu internetowego przy użyciu systemu operacyjnego Linux. W tym samouczku pokazano, jak utworzyć bezpieczną aplikację PHP w usłudze aplikacja systemu Azure, która jest połączona z bazą danych MySQL (przy użyciu elastycznego serwera usługi Azure Database for MySQL). Po zakończeniu będziesz mieć aplikację Laravel działającą w usłudze aplikacja systemu Azure Service w systemie Linux.

Screenshot of the Azure app example titled Task List showing new tasks added.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Tworzenie domyślnej aplikacji PHP i MySQL na platformie Azure
  • Konfigurowanie wpisów tajnych połączenia z usługą MySQL 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

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 Wypróbuj bezpłatnie usługę Azure Database for MySQL — serwer elastyczny.

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_USERNAMEi DB_PASSWORD) przy użyciu ustawień w lokalnej bazie danych serwera elastycznego usługi Azure Database for MySQL. Aby uruchomić ten przykład, potrzebujesz lokalnego wystąpienia serwera elastycznego usługi Azure Database for MySQL.

  • 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 serwera elastycznego usługi App Service i usługi Azure Database for MySQL

W tym kroku utworzysz zasoby platformy Azure. Kroki używane w tym samouczku umożliwiają utworzenie domyślnie bezpiecznej konfiguracji serwera elastycznego usługi App Service i 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 witryny Azure Portal i wykonaj następujące kroki, aby utworzyć zasoby usługi aplikacja systemu Azure.

Instrukcje Zrzut ekranu
W witrynie Azure Portal:
  1. Wprowadź ciąg "baza danych aplikacji internetowej" na pasku wyszukiwania w górnej części witryny Azure Portal.
  2. Wybierz element z etykietą Web App + Database w obszarze nagłówka Marketplace .
Możesz również przejść bezpośrednio do kreatora tworzenia.
A screenshot showing how to use the search box in the top tool bar to find the Web App + Database creation wizard.
Na stronie Tworzenie aplikacji internetowej i bazy danych wypełnij formularz w następujący sposób.
  1. Grupa zasobów → wybierz pozycję Utwórz nową i użyj nazwy msdocs-laravel-mysql-tutorial.

  2. Region → dowolny region świadczenia usługi Azure w pobliżu.

  3. Nazwamsdocs-laravel-mysql-XYZ , gdzie XYZ jest dowolnymi trzema losowymi znakami. Ta nazwa musi być unikatowa w obrębie całej platformy Azure.

  4. Stos środowiska uruchomieniowego → PHP 8.0.

    MySQL — serwer elastyczny jest domyślnie wybierany jako aparat bazy danych. Usługa Azure Database for MySQL to w pełni zarządzana baza danych MySQL jako usługa na platformie Azure zgodna z najnowszymi wersjami społeczności.

  5. Zanotuj nazwę bazy danych wygenerowaną dla Ciebie (<app-name-database>). Będziesz jej potrzebować później.

  6. Kliknij pozycję Przejrzyj i utwórz.

Po zakończeniu walidacji kliknij przycisk Utwórz.
A screenshot showing how to configure a new app and database in the Web App + Database wizard.
Wdrożenie trwa kilka minut i tworzy 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. Zostanie utworzony plan systemu Linux w warstwie P1v2 .
  • Usługa 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.
  • Azure Database for MySQL — serwer elastyczny → dostępny tylko z sieci wirtualnej. Baza danych i użytkownik są tworzone dla Ciebie na serwerze.
  • Prywatna strefa DNS strefy → umożliwia rozpoznawanie nazw DNS serwera bazy danych MySQL w sieci wirtualnej.
Po zakończeniu wdrażania kliknij przycisk Przejdź do zasobu . Przejście bezpośrednio do aplikacji usługi App Service.
A screenshot showing the form to fill out to create a web app in Azure.

2 — Konfigurowanie łączności z bazą danych

Kreator tworzenia wygenerował ustawienia aplikacji służące do nawiązywania połączenia z bazą danych, ale nie w formacie, który jest jeszcze używany dla kodu. 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. A screenshot showing how to open the configuration page in App Service.
Na karcie Ustawienia aplikacji na stronie Konfiguracja dla każdego z poniższych ustawień kliknij pozycję Edytuj, zaktualizuj pole Nazwa nowymi wartościami i kliknij przycisk OK.
Bieżąca nazwa Nowa nazwa
AZURE_MYSQL_DBNAME DB_DATABASE
AZURE_MYSQL_HOST DB_HOST
AZURE_MYSQL_USERNAME DB_USERNAME
AZURE_MYSQL_PASSWORD DB_PASSWORD
A screenshot showing how to see the autogenerated connection string.
Utwórz nowe MYSQL_ATTR_SSL_CA ustawienie bazy danych:
  1. Kliknij pozycję Nowe ustawienie aplikacji.

  2. W polu Nazwa wprowadź MYSQL_ATTR_SSL_CA.

  3. W polu Wartość wprowadź ciąg /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem.

    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.

  4. Kliknij przycisk OK.

A screenshot showing how to create an app setting.
Utwórz następujące dodatkowe ustawienia aplikacji, wykonując te same kroki, a następnie kliknij pozycję Zapisz.
  • APP_DEBUG: użyj wartości true. Jest to zmienna debugowania platformy Laravel.

  • APP_KEY: użyj wartości base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= jako wartości. Jest to zmienna szyfrowania Laravel.

    Ważne

    Ta APP_KEY wartość jest używana tutaj dla wygody. W przypadku scenariuszy produkcyjnych należy je wygenerować specjalnie dla wdrożenia przy użyciu php artisan key:generate --show polecenia w wierszu polecenia.

A screenshot showing all the required app settings in the configuration page.

3 — 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 ciągłej integracji w procesie wdrażania. Domyślnie każde git push repozytorium GitHub uruchamia 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:
  1. Zaloguj się na istniejącym koncie GitHub.

  2. Przejdź do https://github.com/Azure-Samples/laravel-tasks.

  3. Kliknij pozycję Rozwidlenie.

  4. Kliknij pozycję Utwórz rozwidlenie.

A screenshot showing how to create a fork of the sample GitHub repository.
Na stronie GitHub otwórz program Visual Studio Code w przeglądarce, naciskając . klawisz . A screenshot showing how to open the Visual Studio Code browser experience in GitHub.
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 A screenshot showing Visual Studio Code in the browser and an opened file.
Po powrocie do strony usługi App Service w menu po lewej stronie wybierz pozycję Centrum wdrażania. A screenshot showing how to open the deployment center in App Service.
Na stronie Centrum wdrażania:
  1. W obszarze Źródło wybierz pozycję GitHub. Domyślnie funkcja GitHub Actions jest wybierana jako dostawca kompilacji.

  2. Zaloguj się do konta usługi GitHub i postępuj zgodnie z monitem, aby autoryzować platformę Azure.

  3. W obszarze Organizacja wybierz swoje konto.

  4. W obszarze Repozytorium wybierz pozycję laravel-tasks.

  5. W obszarze Gałąź wybierz pozycję main.

  6. W górnym menu kliknij pozycję Zapisz.

Usługa App Service zatwierdza plik przepływu pracy w wybranym repozytorium GitHub w .github/workflows katalogu.
A screenshot showing how to configure CI/CD using GitHub Actions.
Na stronie Centrum wdrażania:
  1. Wybierz pozycję Dzienniki. Uruchomienie wdrożenia zostało już uruchomione.

  2. W elemencie dziennika dla przebiegu wdrożenia wybierz pozycję Kompiluj/Wdróż dzienniki.

    Przejdź do repozytorium GitHub i zobaczysz, że akcja usługi GitHub jest uruchomiona. Plik przepływu pracy definiuje dwa oddzielne etapy, kompilowanie i wdrażanie.

A screenshot showing how to open deployment logs in the deployment center.
Aby wprowadzić zmiany w kodzie, przejdź do programu Visual Studio Code w przeglądarce:
  1. Wybierz rozszerzenie Kontroli źródła.

  2. Obok zmienionego pliku, na przykład database.php, wybierz + , aby przygotować zmiany.

  3. W polu tekstowym wpisz komunikat zatwierdzenia, na przykład add certificate.

  4. Wybierz znacznik wyboru, aby zatwierdzić i wypchnąć do usługi GitHub.

Jeśli wrócisz do strony Centrum wdrażania, zostanie wyświetlony nowy wpis dziennika, ponieważ uruchomiono inny przebieg. Poczekaj na zakończenie analizy. Trwa to około 15 minut.

Napiwek

Akcja usługi GitHub jest definiowana przez plik w repozytorium GitHub w witrynie .github/workflow. Możesz przyspieszyć jego dostosowywanie, dostosowując plik.

A screenshot showing how to commit your changes in the Visual Studio Code browser experience.

4 — Generowanie schematu bazy danych

Kreator tworzenia umieszcza elastyczne wystąpienie serwera usługi Azure Database for 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.

Instrukcje Zrzut ekranu
Na stronie App Service:
  1. Z menu po lewej stronie wybierz pozycję SSH.

  2. Wybierz pozycję Przejdź.

Sesja SSH z kontenerem usługi App Service jest otwarta w przeglądarce. Jeśli chcesz, możesz przejść bezpośrednio do https://<app-name>.scm.azurewebsites.net/webssh/host strony .
A screenshot showing how to open the SSH shell for your app from the Azure portal.
W terminalu SSH:
  1. Przejdź do katalogu głównego kodu aplikacji:

    cd /home/site/wwwroot
    
  2. Uruchom migracje bazy danych z katalogu głównego aplikacji.

    php artisan migrate --force
    

    Uwaga

    Tylko zmiany w plikach w /home programie mogą być utrwalane poza ponownymi uruchomieniami aplikacji. Zmiany poza programem /home nie są utrwalane.

A screenshot showing the commands to run in the SSH shell and their output.

5 — Zmienianie katalogu głównego 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.

Instrukcje Zrzut ekranu
Na stronie App Service:
  1. W menu po lewej stronie wybierz pozycję Konfiguracja.

  2. Wybierz kartę Ustawienia Ogólne.

A screenshot showing how to open the general settings tab in the configuration page of App Service.
Na karcie Ustawienia ogólne:
  1. W polu Polecenie uruchamiania wprowadź następujące polecenie: cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx ponownie załaduj.

    Zastępuje on plik konfiguracji Nginx w kontenerze PHP 8.0 i ponownie uruchamia serwer Nginx. Ta konfiguracja gwarantuje, że ta zmiana zostanie wprowadzona do kontenera przy każdym uruchomieniu.

  2. Wybierz pozycję Zapisz.

A screenshot showing how to configure a startup command in App Service.

6 — Przechodzenie do aplikacji

Instrukcje Zrzut ekranu
Na stronie App Service:
  1. W menu po lewej stronie wybierz pozycję Przegląd.

  2. Wybierz adres URL aplikacji.

    Możesz również przejść bezpośrednio do https://<app-name>.azurewebsites.netadresu .

A screenshot showing how to launch an App Service from the Azure portal.
Dodaj kilka zadań do listy. Gratulacje, korzystasz z aplikacji PHP opartej na danych w usłudze aplikacja systemu Azure Service. A screenshot of the Laravel app running in App Service.

7 — Przesyłanie strumieniowe dzienników diagnostycznych

Instrukcje Zrzut ekranu
Na stronie App Service:
  1. W menu po lewej stronie wybierz pozycję Dzienniki usługi App Service.

  2. W obszarze Rejestrowanie aplikacji wybierz pozycję System plików.

A screenshot showing how to enable native logs in App Service in the Azure portal.
W menu po lewej stronie kliknij pozycję Strumień dziennika. Zobaczysz dzienniki aplikacji, w tym dzienniki platformy i dzienniki z wewnątrz kontenera. A screenshot showing how to view the log stream in the Azure portal.

Czyszczenie zasobów

Po zakończeniu możesz usunąć wszystkie zasoby z subskrypcji platformy Azure, usuwając grupę zasobów.

Instrukcje Zrzut ekranu
Na pasku wyszukiwania w górnej części witryny Azure Portal:
  1. Wpisz nazwę grupy zasobów.

  2. Wybierz odpowiednią grupę zasobów.

A screenshot showing how to search for and navigate to a resource group in the Azure portal.
Na stronie grupy zasobów kliknij pozycję Usuń grupę zasobów. A screenshot showing the location of the Delete Resource Group button in the Azure portal.
  1. Wprowadź nazwę grupy zasobów, aby potwierdzić usunięcie.

  2. Kliknij Usuń.

A screenshot of the confirmation dialog for deleting a resource group in the Azure portal.

Często zadawane pytania

Ile kosztuje ta konfiguracja?

Cennik zasobów tworzenia jest następujący:

  • 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.
  • Wystąpienie serwera elastycznego usługi Azure Database for MySQL jest tworzone w warstwie B1ms i można je 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 powoduje naliczania opłat, chyba że skonfigurujesz dodatkowe funkcje, takie jak komunikacja równorzędna. 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 elastyczną bazą danych serwera usługi Azure Database for MySQL zabezpieczoną za siecią wirtualną?

Aby nawiązać połączenie z elastyczną bazą danych serwera usługi Azure Database for MySQL, możesz użyć kilku metod opartych na narzędziach i środowiskach dostępnych do dyspozycji:

  • Dostęp do narzędzia wiersza polecenia:
    • mysql Uż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:
      • Utwórz sesję SSH w aplikacji internetowej przy użyciu 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 platformy 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.
  • Integracja usługi Azure Cloud Shell:

W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?

Pobierz automatycznie wygenerowany plik przepływu pracy z usługi App Service, aby na przykład git push uruchomić nową kompilację i uruchomienie wdrożenia. Z lokalnego klonu repozytorium GitHub należy wprowadzić żądane aktualizacje wypychane do usługi 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 polecenie build-then-deploy, dwuzadniowe uruchomienie. Ponieważ każde zadanie jest uruchamiane we własnym czystym środowisku, plik przepływu pracy zapewnia, że deploy zadanie ma dostęp do plików z build zadania:

Większość czasu poświęcanego przez proces dwóch zadań jest poświęcana na przekazywanie i pobieranie artefaktów. Jeśli chcesz, możesz uprościć plik przepływu pracy, łącząc dwa zadania w jeden, co eliminuje konieczność przekazywania i pobierania kroków.

Podsumowanie

W tym samouczku zawarto informacje na temat wykonywania następujących czynności:

  • Tworzenie domyślnej elastycznej aplikacji serwera PHP i usługi Azure Database for MySQL na platformie Azure
  • Konfigurowanie wpisów tajnych połączenia z serwerem elastycznym usługi Azure Database for MySQL 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

Następne kroki