Megosztás a következőn keresztül:


Oktatóanyag: PHP, MySQL és Redis alkalmazás telepítése az Azure App Service-re

Ez az oktatóanyag bemutatja, hogyan hozhat létre biztonságos PHP-alkalmazást az Azure App Service-ben, amely rugalmas Azure Database for MySQL-kiszolgálóval csatlakozik egy MySQL-adatbázishoz. Te egy Azure Cache for Redist üzembe helyezel, hogy a gyorsítótárazási funkciót engedélyezd az alkalmazásodban. Az Azure App Service egy rendkívül skálázható, önjavító, webtárhely-szolgáltatás, amely könnyen képes alkalmazásokat telepíteni Windows vagy Linux rendszeren. Ha végzett, egy Laravel-alkalmazás fut a Linuxon futó Azure App Service-ben.

Feladatlista című Azure alkalmazáspélda képernyőképe, amely új hozzáadott feladatokat mutat.

Előfeltételek

A minta futtatása

Állítson be egy adatvezérelt mintaalkalmazást kiindulási pontként. A mintaadattár tartalmaz egy fejlesztői tárolókonfigurációt . A fejlesztői konténer mindent tartalmaz, amire szüksége van egy alkalmazás fejlesztéséhez, beleértve az adatbázist, a gyorsítótárat, és az összes környezeti változót, amelyre a mintapéldának szüksége van. A fejlesztői konténer futtatható egy GitHub codespace-ben, ami azt jelenti, hogy a mintapéldányt bármilyen számítógépen futtathatja, amelynek van böngészője.

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

  1. Jelentkezzen be GitHub-fiókjába.
  2. Navigáljon ide: https://github.com/Azure-Samples/laravel-tasks/fork.
  3. Válassza a Fork létrehozása lehetőséget.

2. lépés: A GitHub fork-ban:

  1. Válassza a Code> létrehozása) lehetőséget a főoldalon. A kódtér beállítása néhány percet vesz igénybe. Emellett a megadott .env fájl már tartalmaz egy APP_KEY.

3. lépés: A codespace terminálban:

  1. Futtassa a composer install programot.
  2. Hajtsa végre az adatbázis-migrációkat php artisan migrate segítségével.
  3. Futtassa az alkalmazást php artisan serve.
  4. Ha látja az értesítést Your application running on port 80 is available., válassza a Megnyitás böngészőben lehetőséget. A mintaalkalmazásnak egy új böngészőlapon kell megjelennie. Az alkalmazás leállításához írja be a CtrlC + .

Problémákat tapasztal? Nézze meg a Hibaelhárítás szakaszt.

App Service, adatbázis és gyorsítótár létrehozása

Ebben a lépésben hozza létre az Azure-erőforrásokat. Az ebben az oktatóanyagban használt lépések egy alapértelmezés szerint biztonságos erőforráskészletet hoznak létre, amely tartalmazza az App Service-t, az Azure Database for MySQL-t és az Azure Cache for Redis-t. A létrehozási folyamathoz a következőket kell megadnia:

  • A webalkalmazás neve. Az alkalmazás DNS-nevének részeként használják.
  • A régió, ahol az alkalmazás fizikailag fut a világban. Az alkalmazás DNS-nevének is része.
  • A Runtime stack az alkalmazáshoz. Itt választhatja ki, melyik PHP-verziót akarja használni az alkalmazásához.
  • Az alkalmazás üzemeltetési terve . Ez a tarifacsomag, amely tartalmazza az alkalmazás funkcióit és skálázási kapacitását.
  • Az alkalmazás erőforráscsoportja. Az erőforráscsoportokkal az alkalmazáshoz szükséges összes Azure-erőforrást logikai tárolóba csoportosíthatja.

Jelentkezzen be a Azure portalra. Kövesse az alábbi lépéseket az Azure App Service-erőforrások létrehozásához.

1. lépés: Az Azure portálon:

  1. A felső keresősávba írja be az App Service-t.
  2. Válassza ki az App Service címkével ellátott elemet a Szolgáltatások fejléc alatt.
  3. Válassza a Webalkalmazás létrehozása lehetőséget>. Közvetlenül a WebAlkalmazás létrehozása elemre is navigálhat.

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

  1. Név: msdocs-laravel-mysql. Az Azure Portal létrehoz egy msdocs-laravel-mysql_group nevű erőforráscsoportot.
  2. Futtatókörnyezeti verem: PHP 8.4.
  3. Operációs rendszer: Linux.
  4. Régió: Bármelyik Azure-régió a közeledben.
  5. Linux-csomag: Hozzon létre újat , és használja az msdocs-laravel-mysql nevet.
  6. Tarifacsomag: Alapszintű. Ha készen áll, áttérhet egy másik tarifacsomagra.

3. lépés:

  1. A Tovább gombra kattintva lépjen az Adatbázis lapra.
  2. Válassza az Adatbázis létrehozása lehetőséget.
  3. A Motorban válassza a Rugalmas MySQL-kiszolgáló lehetőséget.
  4. Válassza az Azure Cache for Redis létrehozása lehetőséget.
  5. Adja meg a gyorsítótár nevét a Név mezőben (a Gyorsítótár területen).
  6. Az SKU-ban válassza az Alapszintű lehetőséget.

4. lépés:

  1. A Tovább gombra kattintva lépjen az Üzembe helyezés lapra.
  2. Folyamatos üzembe helyezés engedélyezése.
  3. A Szervezetben válassza ki a GitHub-aliast.
  4. Az Adattárban válassza a laravel-tasks elemet.
  5. Az Ág területen válassza a lehetőséget.
  6. Győződjön meg arról, hogy az alapszintű hitelesítés le van tiltva.
  7. Válassza az Áttekintés + létrehozás lehetőséget.
  8. Miután az ellenőrzés befejeződött, válassza a Létrehozás lehetőséget.

5. lépés: Az üzembe helyezés végrehajtása néhány percet vesz igénybe. A webalkalmazás megtekintéséhez válassza az Erőforrás megnyitása lehetőséget. Az üzembe helyezés a következő erőforrásokat hozza létre:

  • Erőforráscsoport: Az összes létrehozott erőforrás tárolója.
  • App Service plan: Meghatározza az App Service számítási erőforrásait. A Basic csomagban egy Linux terv lett létrehozva.
  • App Service: Az alkalmazásodat képviseli és az App Service tervben fut.
  • Virtuális hálózat: Integrálva az App Service alkalmazással, és elkülöníti a háttérhálózati forgalmat.
  • Privát végpontok: Hozzáférési végpontok az adatbázis szerverhez és a Redis gyorsítótárhoz a virtuális hálózatban.
  • Hálózati felületek: Privát IP-címeket képvisel, minden privát végponthoz egy-egy cím.
  • Azure Database for MySQL Rugalmas Szerver: Csak a privát végpontja mögül érhető el. Létrehoznak egy adatbázist és egy felhasználót az ön számára a szerveren.
  • Azure Cache for Redis: Csak a saját privát végpontja mögül érhető el.
  • Privát DNS zónák: Engedélyezze az adatbázis szerver és a Redis gyorsítótár DNS feloldását a virtuális hálózaton belül.

Biztonságos kapcsolati titkos kódok

Az üzembe helyezés már alkalmazásbeállításokként létrehozta a kapcsolati változókat. A biztonsági ajánlott eljárás az, hogy a titkos kulcsokat teljesen távol tartjuk az App Service-ből. Helyezze át titkos kulcsait egy kulcstartóba, és módosítsa az alkalmazásbeállítást Key Vault-hivatkozásokra a Service Connectors segítségével.

1. lépés: Kérje le a meglévő kapcsolati sztringet.

  1. Az App Service lap bal oldali menüjében válassza a Beállítások>környezet változói lehetőséget.
  2. Válassza ki a kapcsolati sztringeket.
  3. Válassza a AZURE_MYSQL_CONNECTIONSTRING.
  4. Az Alkalmazás hozzáadása/szerkesztése beállításÉrték mezőjében másolja ki a felhasználónevet és a jelszót későbbi használatra. A kapcsolati sztring lehetővé teszi, hogy privát végpontok mögött védett MySQL-adatbázishoz csatlakozzon. A titkos kódok közvetlenül az App Service-alkalmazásban vannak mentve, ami nem a legjobb. Ezt a konfigurációt meg fogja változtatni.

2. lépés: Kulcstár létrehozása a titkok biztonságos kezeléséhez.

  1. A felső keresőmezőbe írja be a "key vault" kifejezést, majd válassza ki a Marketplace>Key Vault lehetőséget.
  2. Az Erőforráscsoportban válassza az msdocs-laravel-mysql_group lehetőséget.
  3. A Key Vault nevében adjon meg egy nevet, amely csak betűkből és számokból áll.
  4. A Régióban válassza ki ugyanazt a helyet, mint az erőforráscsoport.

3. lépés: Biztonságossá teheti a kulcstartót egy privát végponttal.

  1. Válassza a Hálózatkezelés lapot.
  2. Törölje a Nyilvános hozzáférés engedélyezése jelölést.
  3. Válassza a Privát végpont létrehozása lehetőséget.
  4. Az Erőforráscsoportban válassza az msdocs-laravel-mysql_group lehetőséget.
  5. A párbeszédablakban, a Hely szakaszban válassza ki ugyanazt a helyet, mint az App Service alkalmazása.
  6. Írja be a(z) Név mezőbe, msdocs-laravel-mysqlVaultEndpoint.
  7. A Virtuális hálózatban válassza ki a virtuális hálózatot az msdocs-laravel-mysql_group csoportban.
  8. Az Alhálózatban válassza ki az elérhető kompatibilis alhálózatot.
  9. Kattintson az OK gombra.
  10. Válassza a Felülvizsgálat + létrehozás, majd a Létrehozás lehetőséget. Várja meg, amíg a kulcstár telepítése befejeződik. Látnia kell , hogy az üzembe helyezés befejeződött.

4. lépés: Hozza létre a MySQL-összekötőt.

  1. A felső keresősávban írja be az msdocs-laravel-mysql kifejezést, majd válassza ki az msdocs-laravel-mysql nevű App Service-erőforrást.
  2. Az App Service lap bal oldali menüjében válassza a Beállítások>szolgáltatás-összekötő lehetőséget.
  3. Válassza a Create gombot.
  4. Szolgáltatástípus esetén válassza a rugalmas MySQL-kiszolgáló adatbázisát.
  5. Rugalmas MySQL-kiszolgáló esetén válassza ki a kiszolgálót, például msdocs-laravel-mysql-server.
  6. MySQL-adatbázis esetén válassza ki az adatbázist, például msdocs-laravel-mysql-database.

5. lépés: A MySQL-összekötő hitelesítésének konfigurálása.

  1. Válassza a Hitelesítés lapot.
  2. Válassza a Kapcsolati karaktersort.
  3. A Password mezőbe illessze be a korábban másolt jelszót.
  4. Válassza a Titok tárolása a Key Vaultban lehetőséget.
  5. A Key Vault Connection alatt válassza a Új létrehozása lehetőséget. A Kapcsolódás létrehozása párbeszédablak megnyílik a szerkesztési párbeszédablak tetején.

6. lépés: Hozza létre a Key Vault-kapcsolatot.

  1. A Csatlakozás létrehozása párbeszédablakban a Key Vault kapcsolathoz, a Key Vault-ban válassza ki a korábban létrehozott kulcstartó-tárolót.
  2. Válassza a Felülvizsgálat és létrehozás lehetőséget.
  3. Ha az ellenőrzés befejeződött, válassza a lehetőséget alétrehozásához.

7. lépés: Véglegesítse a MySQL-összekötő beállításait.

  1. Visszatér a MySQL-összekötő párbeszédpanelre. A hitelesítés fülön várja meg, amíg a kulcstároló csatlakozó létrejön. Ha elkészült, a Key Vault-kapcsolat automatikusan kiválasztja.
  2. Válassza a Felülvizsgálat és létrehozás lehetőséget.
  3. Válassza a Create gombot. Várjon, amíg megjelenik a A frissítés sikeres volt értesítés.

8. lépés: Konfigurálja a Redis-összekötőt a Key Vault titkos kulcsainak használatára.

  1. A Szolgáltatáskapcsolók oldalon jelölje be a Cache for Redis kapcsoló melletti jelölőnégyzetet, majd válassza az Szerkesztés lehetőséget.
  2. Válassza a Hitelesítés lapot.
  3. Válassza a Titok tárolása a Key Vaultban lehetőséget.
  4. A(z) Key Vault Connection alatt válassza ki a kulcstárat, amit létrehozott.
  5. Válassza a Tovább: Hálózatkezelés lehetőséget.
  6. Válassza a Tűzfal szabályok konfigurálása a cél szolgáltatás elérésének engedélyezéséhez lehetőséget. Az alkalmazás készítési varázsló már biztosította az SQL adatbázist egy privát végponttal.
  7. Válassza az Mentésgombot. Várjon, amíg megjelenik a A frissítés sikeres volt értesítés.

9. lépés: Ellenőrizze a Key Vault integrációját.

  1. A bal oldali menüben válassza ismét a Beállítások>környezet változói lehetőséget.
  2. A AZURE_MYSQL_PASSWORD mellett válassza az Érték megjelenítése lehetőséget. Az értéknek @Microsoft.KeyVault(...) kell lennie, ami azt jelenti, hogy ez egy kulcs tárhely hivatkozás, mert a titok most már a kulcs tárhelyen van kezelve.
  3. A Redis kapcsolati karakterlánc ellenőrzéséhez válassza a Érték megjelenítése lehetőséget az AZURE_REDIS_CONNECTIONSTRING mellett.

Összefoglalva, a kapcsolat titkainak biztosításához szükséges folyamat a következőket tartalmazta:

  • Az App Service alkalmazás környezeti változóiból kapcsolati titkok visszakeresése.
  • Kulcstároló létrehozása.
  • Rendszer által hozzárendelt felügyelt identitással létrehozni egy Key Vault kapcsolatot.
  • Frissítjük a szolgáltatáskapcsolókat, hogy a titkokat a kulcstárolóban tárolják.

Problémákat tapasztal? Nézze meg a Hibaelhárítás szakaszt.


Laravel-változók konfigurálása

1. lépés: Hozza létre CACHE_DRIVER alkalmazásbeállításként.

  1. A webalkalmazásban válassza a Beállítások>környezet változói lehetőséget.
  2. Az Alkalmazásbeállítások lapon válassza a Hozzáadás lehetőséget.
  3. A Név mezőbe írja be a CACHE_DRIVER.
  4. Az Érték mezőben adja meg a redis értéket.
  5. Válassza az Alkalmaz lehetőséget, majd megint az Alkalmaz opciót, végül a Megerősítés lehetőséget.

2. lépés: Az 1. lépésben ismertetett lépésekkel hozza létre az alábbi alkalmazásbeállításokat. A befejezés után válassza az Alkalmaz elemet az alkalmazásbeállítások frissítéséhez.

Fontos

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

Ideális esetben a APP_KEY alkalmazásbeállítást kulcstárház referencia formájában is konfigurálni kellene, ami egy több lépésből álló folyamat. További információért lásd: Hogyan módosíthatom az APP_KEY alkalmazás-beállítást egy Key Vault hivatkozásra?

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 a sok lehetőség közül, amivel telepítheti az App Service-t, de egyben nagyszerű módja annak is, hogy folyamatos integráció legyen a telepítési folyamatában. Alapértelmezés szerint minden git push a GitHub tárházadba elindítja az építési és telepítési műveletet.

1. lépés: Térjen vissza a minta elágazás GitHub-kódterébe, és futtassa le a git pull origin main parancsot. Ez a parancs betölti a frissen elkötelezett munkafolyamat-fájlt a kódtérbe.

2. lépés (1. lehetőség: a GitHub Copilottal):

  1. Indítson új csevegési munkamenetet úgy, hogy kiválasztja a Chat nézetet, majd a + lehetőséget.
  2. Kérdezze meg: "@workspace Hogyan csatlakozik az alkalmazás az adatbázishoz és a redishez?" A Copilot adhat némi magyarázatot arra, hogyan vannak beállítva a beállítások a config/database.php fájlban.
  3. Kérdezze meg a következőt: "@workspace Éles módban az alkalmazásom egy App Service-webalkalmazásban fut, amely az Azure Service Connector használatával csatlakozik egy rugalmas MySQL-kiszolgálóhoz. Milyen környezeti változóneveket kell használnom?" Előfordulhat, hogy a Copilot a 2. lehetőséghez hasonló kódjavaslatot ad : a GitHub Copilot lépései nélkül , és még a konfiguráció/database.php fájl módosítását is meg kell adnia.
  4. Nyissa meg az config/database.php fájlt a felfedezőben, és adja hozzá a kódjavaslatot.
  5. Kérdezze meg a következőt: "@workspace Az App Service-alkalmazás az Azure Service Connector használatával is csatlakozik a Cache for Redishez a Django-ügyféltípus használatával. Milyen környezeti változóneveket kell használnom?" Előfordulhat, hogy a Copilot a 2. lehetőséghez hasonló kódjavaslatot ad : a GitHub Copilot lépései nélkül , és még a konfiguráció/database.php fájl módosítását is meg kell adnia. Ha a rendszer kéri, jelentkezzen be a GitHub Copilot for Azure szolgáltatásba, hogy pontosabb válaszokat kapjon.
  6. Adja hozzá a kódjavaslatot.

A GitHub Copilot nem ad mindig ugyanazt a választ, és nem mindig helyes. Érdemes lehet több kérdést feltenni, hogy finomhangolja a választ. További tippekért lásd: Mit tehetek a GitHub Copilottal a kódszerkesztési térben?.

2. lépés (2. lehetőség: a GitHub Copilot nélkül):

  1. Nyisd meg a config/database.php fájlt az explorerben. Keresse meg a mysql szakaszt, és végezze el a következő módosításokat:
  2. Cserélje le DB_HOST a (49. sor) elemet a helyére AZURE_MYSQL_HOST.
  3. Cserélje le DB_DATABASE (51. sor) a helyére AZURE_MYSQL_DBNAME.
  4. Cserélje le DB_USERNAME (52. sor) a helyére AZURE_MYSQL_USERNAME.
  5. Cserélje le DB_PASSWORD (53. sor) a helyére AZURE_MYSQL_PASSWORD.
  6. Cserélje le DB_PORT (50. sor) a helyére AZURE_MYSQL_PORT.
  7. Görgessen le a Redis cache szakaszhoz, és végezze el a következő módosításokat:
  8. Cserélje le REDIS_HOST a (142. sor) elemet a AZURE_REDIS_HOSThelyére.
  9. Cserélje le REDIS_PASSWORD a (144. sor) elemet a helyére AZURE_REDIS_PASSWORD.
  10. Cserélje le REDIS_PORT (145. sor) a helyére AZURE_REDIS_PORT.
  11. Cserélje le a 146. sorban lévő REDIS_CACHE_DB elemet AZURE_REDIS_DATABASE-re.
  12. Ugyanebben a szakaszban adj hozzá egy sort 'scheme' => 'tls',. Ez a konfiguráció megadja a Laravel számára, hogy titkosítást használjon a Redishez való csatlakozáshoz.

3. lépés:

  1. Válassza a Source Control kiterjesztést.
  2. A szövegmezőbe írjon be egy véglegesítési üzenetet, például az Azure-adatbázis- és gyorsítótár-kapcsolatok konfigurálását. Vagy válassza ki a , és hagyja, hogy a GitHub Copilot generáljon egy commit üzenetet önnek.
  3. Válassza a Commit lehetőséget, majd erősítse meg a Igen gombbal.
  4. Válassza a Sync changes 1 lehetőséget, majd erősítse meg a OK gombbal.

4. lépés:

  1. Az Azure Portalon nyissa meg a webalkalmazást, majd válassza az Üzembe helyezési>központ lehetőséget.
  2. Válassza a Naplók lehetőséget, majd a Frissítés lehetőséget az új üzembe helyezés futtatásának megtekintéséhez.
  3. A telepítési futtatás naplóelemében válassza ki a legfrissebb időbélyeggel rendelkező Build/Deploy Logs bejegyzést.

5. lépés: A rendszer a GitHub-adattárba viszi, és láthatja, hogy a GitHub-művelet fut. A munkafolyamat fájl két különálló szakaszt határoz meg: építés és telepítés. Várja meg, amíg a GitHub futtatása Sikeres állapotot mutat. Körülbelül 10 percet vesz igénybe.

Problémákat tapasztal? Nézze meg a Hibaelhárítás szakaszt.

Adatbázisséma létrehozása

A létrehozó varázsló egy privát végpontra helyezi a MySQL adatbázis-szervert, így az csak a virtuális hálózaton keresztül érhető el. Mivel az App Service alkalmazás már integrálva van a virtuális hálózattal, a legegyszerűbb módja annak, hogy adatbázis-migrációkat hajts végre az adatbázisoddal, az, hogy közvetlenül az App Service konténerből futtasd őket.

1. lépés: Vissza az App Service lapra a bal oldali menüben:

  1. Válassza a Development Tools>SSH lehetőséget.
  2. Válassza az Indít elemet.

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

  1. Futtassa a cd /home/site/wwwroot programot. Itt vannak az összes telepített fájlod.
  2. Futtassa a php artisan migrate --force programot. Ha sikerül, az App Service sikeresen csatlakozik a MySQL-adatbázishoz.

Jótanács

Az SSH munkamenetben csak a /home fájlokban végrehajtott módosítások maradhatnak meg az alkalmazás újraindításai után. A /home-n kívüli módosítások nem maradnak meg.

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). 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 shell használatával. A módosítás a /home kívül esik, és az alkalmazás újraindítása után elvész.

1. lépés:

  1. A bal oldali menüben válassza a Beállítások konfigurációja lehetőséget>.
  2. Válassza a Általános beállítások fület.

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

  1. A Startup Command 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, majd a Folytatás lehetőséget. A parancs lecseréli az Nginx konfigurációs fájlt a PHP konténerben, és újraindítja az Nginx-et. Ez a konfiguráció biztosítja, hogy minden indításkor ugyanaz a változtatás történjen meg a tárolón.

Keresse meg az alkalmazást

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

  1. A bal oldali menüből válassza az Áttekintés lehetőséget.
  2. Válassza ki az alkalmazás alapértelmezett tartományát.

2. lépés: Adj hozzá néhány feladatot a listához. Gratulálok, biztonságos, adatközpontú PHP alkalmazást futtatsz az Azure App Service-ben.

Jótanács

A mintaalkalmazás a cache-aside mintát valósítja meg. Amikor az oldalt újratöltik az adatok módosítása után, a weboldalon a Válaszidő sokkal gyorsabb időt mutat, mert az adatokat a gyorsítótárból tölti be az adatbázis helyett.

Diagnosztikai naplók streamelése

Az Azure App Service 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. Alapértelmezés szerint a Laravel naplózási funkciója, például Log::info(), egy helyi fájlba írja ki az eredményt. A korábbi LOG_CHANNEL alkalmazásbeállítás a naplóbejegyzéseket elérhetővé teszi az App Service naplófolyamon keresztül.

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

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

2. lépés: A bal oldali menüből válassza a Naplófolyam lehetőséget. Ön látja az alkalmazás naplóit, beleértve a platformnaplókat és a konténer belsejéből származó naplókat.

Az erőforrások felszabadítása

Amikor befejezted, törölheted az összes erőforrást az Azure előfizetésedből úgy, hogy törlöd az erőforráscsoportot.

1. lépés: Az Azure portál tetején lévő keresősávban:

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

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

3. lépés:

  1. A törlés megerősítéséhez adja meg az erőforráscsoport nevét.
  2. Válassza a Törlés lehetőséget.

Azure-erőforrások létrehozása és mintaalkalmazás üzembe helyezése

Ebben a lépésben létrehozza az Azure-erőforrásokat, és üzembe helyez egy mintaalkalmazást a Linuxon futó App Service-ben. A bemutatóban használt lépések egy biztonságos alapértelmezett beállításokkal rendelkező erőforráskészletet hoznak létre, amely tartalmazza az App Service-t és az Azure Database for MySQL-t.

A GitHub-kódhely már tartalmazza az Azure Developer CLI (AZD) eszközt.

  1. Generálj egy Laravel titkosítási kulcsot a php artisan key:generate --show segítségével:

    php artisan key:generate --show
    
  2. Az Azure-ba való belépéshez futtassa a azd auth login parancsot, és kövesse az utasításokat.

    azd auth login
    
  3. Hozza létre a szükséges Azure erőforrásokat, és telepítse az alkalmazáskódot a azd up parancs segítségével. Kövesse a felszólítást, hogy válassza ki a kívánt előfizetést és helyszínt az Azure erőforrásokhoz.

    azd up
    
  4. Amikor a rendszer kéri, adja meg a következő válaszokat:

    Kérdés Válasz
    Adjon meg egy új környezetnevet Írjon be egy egyedi nevet. Az AZD sablon ezt a nevet használja a DNS név részeként az Azure-ban található webalkalmazásához (<app-name>-<hash>.azurewebsites.net). Alfanumerikus karakterek és kötőjelek engedélyezettek.
    Válasszon ki egy Azure-előfizetést a használathoz Válassza ki az előfizetését.
    Válasszon egy Azure helyet, amelyet használni szeretne Válasszon egy helyet.
    Adjon meg egy értéket az 'appKey' infrastruktúra biztosított paraméteréhez. Használja itt a php artisan key:generate --show kimenetét. Az AZD sablon egy Key Vault titkot hoz létre az alkalmazásához, amelyet használhat az alkalmazásában.
    Adjon meg egy értéket a 'databasePassword' infrastruktúra biztonságos paraméterhez. MySQL adatbázis jelszó Legalább 8 karakter hosszúnak kell lennie, és nagybetűket, kisbetűket, számokat és speciális karaktereket kell tartalmaznia.

    A azd up parancs végrehajtása körülbelül 15 percet vesz igénybe. A Redis-gyorsítótár a legtöbb időt igénybe veszi. A parancs emellett lefordítja és üzembe helyezi az alkalmazáskódot, de később módosítja a kódot, hogy működjön az App Service-lel. Amíg fut, a parancs üzeneteket küld a kiépítési és üzembe helyezési folyamatról, beleértve az Azure-beli üzembe helyezésre mutató hivatkozást is. Amikor befejeződik, a parancs egy hivatkozást is megjelenít az üzembe helyezési alkalmazásra.

    Ez az AZD sablon olyan fájlokat tartalmaz (azure.yaml és a infra könyvtár), amelyek alapértelmezett módon biztonságos architektúrát hoznak létre a következő Azure-erőforrásokkal:

    • Erőforráscsoport: Az összes létrehozott erőforrás tárolója.
    • App Service plan: Meghatározza az App Service számítási erőforrásait. Létrehoztak egy Linux tervet a B1 szinthez.
    • App Service: Az alkalmazásodat képviseli és az App Service tervben fut.
    • Virtuális hálózat: Integrálva az App Service alkalmazással, és elkülöníti a háttérhálózati forgalmat.
    • Azure Database for MySQL Flexible Server: Csak a virtuális hálózaton keresztül érhető el a DNS zóna integráción keresztül. Létrehoznak egy adatbázist az ön számára a szerveren.
    • Azure Cache for Redis: Csak a virtuális hálózaton belülről érhető el.
    • Private endpoints: Elérési végpontok a kulcstárolóhoz és a Redis cache-hez a virtuális hálózatban.
    • Privát DNS zónák: Lehetővé teszik a kulcsértár, az adatbázis-szerver és a Redis cache DNS-feloldását a virtuális hálózatban.
    • Log Analytics munkaterület: Ez a célkörnyezet az alkalmazás naplóinak továbbítására, ahol a naplókat is lekérdezheti.
    • Key vault: Az adatbázis jelszavának azonosan tartására szolgál, amikor az AZD-vel újratelepít.

Problémákat tapasztal? Nézze meg a Hibaelhárítás szakaszt.

Azure-kapcsolati sztringek használata az alkalmazáskódban

A használt AZD-sablon már alkalmazásbeállításokként létrehozta a kapcsolati változókat, és a terminálon adja ki őket. Az alkalmazásbeállítások az egyik módja annak, hogy a kapcsolati titkokat távol tartsuk a kódrepozitóriumodtól.

  1. Az AZD kimenetben keresse meg azokat az alkalmazásbeállításokat, amelyek AZURE_MYSQL_ és AZURE_REDIS_ kezdetűek. Csak a beállítások nevei jelennek meg. Így néznek ki az AZD kimenetében:

    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
    

    A kezdeti AZURE_MYSQL_ beállítások a MySQL-adatbázis kapcsolatváltozói. Azok a beállítások, amelyek AZURE_REDIS_-vel kezdődnek, a Redis cache-hez tartoznak. Később használnod kell őket a kódodban. Az AZD-sablon az alkalmazás alkalmazásbeállítási oldalára mutató közvetlen hivatkozást jeleníti meg az Azure Portalon.

  2. A fájlkezelőben nyissa meg a config/database.php fájlt. Ez a fájl az adatbázis- és Redis-gyorsítótár-kapcsolatok konfigurációs fájlja.

  3. Keresse meg azt a részt, amely meghatározza a mysql kapcsolatot (46-64. sorok), és cserélje ki a DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME és DB_PASSWORD elemeket az AZD kimenet AZURE_MYSQL_ alkalmazásbeállításaival. A(z) mysql kapcsolatnak a következő kódhoz hasonlónak kell lennie.

    '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'),
        ]) : [],
    ],
    

    További információért a Laravel adatbázis konfigurálásával kapcsolatban, lásd a Laravel dokumentáció.

  4. Keresse meg azt a részt, amely meghatározza a Redis gyorsítótár kapcsolatát (a 140-147. sorokban), és cserélje le a REDIS_HOST, REDIS_PASSWORD, REDIS_PORT és REDIS_CACHE_DB elemeket az AZD kimenetéből származó Azure_REDIS_ alkalmazásbeállításokra. Továbbá, add 'scheme' => 'tls', a kapcsolatba. A gyorsítótár-kapcsolatnak a következő kódnak kell kinéznie:

    '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'),
    ],
    

    További információkért a Redis gyorsítótár konfigurációjáról Laravelben tekintse meg a Laravel dokumentációt.

    Megjegyzés:

    Ne feledd, hogy a változtatásaid még nincsenek telepítve. A következő lépés végén üzembe helyezheti őket.

Laravel-beállítások konfigurálása a webalkalmazásban

  1. A böngészőből nyissa meg a infra/resources.bicep fájlt. Ez a fájl a létrehozott Azure-erőforrásokat meghatározó Bicep-fájl.

  2. Keresd meg azt a részt, amely az alkalmazás beállításait határozza meg (510-514. sorok), és töröld a kommentelést róluk. Ezek az alkalmazásbeállítások:

    Beállítás Leírás
    CACHE_DRIVER Megmondja a Laravel-nek, hogy a Redis-t használja gyorsítótárként (lásd Laravel dokumentáció).
    MYSQL_ATTR_SSL_CA Szükséges megnyitni egy TLS kapcsolatot a MySQL-hez az Azure-ban. A tanúsítvány fájl a mintatárolóban található a kényelem érdekében. Ezt a változót az config/database.php fájlban a mysql kapcsolat használja.
    LOG_CHANNEL Arra utasítja a Laravelt, hogy a naplókat továbbítsa stderr-hoz, amely így elérhetővé válik az App Service naplóiban (lásd a Laravel dokumentációját).
    APP_DEBUG Engedélyezze a hibakeresési mód oldalak használatát Laravelben (lásd Laravel dokumentáció).
    APP_KEY Laravel titkosítási változó. Az AZD-sablon már létrehozott egy Key Vault-titkos kulcsot (212–217. sor), így egy Key Vault-hivatkozással érheti el.
  3. Keresse meg az infra/resources.bicep fájlban az App Service alkalmazás erőforrás definícióját, és kommentelje vissza a 315. sort.

    appCommandLine: 'cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload'
    

    A Laravel alkalmazás életciklusa az alkalmazásgyökér helyett a /public könyvtárban kezdődik. Az App Service alapértelmezett PHP tárolója az Nginx-et használja, amely az alkalmazás gyökerében indul. 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).

    A mintaadattár egy alapértelmezett nevű helyettesítő konfigurációs fájlt tartalmaz, amely arra utasítja az Nginxet, hogy keresse meg a /public könyvtárat. Az alkalmazás minden indításakor a appCommandLine egyéni parancs fut, hogy a fájlcsere minden alkalommal végrehajtásra kerüljön, amikor a Linux-konténer tiszta állapotból újratöltődik.

  4. Térjen vissza a codespace terminálhoz, és futtassa újra a azd up parancsot.

    azd up
    

Jótanács

azd up fut, azd package, azd provision és azd deploy együtt, mert mind az infrastruktúrát, mind az alkalmazásokat módosítja. Kizárólag infrastruktúra módosítások végrehajtásához futtassa a azd provision-t. Ahhoz, hogy csak az alkalmazáskód módosításait telepítse, futtassa azd deploy.

Problémákat tapasztal? Nézze meg a Hibaelhárítás szakaszt.

Adatbázisséma létrehozása

Azáltal, hogy a MySQL adatbázist a virtuális hálózat védi, a Laravel adatbázis-migrációk futtatásának legegyszerűbb módja az SSH kapcsolat a Linux konténerrel az App Service-ben.

  1. Az AZD kimenetében keresse meg az SSH-munkamenet URL-jét, és nyissa meg a böngészőben. Így jelenik meg a kimenetben:

    Open SSH session to App Service container at: <URL>
    
  2. Az SSH munkamenetben futtassa az adatbázis-migrációkat a /home/site/wwwroot könyvtárból.

    cd /home/site/wwwroot
    php artisan migrate --force
    

    Ha sikeres, az App Service sikeresen csatlakozik az adatbázishoz.

Megjegyzés:

Csak az /home fájlokban végrehajtott módosítások maradhatnak meg az alkalmazás újraindítása után is.

Problémákat tapasztal? Nézze meg a Hibaelhárítás szakaszt.

Keresse meg az alkalmazást

  1. Az AZD-kimenetben keresse meg az alkalmazás URL-címét, és keresse meg a böngészőben. Az URL-cím így néz ki az AZD-kimenetben:

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
      - Endpoint: <URL>
    
  2. Adj hozzá néhány feladatot a listához.

    Képernyőkép a Laravel webalkalmazásról, amelyen az Azure-ban futó MySQL feladatok láthatók.

    Gratulálunk, Ön futtat egy webalkalmazást az Azure App Service-ben, biztonságos kapcsolattal az Azure Database for MySQL-hoz.

Problémákat tapasztal? Nézze meg a Hibaelhárítás szakaszt.

Diagnosztikai naplók streamelése

Az Azure App Service rögzíti a konzolra naplózott összes üzenetet, hogy segítsen az alkalmazással kapcsolatos problémák diagnosztizálásában. A kényelem érdekében az AZD sablon már engedélyezte a naplózást a helyi fájlrendszerbe, és a naplókat egy Log Analytics munkaterületre továbbítja.

A mintaalkalmazás minden végpontján konzolnapló-üzeneteket ad ki, hogy bemutassuk ezt a képességet. Alapértelmezés szerint a Laravel naplózási funkciója, például Log::info(), egy helyi fájlba írja ki az eredményt. A korábbi LOG_CHANNEL alkalmazásbeállítás a naplóbejegyzéseket elérhetővé teszi az App Service naplófolyamon keresztül.

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]);
});

Az AZD kimenetében keresse meg az App Service naplók streamelésére szolgáló linket, és nyissa meg azt a böngészőben. A hivatkozás így néz ki az AZD kimenetében:

Stream App Service logs at: &lt;URL>

Problémákat tapasztal? Nézze meg a Hibaelhárítás szakaszt.

Az erőforrások felszabadítása

Az aktuális telepítési környezet összes Azure-erőforrásának törléséhez futtassa a azd down parancsot, és kövesse az utasításokat.

azd down

Hibaelhárítás

Hibát kapok az adatbázis-migrációk során php_network_getaddresses: getaddrinfo for mysqldb failed: No address associated with hostname...

Azt jelzi, hogy a MySQL kapcsolatváltozók nincsenek megfelelően konfigurálva. Ellenőrizze, hogy az AZURE_MYSQL_ alkalmazásbeállítások megfelelően vannak-e konfigurálva az Azure-kapcsolati sztringek használata az alkalmazáskódban.

A böngészőben egy üres oldalt kapok.

Jelzi, hogy az App Service nem találja a PHP indítófájlokat a /public könyvtárban. Kövesse a Web App Laravel-beállításainak konfigurálása című témakörben leírt lépéseket.

A böngészőben egy hibakereső oldalt kapok, amely azt mondja, hogy Unsupported cipher or incorrect key length.

Az jelzi, hogy a APP_KEY beállítás egy érvénytelen kulcsra van állítva. Amikor futtatja a azd up-t, ügyeljen arra, hogy a appKey-t a php artisan key:generate --show kimenetére állítsa.

A böngészőben egy hibakereső oldalt kapok, amely azt mondja, hogy Uncaught Error: Class "Illuminate\..." not found.

Ez a hiba és a hasonló hibák arra utalnak, hogy nem futtatta a composer install a azd up előtt, vagy hogy a /vendor könyvtárban található csomagok elavultak. Futtassa újra composer install és azd deploy.

A böngészőben egy hibakereső oldalt kapok, amely azt mondja, hogy php_network_getaddresses: getaddrinfo for redishost failed: Name or service not known.

Ez azt jelzi, hogy a Redis kapcsolati változók nincsenek megfelelően konfigurálva. Ellenőrizze, hogy az AZURE_REDIS_ alkalmazásbeállítások megfelelően vannak-e konfigurálva az Azure-kapcsolati sztringek használata az alkalmazáskódban.

A böngészőben egy hibakereső oldalt kapok, amely azt mondja, hogy SQLSTATE[42S02]: Base table or view not found: 1146 Table 'XXXX-XXXXXXXXX-mysql-database.tasks' doesn't exist

Ez azt jelenti, hogy nem hajtott végre adatbázismigrációkat, vagy az adatbázismigrációk nem voltak sikeresek. Kövesse az adatbázisséma létrehozása című témakörben leírt lépéseket.

Gyakran ismételt kérdések

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

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

  • Az App Service terv Basic rétegben lett létrehozva, és felfelé vagy lefelé skálázható. Lásd a App Service árazását.
  • A MySQL rugalmas szerver B1ms szinten van létrehozva, és méretét felfelé vagy lefelé lehet módosítani. Az Azure ingyenes fiókkal 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 Alap szintű konfigurációban, minimális gyorsítótár mérettel jön létre. Egy kis díj kapcsolódik ehhez a szinthez. A teljesítményt magasabb szintre növelheted a nagyobb rendelkezésre állás, fürtképzés és egyéb funkciók érdekében. Tekintse meg Azure Cache for Redis árazását.
  • A virtuális hálózat nem jár költséggel, hacsak nem konfigurál extra funkciókat, például az összekapcsolá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 csatlakozhatok a MySQL adatbázishoz, amely a virtuális hálózat mögött, más eszközökkel védve van?

  • Az alapvető hozzáféréshez egy parancssori eszközről futtassa a(z) mysql parancsot az alkalmazás SSH termináljáról.
  • A MySQL Workbenchhez hasonló asztali eszközről való csatlakozáshoz a számító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 számítógépe, amely helyek közötti VPN-kapcsolattal rendelkezik az Azure-beli virtuális hálózattal.
  • Azt is megteheti, hogy integrálja a Azure Cloud Shell-t a virtuális hálózattal.

Hogyan módosíthatom az APP_KEY alkalmazásbeállítást úgy, hogy egy Kulcstár-hivatkozásra mutasson?

A Laravel-változók konfigurálásával kapcsolatos Azure Portal-lépésekből Key Vault-referenciára válthat APP_KEY a Következő Azure CLI-parancsok futtatásával a GitHub-kódtérben:

# 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)"

Ugyanezt megteheti az Azure Portalon is. További információk:

  1. Key Vault terület szerep hozzárendelés
  2. Titok hozzáadása a Key Vaulthoz
  3. Hozzáférés egy titokhoz a Kulcstárból
  4. Alkalmazásbeállítások konfigurálása

Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actionsszel?

Példaként vegyük példaként az App Service automatikusan létrehozott munkafolyamat-fájlját. Mindegyik git push elindít egy új buildet és üzembe helyezési futtatást. GitHub tároló helyi másolatáról elvégezzük a kívánt frissítéseket, majd feltöltjük őket a GitHubra. Például:

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

Miért olyan lassú a GitHub Actions telepítése?

Az App Service automatikusan létrehozott munkafolyamat-fájlja meghatározza az építsd- és telepítsd folyamatot, valamint két feladat futtatását. 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 során az idő nagy részét a fájlok feltöltése és letöltése veszi igénybe. Ha szeretné, egyszerűsítheti a munkafolyamat fájlt úgy, hogy a két feladatot egyesíti, mely megszünteti a feltöltési és letöltési lépések szükségességét.

Nincs jogosultságom egy felhasználó által hozzárendelt identitás létrehozásához

Nézd meg a GitHub Actions telepítés beállítását a Telepítési Központból .

Mit tehetek a GitHub Copilottal a kódteremben?

** Észreveheti, hogy a GitHub Copilot csevegőnézete már ott volt az Ön számára, amikor létrehozta a kódteret. Az Ön kényelme érdekében a konténer definícióba beépítettük a GitHub Copilot chat kiterjesztést (lásd .devcontainer/devcontainer.json). Azonban szükséged van egy GitHub Copilot fiókra (30 napos ingyenes próbaidőszak elérhető).

Néhány tipp, amikor a GitHub Copilot-tal beszélgetsz:

  • Egyetlen chatbeszélgetés során a kérdések és válaszok egymásra épülnek, és finomíthatja kérdéseit, hogy pontosabb választ kapjon.
  • Alapértelmezés szerint a GitHub Copilot nem fér hozzá a tárhelyed egyetlen fájljához sem. A fájlokkal kapcsolatos kérdések feltevése előtt nyissa meg a fájlt a szerkesztőben.
  • Annak érdekében, hogy a GitHub Copilot hozzáférjen a tároló összes fájljához a válaszok előkészítése során, kezdje a kérdést a @workspace-val. További információ: Use the @workspace agent.
  • A csevegési munkamenetben a GitHub Copilot javasolhat módosításokat @workspace, és akár azt is, hogy hol végezze el a módosításokat, de nem hajthatja végre azokat helyetted. Rajtad áll, hogy hozzáadd a javasolt változtatásokat, és teszteld azokat.

Lépjen tovább a következő oktatóanyagra, hogy megtanulja, hogyan biztosíthatja alkalmazását egyéni domain-nel és tanúsítvánnyal.

Vagy tekintse át ezt az erőforrást: