Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez az oktatóanyag bemutatja, hogyan lehet biztonságos PHP alkalmazást létrehozni Azure App Service-ben, amely egy MySQL adatbázishoz kapcsolódik az Azure Database for MySQL Flexible Server segítségével. Az Azure Managed Redis használatához kövesse az Azure Developer CLI lépéseit. 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. Amikor befejezted, van egy Laravel alkalmazásod Azure App Service on Linux-on.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Ha nem rendelkezik Azure-fiókkal, ingyenesen létrehozhat egyet.
- Egy GitHub-fiók. Ingyenesen is beszerezhet egyet.
- A PHP és a Laravel fejlesztés ismerete.
- (Opcionális) A GitHub Copilot kipróbálásához egy GitHub Copilot fiókra van szükség. 30 napos ingyenes próba elérhető.
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:
- Jelentkezzen be GitHub-fiókjába.
- Navigáljon ide: https://github.com/Azure-Samples/laravel-tasks/fork.
- Válassza a Fork létrehozása lehetőséget.
2. lépés: A GitHub fork-ban:
3. lépés: A codespace terminálban:
- Futtassa a
composer installprogramot. - Hajtsa végre az adatbázis-migrációkat
php artisan migratesegítségével. - Futtassa az alkalmazást
php artisan serve. - 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.
Létrehozni alkalmazásszolgáltatást és adatbázist
Ebben a lépésben hozza létre az Azure-erőforrásokat. 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 létrehozási folyamathoz megadja:
- 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:
- A felső keresősávba írja be az App Service-t.
- Válassza ki az App Service címkével ellátott elemet a Szolgáltatások fejléc alatt.
- 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.
- Név: msdocs-laravel-mysql. Az Azure Portal létrehoz egy msdocs-laravel-mysql_group nevű erőforráscsoportot.
- Futási idejű stack:PHP 8.3.
- Operációs rendszer: Linux.
- Régió: Bármelyik Azure-régió a közeledben.
- Linux-csomag: Hozzon létre újat , és használja az msdocs-laravel-mysql nevet.
- Tarifacsomag: Alapszintű. Ha készen áll, áttérhet egy másik tarifacsomagra.
3. lépés:
- A Tovább gombra kattintva lépjen az Adatbázis lapra.
- Válassza az Adatbázis létrehozása lehetőséget.
- A Motorban válassza a Rugalmas MySQL-kiszolgáló lehetőséget.
- Ne válassza az Azure Cache for Redis létrehozása lehetőséget.
4. lépés:
- A Tovább gombra kattintva lépjen az Üzembe helyezés lapra.
- Folyamatos üzembe helyezés engedélyezése.
- A Szervezetben válassza ki a GitHub-aliast.
- Az Adattárban válassza a laravel-tasks elemet.
- Az Ág területen válassza a fő lehetőséget.
- Győződjön meg arról, hogy az alapszintű hitelesítés le van tiltva.
- Válassza az Áttekintés + létrehozás lehetőséget.
- 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 a virtuális hálózaton lévő adatbázis-kiszolgálóhoz.
- 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.
- saját DNS zónák: Az adatbázis-kiszolgáló DNS-feloldásának engedélyezése a virtuális hálózaton.
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.
- Az App Service lap bal oldali menüjében válassza a Beállítások>környezet változói lehetőséget.
- Válassza ki a kapcsolati sztringeket.
- Válassza a AZURE_MYSQL_CONNECTIONSTRING.
- 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.
- A felső keresőmezőbe írja be a "key vault" kifejezést, majd válassza ki a Marketplace>Key Vault lehetőséget.
- Az Erőforráscsoportban válassza az msdocs-laravel-mysql_group lehetőséget.
- A Key Vault nevében adjon meg egy nevet, amely csak betűkből és számokból áll.
- 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.
- Válassza a Hálózatkezelés lapot.
- Törölje a Nyilvános hozzáférés engedélyezése jelölést.
- Válassza a Privát végpont létrehozása lehetőséget.
- Az Erőforráscsoportban válassza az msdocs-laravel-mysql_group lehetőséget.
- A párbeszédablakban, a Hely szakaszban válassza ki ugyanazt a helyet, mint az App Service alkalmazása.
- Írja be a(z) Név mezőbe, msdocs-laravel-mysqlVaultEndpoint.
- A Virtuális hálózatban válassza ki a virtuális hálózatot az msdocs-laravel-mysql_group csoportban.
- Az Alhálózatban válassza ki az elérhető kompatibilis alhálózatot.
- Kattintson az OK gombra.
- 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.
- 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.
- Az App Service lap bal oldali menüjében válassza a Beállítások>szolgáltatás-összekötő lehetőséget.
- Válassza a Create gombot.
- Szolgáltatástípus esetén válassza a rugalmas MySQL-kiszolgáló adatbázisát.
- Rugalmas MySQL-kiszolgáló esetén válassza ki a kiszolgálót, például msdocs-laravel-mysql-server.
- 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.
- Válassza a Hitelesítés lapot.
- Válassza a Kapcsolati karaktersort.
- A Password mezőbe illessze be a korábban másolt jelszót.
- Válassza a Titok tárolása a Key Vaultban lehetőséget.
- 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.
- 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.
- Válassza a Felülvizsgálat és létrehozás lehetőséget.
- 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.
- 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.
- Válassza a Felülvizsgálat és létrehozás lehetőséget.
- Válassza a Create gombot. Várjon, amíg megjelenik a A frissítés sikeres volt értesítés.
8. lépés: Ellenőrizd a Key Vault integrációját.
- A bal oldali menüben válassza ismét a Beállítások>környezet változói lehetőséget.
- 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.
Ö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: Hozd 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.
- A webalkalmazásban válassza a Beállítások>környezet változói lehetőséget.
- Az Alkalmazásbeállítások lapon válassza a Hozzáadás lehetőséget.
- MYSQL_ATTR_SSL_CA: Használd az /etc/ssl/certs/ca-certificates.crt é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. Ez elérhető az App Service platformon.
- LOG_CHANNEL: Használja értékként a stderr-t. 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: Az érték legyen igaz. Ez egy Laravel hibakeresési változó , amely lehetővé teszi a hibakeresési módú oldalakat.
- APP_KEY: Használja base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= értékként. Ez egy Laravel titkosítási változó.
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):
- Indítson új csevegési munkamenetet úgy, hogy kiválasztja a Chat nézetet, majd a + lehetőséget.
- Kérdezd meg: "@workspace Hogyan kapcsolódik az alkalmazás az adatbázishoz?"Copilot talán adok magyarázatot arra, hogyan vannak konfigurálva a beállítások a config/database.php-ben.
- 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.
- Nyissa meg az config/database.php fájlt a felfedezőben, és 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):
- Nyisd meg a config/database.php fájlt az explorerben. Keresse meg a
mysqlszakaszt, és végezze el a következő módosításokat: - Cserélje le
DB_HOSTa (49. sor) elemet a helyéreAZURE_MYSQL_HOST. - Cserélje le
DB_DATABASE(51. sor) a helyéreAZURE_MYSQL_DBNAME. - Cserélje le
DB_USERNAME(52. sor) a helyéreAZURE_MYSQL_USERNAME. - Cserélje le
DB_PASSWORD(53. sor) a helyéreAZURE_MYSQL_PASSWORD. - Cserélje le
DB_PORT(50. sor) a helyéreAZURE_MYSQL_PORT.
3. lépés:
- Válassza a Source Control kiterjesztést.
- A szövegmezőbe írj be egy commit üzenetet, például az Configure Azure database connections. Vagy válassza ki a
, és hagyja, hogy a GitHub Copilot generáljon egy commit üzenetet önnek. - Válassza a Commit lehetőséget, majd erősítse meg a Igen gombbal.
- Válassza a Sync changes 1 lehetőséget, majd erősítse meg a OK gombbal.
4. lépés:
- Az Azure Portalon nyissa meg a webalkalmazást, majd válassza az Üzembe helyezési>központ lehetőséget.
- 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.
- 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:
- Válassza a Development Tools>SSH lehetőséget.
- Válassza az Indít elemet.
2. lépés: Az SSH terminálban:
- Futtassa a
cd /home/site/wwwrootprogramot. Itt vannak az összes telepített fájlod. - Futtassa a
php artisan migrate --forceprogramot. 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:
- A bal oldali menüben válassza a Beállítások konfigurációja lehetőséget>.
- Válassza a Általános beállítások fület.
2. lépés: Az Általános beállítások lapon:
- A Startup Command mezőbe írja be a következő parancsot: cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload.
- 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:
- A bal oldali menüből válassza az Áttekintés lehetőséget.
- 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.
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:
- A bal oldali menüben válassza azApp Service-naplók> lehetőséget.
- 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:
- Adja meg az erőforráscsoport nevét.
- 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:
- A törlés megerősítéséhez adja meg az erőforráscsoport nevét.
- 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.
Generálj egy Laravel titkosítási kulcsot a
php artisan key:generate --showsegítségével:php artisan key:generate --showAz Azure-ba való belépéshez futtassa a
azd auth loginparancsot, és kövesse az utasításokat.azd auth loginHozza létre a szükséges Azure erőforrásokat, és telepítse az alkalmazáskódot a
azd upparancs 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 upAmikor 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 --showkimeneté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 upparancs végrehajtása körülbelül 15 percet vesz igénybe. 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 Managed 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.
Az AZD kimenetben keresse meg azokat az alkalmazásbeállításokat, amelyek
AZURE_MYSQL_ésAZURE_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_SSLA kezdeti
AZURE_MYSQL_beállítások a MySQL-adatbázis kapcsolatváltozói. A következőAZURE_REDIS_beállítások az Azure Managed Redis rendszerekhez valók. 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.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.
Keresse meg azt a részt, amely meghatározza a
mysqlkapcsolatot (46-64. sorok), és cserélje ki aDB_HOST,DB_PORT,DB_DATABASE,DB_USERNAMEésDB_PASSWORDelemeket az AZD kimenetAZURE_MYSQL_alkalmazásbeállításaival. A(z)mysqlkapcsolatnak 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ó.
Keresse meg azt a részt, amely definiálja az Azure Managed Redis-kapcsolatot (a 140–147. sorokban), és cserélje le a
REDIS_HOST,REDIS_PASSWORD,REDIS_PORTésREDIS_CACHE_DBelemeket az AZD kimenetében szereplő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', '10000'), 'database' => env('AZURE_REDIS_DATABASE', '0'), ],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
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.
Keresd meg az App Service alkalmazás erőforrás-definícióját, és töröld a 319-es kommentárt:
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
appCommandLineegyé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.Keresd meg azt a részt, amely az alkalmazás beállításait határozza meg (514-518-as sor), és vond vissza a kommenteit. Ezek az alkalmazásbeállítások:
Beállítás Leírás CACHE_DRIVERMegmondja a Laravel-nek, hogy a Redis-t használja gyorsítótárként (lásd Laravel dokumentáció). MYSQL_ATTR_SSL_CASzü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_CHANNELArra 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_DEBUGEngedélyezze a hibakeresési mód oldalak használatát Laravelben (lásd Laravel dokumentáció). APP_KEYLaravel 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. Térjen vissza a codespace terminálhoz, és futtassa újra a
azd upparancsot.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.
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>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 --forceHa 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
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>Adj hozzá néhány feladatot a listához.
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: <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?
- Hogyan csatlakozhatok a MySQL adatbázishoz, amely virtuális hálózat mögött helyezkedik el más eszközökkel védve?
- Hogyan módosíthatom az APP_KEY alkalmazásbeállítást egy Key Vault hivatkozásra?
- Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions-szel?
- Miért olyan lassú a GitHub Actions telepítése?
- Nincs jogosultságom felhasználó által hozzárendelt identitás létrehozásához
- Mit csinálhatok a GitHub Copilot-tal a kódtérben?
- Mennyibe kerül ez a beállítás?
- Hogyan csatlakozhatok a MySQL adatbázishoz, amely virtuális hálózat mögött helyezkedik el más eszközökkel védve?
- Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions-szel?
- Miért olyan lassú a GitHub Actions telepítése?
- Nincs jogosultságom felhasználó által hozzárendelt identitás létrehozásához
- Mit csinálhatok a GitHub Copilot-tal a kódtérben?
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 Managed Redis Basic szintben készül, a minimum gyorsítótár mérettel. 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. Lásd: Azure Managed Redis.
- 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)
mysqlparancsot 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:
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 munka
buildvégén töltsd fel a fájlokat mint artefaktum. - A
deployfeladat kezdetekor töltsd le az arifaktumokat.
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.
Kapcsolódó tartalom
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: