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


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.

Képernyőkép az Azure-alkalmazás Feladatlista című példájáról, amely az új hozzáadott feladatokat mutatja be.

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és DB_PASSWORD) a helyi MySQL-adatbázis beállításaival. A minta futtatásához helyi MySQL-kiszolgálóra van szükség.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Fontos

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

3 – Mintakód üzembe helyezése

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

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

  1. Jelentkezzen be a GitHub-fiókjába.
  2. Navigáljon a https://github.com/Azure-Samples/laravel-tasks lapra
  3. Válassza az Elágazás lehetőséget.
  4. 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:

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

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:

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

5. lépés:

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

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:

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

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

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

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:

  1. Futtassa az cd /home/site/wwwroot parancsot. Itt találja az összes telepített fájlt.
  2. 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:

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

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

  1. Az Indítási parancs mezőbe írja be a következő parancsot: cp /home/site/wwwroot/default /etc/nginx/sites-available/default &> service nginx reload.
  2. Válassza a Mentés 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:

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

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:

  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ü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:

  1. Adja meg az erőforráscsoport nevét.
  2. 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:

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

Képernyőkép egy erőforráscsoport Azure Portalon való törlésének megerősítő párbeszédpaneléről. :

Gyakori kérdések

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

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

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

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

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

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

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