Oktatóanyag: PHP-, MySQL- és Redis-alkalmazás üzembe helyezése Azure-alkalmazás Szolgáltatásban
Ez az oktatóanyag bemutatja, hogyan hozhat létre biztonságos PHP-alkalmazást Azure-alkalmazás Szolgáltatásban, amely egy Rugalmas Azure Database for MySQL-kiszolgálóhoz csatlakozik. Emellett üzembe fog helyezni egy Azure Cache for Redist is, hogy engedélyezze a gyorsítótárazási kódot az alkalmazásban. Azure-alkalmazás szolgáltatás egy nagymértékben skálázható, önjavító, web hosting szolgáltatás, amely könnyen üzembe helyezhet alkalmazásokat Windowson vagy Linuxon. Ha végzett, egy Laravel-alkalmazás fog futni a Linuxon futó Azure-alkalmazás Service-en.
Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.
Mintaalkalmazás
Az oktatóanyag követéséhez klónozza vagy töltse le a Laravel-mintaalkalmazást az adattárból:
git clone https://github.com/Azure-Samples/laravel-tasks.git
Ha helyileg szeretné futtatni az alkalmazást, tegye a következőket:
Az .env alkalmazásban konfigurálja az adatbázis beállításait (például
DB_DATABASE
,DB_USERNAME
ésDB_PASSWORD
) a helyi MySQL-adatbázis beállításaival. A minta futtatásához helyi MySQL-kiszolgálóra van szükség.Az adattár gyökeréből indítsa el a Laravelt a következő parancsokkal:
composer install php artisan migrate php artisan key:generate php artisan serve
1 – App Service- és MySQL-erőforrások létrehozása
Ebben a lépésben hozza létre az Azure-erőforrásokat. Az oktatóanyag lépései alapértelmezés szerint biztonságos App Service- és Azure Database for MySQL-konfigurációt hoznak létre. A létrehozási folyamathoz a következőket kell megadnia:
- A webalkalmazás neve . Ez a webalkalmazás
https://<app-name>.azurewebsites.net
DNS-nevének részeként használt név. - Az alkalmazás futtatókörnyezete . Itt választhatja ki az alkalmazáshoz használni kívánt PHP-verziót.
- Az alkalmazás erőforráscsoportja . Az erőforráscsoportokkal (logikai tárolóban) csoportosíthatja az alkalmazáshoz szükséges Összes Azure-erőforrást.
Jelentkezzen be az Azure Portalra, és kövesse az alábbi lépéseket a Azure-alkalmazás szolgáltatás erőforrásainak létrehozásához.
1. lépés: Az Azure Portalon:
- Írja be a "webalkalmazás-adatbázis" kifejezést az Azure Portal tetején található keresősávba.
- Válassza ki a Web App + Adatbázis címkével ellátott elemet a Marketplace címsora alatt. A létrehozási varázslót közvetlenül is megnyithatja.
2. lépés: A Webalkalmazás létrehozása + Adatbázis lapon töltse ki az űrlapot az alábbiak szerint.
- Az erőforráscsoport → Válassza az Új létrehozása lehetőséget, és használja az msdocs-laravel-mysql-tutorial nevet.
- Régió → Az Önhöz közeli Bármely Azure-régió.
- Adja →msdocs-laravel-mysql-XYZ nevet, ahol az XYZ tetszőleges három véletlenszerű karakter. Ennek a névnek az Azure-on belül egyedinek kell lennie.
- Futtatókörnyezeti verem → PHP 8.2.
- Hozzáadja az Azure Cache for Redist? → Igen.
- Üzemeltetési terv → Alapszintű. Ha készen áll, később felskálázhatja az éles tarifacsomagot.
- A Rugalmas MySQL-kiszolgáló alapértelmezés szerint adatbázismotorként van kiválasztva. Az Azure Database for MySQL egy teljes körűen felügyelt MySQL-adatbázis szolgáltatásként az Azure-ban, amely kompatibilis a legújabb közösségi kiadásokkal.
- Válassza az Áttekintés + létrehozás lehetőséget.
- Az ellenőrzés befejezése után válassza a Létrehozás lehetőséget.
3. lépés: Az üzembe helyezés néhány percet vesz igénybe. Az üzembe helyezés befejeződése után válassza az Erőforrás megnyitása gombot. Közvetlenül az App Service-alkalmazásba kerül, de a következő erőforrások jönnek létre:
- Az erőforráscsoport az összes létrehozott erőforrás tárolóját →.
- Az App Service-csomag → Az App Service számítási erőforrásait határozza meg. Létrejön egy Linux-csomag az alapszinten .
- Az App Service → Az alkalmazást jelöli, és az App Service-csomagban fut.
- A virtuális hálózat → Integrálva van az App Service alkalmazással, és elkülöníti a háttérbeli hálózati forgalmat.
- A privát végpontok → Access-végpontokat az adatbázis-kiszolgálóhoz és a Redis-gyorsítótárhoz a virtuális hálózaton.
- A hálózati adapterek → Privát IP-címeket jelölnek, egy-egy a privát végpontokhoz.
- A rugalmas Azure Database for MySQL-kiszolgáló csak a privát végpontja mögött → elérhető. A rendszer létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
- Az Azure Cache for Redis csak a privát végpontja mögött → elérhető.
- saját DNS zónák → Engedélyezi az adatbázis-kiszolgáló és a Redis-gyorsítótár DNS-feloldását a virtuális hálózaton.
2 – Adatbázis-kapcsolat beállítása
1. lépés: Az App Service lap bal oldali menüjében válassza a Konfiguráció lehetőséget.
2. lépés:
- Keresse meg a AZURE_MYSQL_ kezdődő alkalmazásbeállításokat. Ezeket a létrehozási varázsló hozta létre az új MySQL-adatbázisból.
- Emellett keresse meg a AZURE_REDIS_ kezdődő alkalmazásbeállításokat is. Ezeket a létrehozási varázsló hozta létre az új Redis-gyorsítótárból. Az alkalmazás beállításához csak erre a névre van szüksége.
- Ha szeretné, az egyes beállításoktól jobbra található Szerkesztés gombra kattintva megtekintheti vagy másolhatja annak értékét. Később módosítani fogja az alkalmazás kódját, hogy ezeket a beállításokat használja.
3. lépés: A Konfiguráció lap Alkalmazásbeállítások lapján hozzon létre egy CACHE_DRIVER
beállítást:
- Válassza az Új alkalmazás beállítása lehetőséget.
- A Név mezőbe írja be a CACHE_DRIVER.
- Az Érték mezőben adja meg a redis értéket.
- Kattintson az OK gombra.
CACHE_DRIVER
már használatban van a Laravel-alkalmazáskódban. Ez a beállítás arra utasítja a Laravelt, hogy a Redist használja gyorsítótárként.
4. lépés: A 3. lépésben ismertetett lépésekkel hozza létre a következő alkalmazásbeállításokat:
- MYSQL_ATTR_SSL_CA: Használja a /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem értéket. Ez az alkalmazásbeállítás a MySQL-kiszolgáló eléréséhez szükséges TLS/SSL-tanúsítvány elérési útjára mutat. A mintaadattárban található a kényelem érdekében.
- LOG_CHANNEL: Használja az stderrt értékként. Ez a beállítás arra utasítja a Laravelt, hogy a naplókat a stderrbe csövezza, ami elérhetővé teszi az App Service-naplók számára.
- APP_DEBUG: Igaz értéket használjon. Ez egy Laravel hibakeresési változó , amely lehetővé teszi a hibakeresési módú oldalakat.
- APP_KEY: Értékként használja a base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= értéket. Ez egy Laravel titkosítási változó.
- A felső menüsávon válassza a Mentés lehetőséget.
- Amikor a rendszer kéri, válassza a Folytatás lehetőséget.
Fontos
Az APP_KEY
érték itt használható a kényelem érdekében. Éles forgatókönyvek esetén a parancsot kifejezetten az üzembe helyezéshez php artisan key:generate --show
kell létrehozni a parancssorban.
3 – Mintakód üzembe helyezése
Ebben a lépésben konfigurálja a GitHub üzembe helyezését a GitHub Actions használatával. Ez csak egy az App Service-ben történő üzembe helyezés számos módja közül, de nagyszerű módja annak is, hogy folyamatos integrációt nyújtsunk az üzembe helyezési folyamatba. Alapértelmezés szerint a GitHub-adattár minden git push
eleme elindítja a buildelési és üzembe helyezési műveletet. A kódbázist a Visual Studio Code-tal közvetlenül a böngészőben fogja módosítani, majd lehetővé teszi a GitHub Actions automatikus üzembe helyezését.
1. lépés: Új böngészőablakban:
- Jelentkezzen be a GitHub-fiókjába.
- Navigáljon a https://github.com/Azure-Samples/laravel-tasks lapra
- Válassza az Elágazás lehetőséget.
- Válassza az Elágazás létrehozása lehetőséget.
2. lépés: A GitHub lapon nyissa meg a Visual Studio Code-ot a böngészőben a .
kulcs lenyomásával.
3. lépés: Nyissa meg a config/database.php böngészőben a Visual Studio Code-ban. Keresse meg a szakaszt mysql
, és végezze el a következő módosításokat:
- Cserélje le a
DB_HOST
elemet aAZURE_MYSQL_HOST
kérdésre. - Cserélje le a
DB_DATABASE
elemet aAZURE_MYSQL_DBNAME
kérdésre. - Cserélje le a
DB_USERNAME
elemet aAZURE_MYSQL_USERNAME
kérdésre. - Cserélje le a
DB_PASSWORD
elemet aAZURE_MYSQL_PASSWORD
kérdésre. - Cserélje le a
DB_PORT
elemet aAZURE_MYSQL_PORT
kérdésre. Ne feledje, hogy ezeket aAZURE_MYSQL_
beállításokat a létrehozási varázsló hozta létre Önnek.
4. lépés: A config/database.php görgessen a Redis cache
szakaszhoz, és végezze el a következő módosításokat:
- Cserélje le a
REDIS_HOST
elemet aAZURE_REDIS_HOST
kérdésre. - Cserélje le a
REDIS_PASSWORD
elemet aAZURE_REDIS_PASSWORD
kérdésre. - Cserélje le a
REDIS_PORT
elemet aAZURE_REDIS_PORT
kérdésre. - Cserélje le a
REDIS_CACHE_DB
elemet aAZURE_REDIS_DATABASE
kérdésre. - Ugyanebben a szakaszban adjon hozzá egy sort a következővel
'scheme' => 'tls',
: . Ez a konfiguráció arra utasítja a Laravelt, hogy titkosítással csatlakozzon a Redishez. Ne feledje, hogy ezeket aAZURE_REDIS_
beállításokat a létrehozási varázsló hozta létre Önnek.
5. lépés:
- Válassza ki a Forrásvezérlő bővítményt.
- A szövegmezőbe írjon be egy véglegesítési üzenetet, például
Configure DB & Redis variables
: . - Válassza a Véglegesítés és a Leküldés lehetőséget.
6. lépés: Az App Service lap bal oldali menüjében válassza az Üzembe helyezési központ lehetőséget.
7. lépés: Az Üzembehelyezési központ lapon:
- A Forrás területen válassza a GitHubot. Alapértelmezés szerint a GitHub Actions van kiválasztva buildszolgáltatóként.
- Jelentkezzen be a GitHub-fiókjába, és kövesse az utasításokat az Azure engedélyezéséhez.
- A Szervezetben válassza ki a fiókját.
- Az Adattárban válassza a laravel-task lehetőséget.
- Az Ág területen válassza a fő lehetőséget.
- A felső menüben válassza a Mentés lehetőséget. Az App Service véglegesít egy munkafolyamat-fájlt a kiválasztott GitHub-adattárba a
.github/workflows
címtárban.
8. lépés: Az Üzembehelyezési központ lapon:
- Válassza a Naplókat. Az üzembehelyezési futtatás már elindult.
- Az üzembe helyezési futtatás naplóelemében válassza a Build/Deploy Logs lehetőséget.
9. lépés: A GitHub-adattárba kerül, és láthatja, hogy a GitHub-művelet fut. A munkafolyamat-fájl két különálló szakaszt határoz meg, a buildelést és az üzembe helyezést. Várja meg, amíg a GitHub fut, és megjeleníti a Kész állapotot. Körülbelül 15 percet vesz igénybe.
4 – Adatbázisséma létrehozása
A létrehozási varázsló egy privát végpont mögé helyezi a MySQL-adatbáziskiszolgálót, így csak a virtuális hálózatról érhető el. Mivel az App Service-alkalmazás már integrálva van a virtuális hálózattal, az adatbázis migrálásának legegyszerűbb módja közvetlenül az App Service-tárolóból történik.
1. lépés: Az App Service lap bal oldali menüjében válassza az SSH-t.
2. lépés: Az SSH-terminálban:
- Futtassa az
cd /home/site/wwwroot
parancsot. Itt találja az összes telepített fájlt. - Futtassa az
php artisan migrate --force
parancsot. Ha sikerül, az App Service sikeresen csatlakozik a MySQL-adatbázishoz. Csak a fájlok/home
módosításai őrizhetők meg az alkalmazás újraindítása után. A külső/home
módosítások nem maradnak meg.
5 – Webhely gyökerének módosítása
A Laravel-alkalmazás életciklusa a /public könyvtárban kezdődik. Az App Service alapértelmezett PHP-tárolója az Nginxet használja, amely az alkalmazás gyökérkönyvtárában kezdődik. A webhelygyökér módosításához módosítania kell az Nginx konfigurációs fájlt a PHP-tárolóban (/etc/nginx/sites-available/default). Az Ön kényelme érdekében a mintaadattár egy alapértelmezett nevű egyéni konfigurációs fájlt tartalmaz. Ahogy korábban már említettük, nem szeretné lecserélni ezt a fájlt az SSH-felülettel, mert a módosítás kívül esik, és az alkalmazás újraindítása /home
után elveszik.
1. lépés:
- A bal oldali menüben válassza a Konfiguráció lehetőséget.
- Válassza az Általános beállítások lapot.
2. lépés: Az Általános beállítások lapon:
- Az Indítási parancs mezőbe írja be a következő parancsot: cp /home/site/wwwroot/default /etc/nginx/sites-available/default &> service nginx reload.
- Válassza a Mentés lehetőséget. A parancs lecseréli az Nginx konfigurációs fájlt a PHP-tárolóban, és újraindítja az Nginxet. Ez a konfiguráció biztosítja, hogy minden indításkor ugyanazt a módosítást végezhesse el a tárolón.
6 – Tallózás az alkalmazáshoz
1. lépés: Az App Service oldalán:
- A bal oldali menüben válassza az Áttekintés lehetőséget.
- Válassza ki az alkalmazás URL-címét. Közvetlenül a következőre
https://<app-name>.azurewebsites.net
is navigálhat.
2. lépés: Adjon hozzá néhány feladatot a listához. Gratulálunk, biztonságos, adatvezérelt PHP-alkalmazást futtat Azure-alkalmazás Service-ben.
Tipp.
A mintaalkalmazás implementálja a gyorsítótár-feltöltési mintát. Amikor az adatok módosítása után újra betölti a lapot, a weblap válaszideje sokkal gyorsabban jelenik meg, mivel az adatbázis helyett a gyorsítótárból tölti be az adatokat.
7 – Diagnosztikai naplók streamelése
Azure-alkalmazás szolgáltatás rögzíti a konzolra naplózott összes üzenetet, hogy segítsen az alkalmazással kapcsolatos problémák diagnosztizálásában. A mintaalkalmazás minden végpontján konzolnapló-üzeneteket ad ki, hogy bemutassuk ezt a képességet. A Laravel naplózási funkciója (például Log::info()
) alapértelmezés szerint egy helyi fájlba irányítja a kimenetet. Az LOG_CHANNEL
alkalmazás korábbi beállításai akadálymentessé teszik a naplóbejegyzéseket az App Service naplóstreamjéből.
1. lépés: Az App Service oldalán:
- A bal oldali menüben válassza az App 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üben válassza a Naplóstream lehetőséget. Láthatja az alkalmazás naplóit, beleértve a platformnaplókat és a tárolón belüli naplókat.
Az erőforrások eltávolítása
Ha végzett, törölheti az összes erőforrást az Azure-előfizetéséből az erőforráscsoport törlésével.
1. lépés: Az Azure Portal tetején található keresősávon:
- Adja meg az erőforráscsoport nevét.
- Válassza ki az erőforráscsoportot.
2. lépés: Az erőforráscsoport lapjá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.
Gyakori kérdések
- Mennyibe kerül ez a beállítás?
- Hogyan csatlakozni a virtuális hálózat mögött más eszközökkel védett MySQL-adatbázishoz?
- Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?
- Miért olyan lassú a GitHub Actions üzembe helyezése?
Mennyibe kerül ez a beállítás?
A létrehozási erőforrások díjszabása a következő:
- Az App Service-csomag alapszinten jön létre, és fel- vagy leskálázható. Lásd az App Service díjszabását.
- A rugalmas MySQL-kiszolgáló B1ms-szinten jön létre, és fel- vagy leskálázható. Ingyenes Azure-fiók esetén a B1ms szint 12 hónapig ingyenes, a havi korlátokig. Tekintse meg az Azure Database for MySQL díjszabását.
- Az Azure Cache for Redis alapszintű, minimális gyorsítótármérettel jön létre. Ez a szint egy kis költséggel jár. Magasabb teljesítményszintekre skálázhatja a magasabb rendelkezésre állás, a fürtözés és más funkciók érdekében. Tekintse meg az Azure Cache for Redis díjszabását.
- A virtuális hálózat csak akkor számít fel díjat, ha nem konfigurál további funkciókat, például társviszony-létesítést. Tekintse meg az Azure Virtual Network díjszabását.
- A privát DNS-zóna kis díjat számít fel. Tekintse meg az Azure DNS díjszabását.
Hogyan csatlakozni a virtuális hálózat mögött más eszközökkel védett MySQL-adatbázishoz?
- A parancssori eszközről való alapszintű hozzáféréshez az alkalmazás SSH-termináljáról is futtatható
mysql
. - A MySQL Workbenchhez hasonló asztali eszközről való csatlakozáshoz a gépnek a virtuális hálózaton belül kell lennie. Ez lehet például egy Azure-beli virtuális gép, amely az egyik alhálózathoz csatlakozik, vagy egy helyszíni hálózat egy olyan gépe, amely helyek közötti VPN-kapcsolattal rendelkezik az Azure-beli virtuális hálózattal.
- Az Azure Cloud Shellt a virtuális hálózattal is integrálhatja.
Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?
Vegyük példaként az App Service automatikusan létrehozott munkafolyamat-fájlját, és mindegyik git push
elindít egy új buildet és üzembe helyezést. A GitHub-adattár helyi klónjából a kívánt frissítéseket leküldheti a GitHubra. Példa:
git add .
git commit -m "<some-message>"
git push origin main
Miért olyan lassú a GitHub Actions üzembe helyezése?
Az App Service automatikusan létrehozott munkafolyamat-fájlja a build-then-deploy, kétfeladatos futtatás definícióját határozza meg. Mivel minden feladat a saját tiszta környezetében fut, a munkafolyamat-fájl biztosítja, hogy a deploy
feladat hozzáférhessen a build
feladat fájljaihoz:
- A feladat végén töltse fel a
build
fájlokat összetevőként. - A feladat elején
deploy
töltse le az összetevőket.
A kétfeladatos folyamat legtöbbször az összetevők feltöltésével és letöltésével foglalkozik. Ha szeretné, egyszerűsítheti a munkafolyamat-fájlt a két feladat egybe egyesítésével, ami szükségtelenné teszi a feltöltési és letöltési lépéseket.
Következő lépések
Folytassa a következő oktatóanyaggal, amelyből megtudhatja, hogyan védheti meg az alkalmazást egyéni tartománnyal és tanúsítvánnyal.
Vagy tekintse meg a többi erőforrást is: