Oktatóanyag: PHP-, MySQL- és Redis-alkalmazás üzembe helyezése Azure-alkalmazás Szolgáltatásban

Ez az oktatóanyag bemutatja, hogyan hozhat létre biztonságos PHP-alkalmazást Azure-alkalmazás Szolgáltatásban, amely egy Rugalmas Azure Database for MySQL-kiszolgálóhoz csatlakozik. Emellett üzembe fog helyezni egy Azure Cache for Redist is, hogy engedélyezze a gyorsítótárazási kódot az alkalmazásban. Azure-alkalmazás szolgáltatás egy nagymértékben skálázható, önjavító, web hosting szolgáltatás, amely könnyen üzembe helyezhet alkalmazásokat Windowson vagy Linuxon. Ha végzett, egy Laravel-alkalmazás fog futni a Linuxon futó Azure-alkalmazás Service-en.

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

If you don't have an Azure subscription, create an Azure free account before you begin.

Mintaalkalmazás

Az oktatóanyag követéséhez klónozza vagy töltse le a Laravel-mintaalkalmazást az adattárból:

git clone https://github.com/Azure-Samples/laravel-tasks.git

Ha helyileg szeretné futtatni az alkalmazást, tegye a következőket:

  • Az .env alkalmazásban konfigurálja az adatbázis beállításait (például DB_DATABASE, DB_USERNAMEés DB_PASSWORD) a helyi MySQL-adatbázis beállításaival. A minta futtatásához helyi MySQL-kiszolgálóra van szükség.

  • Az adattár gyökeréből indítsa el a Laravelt a következő parancsokkal:

    composer install
    php artisan migrate
    php artisan key:generate
    php artisan serve
    

1 – App Service- és MySQL-erőforrások létrehozása

Ebben a lépésben hozza létre az Azure-erőforrásokat. Az oktatóanyag lépései alapértelmezés szerint biztonságos App Service- és Azure Database for MySQL-konfigurációt hoznak létre. A létrehozási folyamathoz a következőket kell megadnia:

  • A webalkalmazás neve . Ez a webalkalmazás https://<app-name>.azurewebsites.netDNS-nevének részeként használt név.
  • Az alkalmazás futtatókörnyezete . Itt választhatja ki az alkalmazáshoz használni kívánt PHP-verziót.
  • Az alkalmazás erőforráscsoportja . Az erőforráscsoportokkal (logikai tárolóban) csoportosíthatja az alkalmazáshoz szükséges Összes Azure-erőforrást.

Jelentkezzen be az Azure Portalra, és kövesse az alábbi lépéseket a Azure-alkalmazás szolgáltatás erőforrásainak létrehozásához.

1. lépés: Az Azure Portalon:

  1. Írja be a "webalkalmazás-adatbázis" kifejezést az Azure Portal tetején található keresősávba.
  2. Válassza ki a Web App + Adatbázis címkével ellátott elemet a Marketplace címsora alatt. A létrehozási varázslót közvetlenül is megnyithatja.

A screenshot showing how to use the search box in the top tool bar to find the Web App + Database creation wizard.

2. lépés: A Webalkalmazás létrehozása + Adatbázis lapon töltse ki az űrlapot az alábbiak szerint.

  1. Az erőforráscsoport → Válassza az Új létrehozása lehetőséget, és használja az msdocs-laravel-mysql-tutorial nevet.
  2. Régió → Az Önhöz közeli Bármely Azure-régió.
  3. Adja →msdocs-laravel-mysql-XYZ nevet, ahol az XYZ tetszőleges három véletlenszerű karakter. Ennek a névnek az Azure-on belül egyedinek kell lennie.
  4. Futtatókörnyezeti veremPHP 8.2.
  5. Hozzáadja az Azure Cache for Redist? → Igen.
  6. Üzemeltetési tervAlapszintű. Ha készen áll, később felskálázhatja az éles tarifacsomagot.
  7. A Rugalmas MySQL-kiszolgáló alapértelmezés szerint adatbázismotorként van kiválasztva. Az Azure Database for MySQL egy teljes körűen felügyelt MySQL-adatbázis szolgáltatásként az Azure-ban, amely kompatibilis a legújabb közösségi kiadásokkal.
  8. Select Review + create.
  9. Az ellenőrzés befejezése után válassza a Létrehozás lehetőséget.

A screenshot showing how to configure a new app and database in the Web App + Database wizard.

3. lépés: Az üzembe helyezés néhány percet vesz igénybe. Az üzembe helyezés befejeződése után válassza az Erőforrás megnyitása gombot. Közvetlenül az App Service-alkalmazásba kerül, de a következő erőforrások jönnek létre:

  • Az erőforráscsoport az összes létrehozott erőforrás tárolóját →.
  • Az App Service-csomag → Az App Service számítási erőforrásait határozza meg. Létrejön egy Linux-csomag az alapszinten .
  • Az App Service → Az alkalmazást jelöli, és az App Service-csomagban fut.
  • A virtuális hálózat → Integrálva van az App Service alkalmazással, és elkülöníti a háttérbeli hálózati forgalmat.
  • A privát végpontok → Access-végpontokat az adatbázis-kiszolgálóhoz és a Redis-gyorsítótárhoz a virtuális hálózaton.
  • A hálózati adapterek → Privát IP-címeket jelölnek, egy-egy a privát végpontokhoz.
  • A rugalmas Azure Database for MySQL-kiszolgáló csak a privát végpontja mögött → elérhető. A rendszer létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
  • Az Azure Cache for Redis csak a privát végpontja mögött → elérhető.
  • saját DNS zónák → Engedélyezi az adatbázis-kiszolgáló és a Redis-gyorsítótár DNS-feloldását a virtuális hálózaton.

A screenshot showing the deployment process completed.

2 – Adatbázis-kapcsolat beállítása

1. lépés: Az App Service lap bal oldali menüjében válassza a Konfiguráció lehetőséget.

A screenshot showing how to open the configuration page in App Service.

Step 2:

  1. Keresse meg a AZURE_MYSQL_ kezdődő alkalmazásbeállításokat. Ezeket a létrehozási varázsló hozta létre az új MySQL-adatbázisból.
  2. Emellett keresse meg a AZURE_REDIS_ kezdődő alkalmazásbeállításokat is. Ezeket a létrehozási varázsló hozta létre az új Redis-gyorsítótárból. Az alkalmazás beállításához csak erre a névre van szüksége.
  3. Ha szeretné, az egyes beállításoktól jobbra található Szerkesztés gombra kattintva megtekintheti vagy másolhatja annak értékét. Később módosítani fogja az alkalmazás kódját, hogy ezeket a beállításokat használja.

A screenshot showing how to create an app setting.

3. lépés: A Konfiguráció lap Alkalmazásbeállítások lapján hozzon létre egy CACHE_DRIVER beállítást:

  1. Válassza az Új alkalmazás beállítása lehetőséget.
  2. A Név mezőbe írja be a CACHE_DRIVER.
  3. Az Érték mezőben adja meg a redis értéket.
  4. Kattintson az OK gombra. CACHE_DRIVER már használatban van a Laravel-alkalmazáskódban. Ez a beállítás arra utasítja a Laravelt, hogy a Redist használja gyorsítótárként.

A screenshot showing how to see the autogenerated connection string.

4. lépés: A 3. lépésben ismertetett lépésekkel hozza létre a következő alkalmazásbeállításokat:

  • MYSQL_ATTR_SSL_CA: Használja a /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem értéket. Ez az alkalmazásbeállítás a MySQL-kiszolgáló eléréséhez szükséges TLS/SSL-tanúsítvány elérési útjára mutat. A mintaadattárban található a kényelem érdekében.
  • LOG_CHANNEL: Használja az stderrt értékként. Ez a beállítás arra utasítja a Laravelt, hogy a naplókat a stderrbe csövezza, ami elérhetővé teszi az App Service-naplók számára.
  • APP_DEBUG: Igaz értéket használjon. Ez egy Laravel hibakeresési változó , amely lehetővé teszi a hibakeresési módú oldalakat.
  • APP_KEY: Értékként használja a base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= értéket. Ez egy Laravel titkosítási változó.
  1. A felső menüsávon válassza a Mentés lehetőséget.
  2. Amikor a rendszer kéri, válassza a Folytatás lehetőséget.

A screenshot showing how to save settings in the configuration page.

Fontos

Az APP_KEY érték itt használható a kényelem érdekében. Éles forgatókönyvek esetén a parancsot kifejezetten az üzembe helyezéshez php artisan key:generate --show kell létrehozni a parancssorban.

3 – Mintakód üzembe helyezése

Ebben a lépésben konfigurálja a GitHub üzembe helyezését a GitHub Actions használatával. Ez csak egy az App Service-ben történő üzembe helyezés számos módja közül, de nagyszerű módja annak is, hogy folyamatos integrációt nyújtsunk az üzembe helyezési folyamatba. Alapértelmezés szerint a GitHub-adattár minden git push eleme elindítja a buildelési és üzembe helyezési műveletet. A kódbázist a Visual Studio Code-tal közvetlenül a böngészőben fogja módosítani, majd lehetővé teszi a GitHub Actions automatikus üzembe helyezését.

1. lépés: Új böngészőablakban:

  1. Jelentkezzen be a GitHub-fiókjába.
  2. Nyissa meg a https://github.com/Azure-Samples/laravel-tasks címet.
  3. Válassza az Elágazás lehetőséget.
  4. Válassza az Elágazás létrehozása lehetőséget.

A screenshot showing how to create a fork of the sample GitHub repository.

2. lépés: A GitHub lapon nyissa meg a Visual Studio Code-ot a böngészőben a . kulcs lenyomásával.

A screenshot showing how to open the Visual Studio Code browser experience in GitHub.

3. lépés: A böngészőben a Visual Studio Code-ban nyissa meg a config/database.php fájlt az explorerben. Keresse meg a szakaszt mysql , és végezze el a következő módosításokat:

  1. Cserélje le a DB_HOST elemet a AZURE_MYSQL_HOST kérdésre.
  2. Cserélje le a DB_DATABASE elemet a AZURE_MYSQL_DBNAME kérdésre.
  3. Cserélje le a DB_USERNAME elemet a AZURE_MYSQL_USERNAME kérdésre.
  4. Cserélje le a DB_PASSWORD elemet a AZURE_MYSQL_PASSWORD kérdésre.
  5. Cserélje le a DB_PORT elemet a AZURE_MYSQL_PORT kérdésre. Ne feledje, hogy ezeket a AZURE_MYSQL_ beállításokat a létrehozási varázsló hozta létre Önnek.

A screenshot showing Visual Studio Code in the browser and an opened file with modified MySQL variables.

4. lépés: A config/database.php fájlban görgessen a Redis cache szakaszhoz, és végezze el a következő módosításokat:

  1. Cserélje le a REDIS_HOST elemet a AZURE_REDIS_HOST kérdésre.
  2. Cserélje le a REDIS_PASSWORD elemet a AZURE_REDIS_PASSWORD kérdésre.
  3. Cserélje le a REDIS_PORT elemet a AZURE_REDIS_PORT kérdésre.
  4. Cserélje le a REDIS_CACHE_DB elemet a AZURE_REDIS_DATABASE kérdésre.
  5. Ugyanebben a szakaszban adjon hozzá egy sort a következővel 'scheme' => 'tls',: . Ez a konfiguráció arra utasítja a Laravelt, hogy titkosítással csatlakozzon a Redishez. Ne feledje, hogy ezeket a AZURE_REDIS_ beállításokat a létrehozási varázsló hozta létre Önnek.

A screenshot showing Visual Studio Code in the browser and an opened file with modified Redis variables.

Step 5:

  1. Válassza ki a Forrásvezérlő bővítményt.
  2. A szövegmezőbe írjon be egy véglegesítési üzenetet, például Configure DB & Redis variables: .
  3. Válassza a Véglegesítés és a Leküldés lehetőséget.

A screenshot showing the changes being committed and pushed to GitHub.

6. lépés: Az App Service lap bal oldali menüjében válassza az Üzembe helyezési központ lehetőséget.

A screenshot showing how to open the deployment center in App Service.

7. lépés: Az Üzembehelyezési központ lapon:

  1. A Forrás területen válassza a GitHubot. Alapértelmezés szerint a GitHub Actions van kiválasztva buildszolgáltatóként.
  2. Jelentkezzen be a GitHub-fiókjába, és kövesse az utasításokat az Azure engedélyezéséhez.
  3. A Szervezetben válassza ki a fiókját.
  4. Az Adattárban válassza a laravel-task lehetőséget.
  5. Az Ág területen válassza a fő lehetőséget.
  6. A felső menüben válassza a Mentés lehetőséget. Az App Service véglegesít egy munkafolyamat-fájlt a kiválasztott GitHub-adattárba a .github/workflows címtárban.

A screenshot showing how to configure CI/CD using GitHub Actions.

8. lépés: Az Üzembehelyezési központ lapon:

  1. Select Logs. Az üzembehelyezési futtatás már elindult.
  2. Az üzembe helyezési futtatás naplóelemében válassza a Build/Deploy Logs lehetőséget.

A screenshot showing how to open deployment logs in the deployment center.

9. lépés: A GitHub-adattárba kerül, és láthatja, hogy a GitHub-művelet fut. A munkafolyamat-fájl két különálló szakaszt határoz meg, a buildelést és az üzembe helyezést. Várja meg, amíg a GitHub fut, és megjeleníti a Kész állapotot. Körülbelül 15 percet vesz igénybe.

A screenshot showing a GitHub run in progress.

4 – Adatbázisséma létrehozása

A létrehozási varázsló egy privát végpont mögé helyezi a MySQL-adatbáziskiszolgálót, így csak a virtuális hálózatról érhető el. Mivel az App Service-alkalmazás már integrálva van a virtuális hálózattal, az adatbázis migrálásának legegyszerűbb módja közvetlenül az App Service-tárolóból történik.

1. lépés: Az App Service lap bal oldali menüjében válassza az SSH-t.

A screenshot showing how to open the SSH shell for your app from the Azure portal.

2. lépés: Az SSH-terminálban:

  1. Run cd /home/site/wwwroot. Itt találja az összes telepített fájlt.
  2. Run php artisan migrate --force. Ha sikerül, az App Service sikeresen csatlakozik a MySQL-adatbázishoz. Csak a fájlok /home módosításai őrizhetők meg az alkalmazás újraindítása után. A külső /home módosítások nem maradnak meg.

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

5 – Webhely gyökerének módosítása

A Laravel-alkalmazás életciklusa a /public könyvtárban kezdődik. Az App Service alapértelmezett PHP-tárolója az Nginxet használja, amely az alkalmazás gyökérkönyvtárában kezdődik. A webhelygyökér módosításához módosítania kell az Nginx konfigurációs fájlt a PHP-tárolóban (/etc/nginx/sites-available/default). Az Ön kényelme érdekében a mintaadattár egy alapértelmezett nevű egyéni konfigurációs fájlt tartalmaz. Ahogy korábban már említettük, nem szeretné lecserélni ezt a fájlt az SSH-felülettel, mert a módosítás kívül esik, és az alkalmazás újraindítása /home után elveszik.

Step 1:

  1. A bal oldali menüben válassza a Konfiguráció lehetőséget.
  2. Válassza az Általános beállítások lapot.

A screenshot showing how to open the general settings tab in the configuration page of App Service.

2. lépés: Az Általános beállítások lapon:

  1. Az Indítási parancs mezőbe írja be a következő parancsot: cp /home/site/wwwroot/default /etc/nginx/sites-available/default &> service nginx reload.
  2. Válassza a Mentés parancsot. A parancs lecseréli az Nginx konfigurációs fájlt a PHP-tárolóban, és újraindítja az Nginxet. Ez a konfiguráció biztosítja, hogy minden indításkor ugyanazt a módosítást végezhesse el a tárolón.

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

6 – Tallózás az alkalmazáshoz

1. lépés: Az App Service oldalán:

  1. A bal oldali menüben válassza az Áttekintés lehetőséget.
  2. Válassza ki az alkalmazás URL-címét. Közvetlenül a következőre https://<app-name>.azurewebsites.netis navigálhat.

A screenshot showing how to launch an App Service from the Azure portal.

2. lépés: Adjon hozzá néhány feladatot a listához. Gratulálunk, biztonságos, adatvezérelt PHP-alkalmazást futtat Azure-alkalmazás Service-ben.

A screenshot of the Laravel app running in App Service.

Tipp.

A mintaalkalmazás implementálja a gyorsítótár-feltöltési mintát. Amikor az adatok módosítása után újra betölti a lapot, a weblap válaszideje sokkal gyorsabban jelenik meg, mivel az adatbázis helyett a gyorsítótárból tölti be az adatokat.

7 – Diagnosztikai naplók streamelése

Azure-alkalmazás szolgáltatás rögzíti a konzolra naplózott összes üzenetet, hogy segítsen az alkalmazással kapcsolatos problémák diagnosztizálásában. A mintaalkalmazás minden végpontján konzolnapló-üzeneteket ad ki, hogy bemutassuk ezt a képességet. A Laravel naplózási funkciója (például Log::info()) alapértelmezés szerint egy helyi fájlba irányítja a kimenetet. Az LOG_CHANNEL alkalmazás korábbi beállításai akadálymentessé teszik a naplóbejegyzéseket az App Service naplóstreamjéből.

1. lépés: Az App Service oldalán:

  1. A bal oldali menüben válassza az App Service-naplók lehetőséget.
  2. Az Alkalmazásnaplózás területen válassza a Fájlrendszer lehetőséget.

A screenshot showing how to enable native logs in App Service in the Azure portal.

2. lépés: A bal oldali menüben válassza a Naplóstream lehetőséget. Láthatja az alkalmazás naplóit, beleértve a platformnaplókat és a tárolón belüli naplókat.

A screenshot showing how to view the log stream in the Azure portal.

Clean up resources

Ha végzett, törölheti az összes erőforrást az Azure-előfizetéséből az erőforráscsoport törlésével.

1. lépés: Az Azure Portal tetején található keresősávon:

  1. Adja meg az erőforráscsoport nevét.
  2. Válassza ki az erőforráscsoportot.

A screenshot showing how to search for and navigate to a resource group in the Azure portal.

2. lépés: Az erőforráscsoport lapján válassza az Erőforráscsoport törlése lehetőséget.

A screenshot showing the location of the Delete Resource Group button in the Azure portal.

3. lépés:

  1. A törlés megerősítéséhez adja meg az erőforráscsoport nevét.
  2. Select Delete.

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

Gyakori kérdések

Mennyibe kerül ez a beállítás?

A létrehozási erőforrások díjszabása a következő:

  • Az App Service-csomag alapszinten jön létre, és fel- vagy leskálázható. Lásd az App Service díjszabását.
  • A rugalmas MySQL-kiszolgáló B1ms-szinten jön létre, és fel- vagy leskálázható. Ingyenes Azure-fiók esetén a B1ms szint 12 hónapig ingyenes, a havi korlátokig. Tekintse meg az Azure Database for MySQL díjszabását.
  • Az Azure Cache for Redis alapszintű, minimális gyorsítótármérettel jön létre. Ez a szint egy kis költséggel jár. Magasabb teljesítményszintekre skálázhatja a magasabb rendelkezésre állás, a fürtözés és más funkciók érdekében. Tekintse meg az Azure Cache for Redis díjszabását.
  • A virtuális hálózat csak akkor számít fel díjat, ha nem konfigurál további funkciókat, például társviszony-létesítést. Tekintse meg az Azure Virtual Network díjszabását.
  • A privát DNS-zóna kis díjat számít fel. Tekintse meg az Azure DNS díjszabását.

Hogyan csatlakozni a virtuális hálózat mögött más eszközökkel védett MySQL-adatbázishoz?

  • A parancssori eszközről való alapszintű hozzáféréshez az alkalmazás SSH-termináljáról is futtatható mysql .
  • A MySQL Workbenchhez hasonló asztali eszközről való csatlakozáshoz a gépnek a virtuális hálózaton belül kell lennie. Ez lehet például egy Azure-beli virtuális gép, amely az egyik alhálózathoz csatlakozik, vagy egy helyszíni hálózat egy olyan gépe, amely helyek közötti VPN-kapcsolattal rendelkezik az Azure-beli virtuális hálózattal.
  • Az Azure Cloud Shellt a virtuális hálózattal is integrálhatja.

Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?

Vegyük példaként az App Service automatikusan létrehozott munkafolyamat-fájlját, és mindegyik git push elindít egy új buildet és üzembe helyezést. A GitHub-adattár helyi klónjából a kívánt frissítéseket leküldheti a GitHubra. Például:

git add .
git commit -m "<some-message>"
git push origin main

Miért olyan lassú a GitHub Actions üzembe helyezése?

Az App Service automatikusan létrehozott munkafolyamat-fájlja a build-then-deploy, kétfeladatos futtatás definícióját határozza meg. Mivel minden feladat a saját tiszta környezetében fut, a munkafolyamat-fájl biztosítja, hogy a deploy feladat hozzáférhessen a build feladat fájljaihoz:

A kétfeladatos folyamat legtöbbször az összetevők feltöltésével és letöltésével foglalkozik. Ha szeretné, egyszerűsítheti a munkafolyamat-fájlt a két feladat egybe egyesítésével, ami szükségtelenné teszi a feltöltési és letöltési lépéseket.

További lépések

Folytassa a következő oktatóanyaggal, amelyből megtudhatja, hogyan védheti meg az alkalmazást egyéni tartománnyal és tanúsítvánnyal.

Vagy tekintse meg a többi erőforrást is: