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 útmutató bemutatja, hogyan hozhat létre egy biztonságos PHP alkalmazást az Azure App Service-ben, amely csatlakozik egy MySQL adatbázishoz (az Azure Database for MySQL Flexible Server használatával). Az alkalmazásában lévő gyorsítótárazási kód engedélyezéséhez telepít egy Azure Cache for Redis-t. 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. Miután elkészültél, lesz egy Laravel alkalmazásod, amely az Azure App Service-en fut Linuxon.

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

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ő.

1 - Futtassa a mintát

Először állíts be egy mintát adatvezérelt alkalmazást kiindulási pontként. Az Ön kényelme érdekében a minta tároló tartalmaz egy fejlesztői konténer 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 próbaváltozótAPP_KEY, amelyet a Laravelnek helyileg kell futtatnia.

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. Az alkalmazás mintapéldáját meg kellene látnia egy új böngészőfülön. Az alkalmazás leállításához írja be Ctrl+C.

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

2 - Alkalmazásszolgáltatás, 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. A DNS-név részeként is használatos az alkalmazásához.
  • 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áscsoport lehetővé teszi, hogy egy logikai tárolón belül csoportosítsuk az alkalmazáshoz szükséges összes Azure-erőforrást.

Jelentkezzen be az Azure portálra, és 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>. Arra is navigálhat a létrehozási varázsló-ra közvetlenül.

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-XYZ. Létrejön egy msdocs-laravel-mysql-XYZ_group nevű erőforráscsoport.
  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-XYZ nevet.
  6. Tarifacsomag: Alapszintű. Ha készen áll, áttérhet egy másik tarifacsomagra.

3. lépés:

  1. Válassza az Adatbázis lapot.
  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. Válassza az Üzembe helyezés lapot.
  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. Miután a telepítés befejeződött, válassza a Forrás megtekintése gombot. Közvetlenül az App Service alkalmazáshoz jut, de a következő erőforrások jönnek 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.

3 - Biztonságos kapcsolat titkok

A létrehozási varázsló már alkalmazásbeállításokként létrehozta a kapcsolati változókat. A biztonsági legjobb gyakorlat az, hogy az App Service-ből teljesen távol tartsuk a titkokat. Át fogod költöztetni a titkairat egy kulcstartóba, és megváltoztatod az alkalmazás beállítását a Key Vault hivatkozások lehetőségre a Service Connectors segítségével.

1. lépés: Az aktuális kapcsolati karakterlánc lekérése

  1. Az App Service oldal bal oldali menüjében válassza a Beállítások > Környezeti változók 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. Azonban a titkok közvetlenül az App Service alkalmazásban vannak elmentve, ami nem a legjobb. Ezt meg fogod változtatni.

2. lépés: Hozzon létre egy kulcstartót a titkos adatok biztonságos kezelésére

  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-XYZ_group lehetőséget.
  3. A Key vault név mezőbe írjon be egy nevet, amely csak betűkből és számokból áll.
  4. A Régió mezőben állítsa be ugyanarra a helyre, mint a erőforráscsoport.

3. lépés: Biztosítsa a kulcstároló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-XYZ_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. A Név mezőbe írja be: msdocs-laravel-mysql-XYZVaultEndpoint.
  7. A Virtuális hálózatban válassza ki a virtuális hálózatot az msdocs-laravel-mysql-XYZ_group csoportban.
  8. Az Alhálózatban válassza ki az elérhető kompatibilis alhálózatot. A Webalkalmazás varázsló az Ön kényelme érdekében hozta létre.
  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átni fogod, hogy "A telepítésed befejeződött."

4. lépés: A MySQL-összekötő létrehozása

  1. A fenti keresősávba írja be a msdocs-laravel-mysql, majd válassza ki az App Service erőforrást, amelyet msdocs-laravel-mysql-XYZ néven hívnak.
  2. Az App Service oldalán, a bal oldali menüben válassza a beállításokat Service Connector>-t.
  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-235-server).
  6. MySQL-adatbázis esetén válassza ki az adatbázist (például msdocs-laravel-mysql-235-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: A Key Vault-kapcsolat létrehozása

  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.

6. lépés: A MySQL csatlakozó beállításainak véglegesítése

  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. Amikor elkészült, a Key Vault Connection legördülő lista automatikusan kiválasztja azt.
  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.

7. lépés: A Redis csatlakozó konfigurálása a Key Vault titkai használatával

  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.

8. lépés: A Key Vault integrációjának ellenőrzése

  1. A bal oldali menüből válassza a Beállítások > Környezeti változók lehetőséget újra.
  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.


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

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

  1. Az Alkalmazásbeállítások lapon válassza a Hozzáadás 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. 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 a következő alkalmazásbeállításokat:

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?

5 - Mintakód telepíté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 behúzza az újonnan 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: "@workspace Üzemelési módban az alkalmazásom az App Service webalkalmazásban fut, ami Azure Service Connector-t használ a MySQL rugalmas szerverhez való csatlakozáshoz. Milyen környezeti változóneveket kell használnom?" A Copilot valószínűleg egy kódjavaslatot ad az alábbi 2. lehetőség: GitHub Copilot nélkül lépésekhez hasonlóan, és akár azt is tanácsolhatja, hogy változtasson a config/database.php fájlban.
  4. Nyissa meg az config/database.php fájlt a felfedezőben, és adja hozzá a kódjavaslatot.
  5. Kérdezd meg: "@workspace Az Én App Service alkalmazásom az Azure Service Connector segítségével is csatlakozik a Cache for Redis-hez a Django kliens típus használatával. Milyen környezeti változónév(eke)t kell használnom?*" A Copilot adhat egy kódjavaslatot, amely hasonló az alábbi 2. lehetőség: GitHub Copilot nélkül lépésekhez, és azt is mondhatja, hogy módosítsa a config/database.php fájlt. 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 mezőbe írjon be egy commit üzenetet, például Configure Azure database and cache connections. 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: Vissza az Üzembehelyezési központ lapra az Azure Portalon:

  1. Válassza a Naplók lapot, majd válassza a Frissítés lehetőséget az új bevezetési futás megtekintéséhez.
  2. 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.

6 – 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 lap bal oldali menüjébe,

  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.

7 – 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 a /home-n kívül esik, és az alkalmazás /home újraindítása után elveszik.

1. lépés:

  1. A bal oldali menüből válassza a Konfiguráció 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 fülön:

  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.

8 – Menjen az alkalmazáshoz

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.

9 - Diagnosztikai naplók továbbítása

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 ír. 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 az App 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. Adja meg az erőforráscsoport nevét a törlés megerősítéséhez.
  2. Válassza a Törlés lehetőséget.

2. Hozzon létre Azure erőforrásokat és telepítsen egy példaalkalmazást

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 körülbelül 15 perc alatt teljesül (a legtöbb időt a Redis cache veszi igénybe). Az alkalmazáskódját is lefordítja és telepíti, de később módosítja a kódját, hogy az működjön az App Service-szel. 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.

3. Használjon Azure kapcsolati karakterláncokat az alkalmazáskódban

Az AZD sablon, amit használ, már létrehozta a kapcsolódási változókat az Ön számára app settings formájában, és a kényelem érdekében kiírja őket a terminálra. 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
     

    Az AZURE_MYSQL_ kezdetű beállítások a MySQL adatbázis kapcsolatváltozói, míg a AZURE_REDIS_ kezdetű beállítások a Redis gyorsítótárhoz tartoznak. Később használnod kell őket a kódodban. Az ön kényelme érdekében az AZD sablon megmutatja a közvetlen linket az alkalmazás beállítási oldalához az Azure portálon.

  2. A fájlkezelőben nyissa meg a config/database.php fájlt. Ez a konfigurációs fájl az adatbázis és a Redis cache kapcsolatokhoz.

  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 fogja őket bevetni.

4. 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 Bicep-fájl határozza meg a létrehozott Azure-erőforrásokat.

  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). Az ön kényelme érdekében a minta tár tartalmaz egy cserekonfigurációs fájlt, amelyet default-nak hívnak, és amely megmondja az Nginx-nek, hogy a /public könyvtárban keressen. 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 együtt futtatja a azd package, azd provision, és azd deploy elemeket, és ez érthető, mert mind az infrastruktúra, mind az alkalmazás módosításokat végrehajtasz. 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.

5. Adatbázis sé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.

6. Böngésszen az alkalmazáshoz

  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 egy Laravel webalkalmazásról, amely az Azure-ban futó MySQL-t használ, és feladatokat jelenít meg.

    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.

7. Diagnosztikai naplók folyamata

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 ír. 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.

8. 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 a AZURE_MYSQL_ alkalmazás beállításai megfelelően vannak konfigurálva a 3. Alkalmazzon Azure kapcsolati láncokat az alkalmazás kó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 lépéseket a következő részben: 4. Laravel beállítások konfigurálása a webalkalmazásban.

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 a AZURE_REDIS_ alkalmazás beállításai megfelelően vannak konfigurálva a 3. Alkalmazzon Azure kapcsolati láncokat az alkalmazás kó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 5. Generálja az adatbázis séma lépéseit.

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.
  • Ahhoz, hogy egy asztali eszközzel, például a MySQL Workbenchel csatlakozni tudj, a gépednek a virtuális hálózaton belül kell lennie. Például lehet egy Azure VM, amelyik csatlakozik az egyik alhálózathoz, vagy egy on-premises hálózatban lévő gép, amelynek van egy site-to-site VPN kapcsolata az Azure 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 portál lépéseiből a 4 - Laravel változók konfigurálása alatt megtalálja, hogyan változtathatja meg a APP_KEY egy Key Vault hivatkozásra az alábbi 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)"

A portálon is megteheted ugyanezt. 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?

Vegyük példaként az App Service által automatikusan generált munkafolyamat-fájlt, minden git push elindít egy új build és telepítési futá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és során a GitHub Copilot javasolhat változtatásokat, és (a @workspace segítségével) még azt is megmutathatja, hogy hol kell a módosításokat végrehajtani, de nem hajthatja végre a változtatásokat helyetted. Rajtad áll, hogy hozzáadd a javasolt változtatásokat, és teszteld azokat.

Következő lépések

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 nézze meg a többi forrást.