Kurz: Sestavení aplikace PHP a MySQL v Azure App Service
Azure App Service poskytuje vysoce škálovatelnou službu s vlastními opravami pro hostování webu s Windows operačním systémem. Tento kurz ukazuje, jak vytvořit aplikaci PHP v Azure a připojit ji k databázi MySQL. Až budete hotovi, budete mít aplikaci Laravel spuštěnou na Azure App Service na Windows.
Azure App Service poskytuje vysoce škálovatelnou službu s vlastními opravami pro hostování webu s využitím operačního systému Linux. Tento kurz ukazuje, jak vytvořit aplikaci PHP v Azure a připojit ji k databázi MySQL. Až budete hotovi, budete mít aplikaci Laravel spuštěnou na Azure App Service v Linuxu.
V tomto kurzu se naučíte:
- Vytvořit databázi MySQL v Azure
- Připojit k MySQL aplikaci PHP
- Nasadit aplikaci do Azure
- Aktualizovat datový model a znovu nasadit aplikaci
- Streamovat diagnostické protokoly z Azure
- Spravovat aplikaci na webu Azure Portal
Pokud ještě nemáte předplatné Azure,vytvořte si bezplatný účet před tím, než začnete.
Požadavky
Pro absolvování tohoto kurzu potřebujete:
- Nainstalovat Git.
- Nainstalovat PHP 5.6.4 nebo novější
- Nainstalovat Composer
- Povolit následující rozšíření PHP vyžadovaná aplikací Laravel: OpenSSL, PDO-MySQL, Mbstring, Tokenizer a XML
- Instalace a spuštění MySQL
V nástroji použijte prostředí Bash Azure Cloud Shell.
Pokud tomu dáváte přednost, můžete nainstalovat Azure CLI a spouštět referenční příkazy CLI.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení jsou popsané v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Příprava místního MySQL
V tomto kroku vytvoříte na místním serveru MySQL databázi, kterou budete v tomto kurzu používat.
Připojení k místnímu serveru MySQL
V okně terminálu se připojte k místnímu serveru MySQL. Toto okno terminálu můžete používat ke spuštění všech příkazů v tomto kurzu.
mysql -u root -p
Pokud se zobrazí výzva k zadání hesla, zadejte heslo k účtu root. Pokud si heslo ke kořenovému účtu nepamatujete, projděte si článek MySQL: Resetování kořenového hesla.
Pokud se váš příkaz úspěšně provede, znamená to, že je váš server MySQL spuštěný. Pokud ne, provedením kroků po instalaci MySQL zkontrolujte, jestli je místní server MySQL spuštěný.
Vytvoření databáze v místním prostředí
Na příkazovém řádku
mysqlvytvořte databázi.CREATE DATABASE sampledb;Ukončete připojení k serveru zadáním příkazu
quit.quit
Vytvoření aplikace PHP v místním prostředí
V tomto kroku získáte ukázkovou aplikaci Laravel, nakonfigurujete její připojení k databázi a spustíte ji v místním prostředí.
Vytvoření klonu ukázky
V okně terminálu přejděte pomocí příkazu cd do pracovního adresáře.
Naklonování ukázkového úložiště a změna do kořenového adresáře úložiště
git clone https://github.com/Azure-Samples/laravel-tasks cd laravel-tasksUjistěte se, že výchozí větev je
main.git branch -m mainTip
Změna názvu větve není pro uživatele App Service. Vzhledem k tomu, že mnoho úložišť mění výchozí větev na , tento kurz také ukazuje, jak nasadit
mainúložiště zmain. Další informace najdete v tématu Změna větve nasazení.Nainstalujte požadované balíčky.
composer install
Konfigurace připojení k MySQL
V kořenovém adresáři úložiště vytvořte soubor .env. Zkopírujte do souboru .env následující proměnné. Zástupný < root_password> nahraďte heslem kořenového uživatele MySQL.
APP_ENV=local
APP_DEBUG=true
APP_KEY=
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=sampledb
DB_USERNAME=root
DB_PASSWORD=<root_password>
Informace o tom, jak Laravel používá soubor .env, najdete v článku Laravel Environment Configuration (Konfigurace prostředí Laravel).
Spuštění ukázky v místním prostředí
Spusťte migrace databází Laravel, aby se vytvořily tabulky, které aplikace potřebuje. Pokud chcete zjistit, které tabulky migrace vytvářejí, podívejte se do adresáře database/migrations v úložišti Git.
php artisan migrateVygenerujte nový klíč aplikace Laravel.
php artisan key:generateSpusťte aplikaci.
php artisan serveV prohlížeči přejděte na
http://localhost:8000. Na stránce přidejte několik úkolů.
Pokud chcete zastavit PHP, zadejte v terminálu
Ctrl + C.
Vytvoření databáze MySQL v Azure
V tomto kroku vytvoříte v Azure Database for MySQL databázi MySQL. Později nakonfigurujete aplikaci PHP pro připojení k této databázi.
Vytvoření skupiny prostředků
Skupina prostředků je logický kontejner, ve kterém se nasazují a spravují prostředky Azure, jako jsou webové aplikace, databáze a účty úložiště. Později se například můžete rozhodnout odstranit celou skupinu prostředků v jednom jednoduchém kroku.
V Cloud Shell vytvořte skupinu prostředků pomocí az group create příkazu. Následující příklad vytvoří skupinu prostředků myResourceGroup v umístění Západní Evropa. Pokud chcete zobrazit všechna podporovaná umístění pro službu App Service na úrovni Free, spusťte příkaz az appservice list-locations --sku FREE.
az group create --name myResourceGroup --location "West Europe"
Obvykle budete svoji skupinu prostředků a prostředky vytvářet v oblasti, kterou máte blízko.
Po dokončení příkazu se ve výstupu JSON zobrazí vlastnosti skupiny prostředků.
Vytvoření serveru MySQL
V Cloud Shell vytvořte server v Azure Database for MySQL pomocí příkazu az mysql server create .
V následujícím příkazu nahraďte zástupný symbol jedinečným názvem serveru, uživatelským jménem zástupného symbolu <mysql-server-name> <admin-user> a <admin-password> heslem. Název serveru se používá jako součást koncového bodu MySQL (https://<mysql-server-name>.mysql.database.azure.com), takže musí být jedinečný v rámci všech serverů v Azure. Podrobnosti o výběru SKU databáze MySQL najdete v tématu Vytvoření Azure Database for MySQL serveru.
az mysql server create --resource-group myResourceGroup --name <mysql-server-name> --location "West Europe" --admin-user <admin-user> --admin-password <admin-password> --sku-name B_Gen5_1
Po vytvoření serveru MySQL se v Azure CLI zobrazí podobné informace jako v následujícím příkladu:
{
"administratorLogin": "<admin-user>",
"administratorLoginPassword": null,
"fullyQualifiedDomainName": "<mysql-server-name>.mysql.database.azure.com",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.DBforMySQL/servers/<mysql-server-name>",
"location": "westeurope",
"name": "<mysql-server-name>",
"resourceGroup": "myResourceGroup",
...
- < Output has been truncated for readability >
}
Konfigurace brány firewall serveru
V Cloud Shell vytvořte pravidlo brány firewall pro server MySQL, které povolí připojení klientů pomocí
az mysql server firewall-rule createpříkazu . Pokud je jako počáteční i koncová adresa IP nastavená hodnota 0.0.0.0, je brána firewall otevřená jen pro ostatní prostředky Azure.az mysql server firewall-rule create --name allAzureIPs --server <mysql-server-name> --resource-group myResourceGroup --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0Tip
Pravidlo brány firewall můžete dál omezit použitím jenom odchozích IP adres, které vaše aplikace používá.
V Cloud Shell spuštěním příkazu znovu povolte přístup z místního počítače tak, že nahradíte místní <your-ip-address> IP adresou IPv4.
az mysql server firewall-rule create --name AllowLocalClient --server <mysql-server-name> --resource-group myResourceGroup --start-ip-address=<your-ip-address> --end-ip-address=<your-ip-address>
Vytvoření produkční databáze
V místním okně terminálu se připojte k serveru MySQL v Azure. Použijte hodnotu, kterou jste zadali dříve pro < admin-user> a < mysql-server-name>. Po zobrazení výzvy k zadání hesla použijte heslo, které jste zadali při vytváření databáze v Azure.
mysql -u <admin-user>@<mysql-server-name> -h <mysql-server-name>.mysql.database.azure.com -P 3306 -pNa příkazovém řádku
mysqlvytvořte databázi.CREATE DATABASE sampledb;Vytvořte uživatele databáze se jménem phpappuser a přidělte mu všechna oprávnění k databázi
sampledb. Pro zjednodušení tohoto kurzu použijte jako heslo MySQLAzure2017.CREATE USER 'phpappuser' IDENTIFIED BY 'MySQLAzure2017'; GRANT ALL PRIVILEGES ON sampledb.* TO 'phpappuser';Ukončete připojení k serveru zadáním příkazu
quit.quit
Připojení aplikace k Azure MySQL
V tomto kroku připojíte aplikaci PHP k databázi MySQL, kterou jste vytvořili v Azure Database for MySQL.
Konfigurace připojení k databázi
V kořenovém adresáři úložiště vytvořte soubor .env.production a zkopírujte do něj následující proměnné. Nahraďte placeholder_ < mysql-server-name>_ v souboru DB_HOST i DB_USERNAME.
APP_ENV=production
APP_DEBUG=true
APP_KEY=
DB_CONNECTION=mysql
DB_HOST=<mysql-server-name>.mysql.database.azure.com
DB_DATABASE=sampledb
DB_USERNAME=phpappuser@<mysql-server-name>
DB_PASSWORD=MySQLAzure2017
MYSQL_SSL=true
Uložte změny.
Tip
Za účelem zabezpečení informací o vašem připojení k MySQL je tento soubor již vyloučený z úložiště Git (viz soubor .gitignore v kořenovém adresáři úložiště). Později se dozvíte, jak ve službě App Service nakonfigurovat proměnné prostředí pro připojení k vaší databázi v Azure Database for MySQL. S použitím proměnných prostředí nepotřebujete soubor .env ve službě App Service.
Konfigurace certifikátu TLS/SSL
Ve výchozím nastavení Azure Database for MySQL připojení TLS z klientů. Pokud se chcete připojit ke své databázi MySQL v Azure, musíte použít certifikát .pem, který poskytuje Azure Database for MySQL.
Otevřete soubor config/database.php a do connections.mysql přidejte parametry sslmode a options, jak je znázorněno v následujícím kódu.
'mysql' => [
...
'sslmode' => env('DB_SSLMODE', 'prefer'),
'options' => (env('MYSQL_SSL')) ? [
PDO::MYSQL_ATTR_SSL_KEY => '/ssl/BaltimoreCyberTrustRoot.crt.pem',
] : []
],
'mysql' => [
...
'sslmode' => env('DB_SSLMODE', 'prefer'),
'options' => (env('MYSQL_SSL') && extension_loaded('pdo_mysql')) ? [
PDO::MYSQL_ATTR_SSL_KEY => '/ssl/BaltimoreCyberTrustRoot.crt.pem',
] : []
],
V tomto kurzu je certifikát BaltimoreCyberTrustRoot.crt.pem pro usnadnění součástí úložiště.
Test aplikace v místním prostředí
Spusťte migrace databází Laravel s .env.production jako souborem prostředí, aby se ve vaší databázi MySQL v Azure Database for MySQL vytvořily tabulky. Nezapomeňte, že soubor .env.production obsahuje informace o připojení k vaší databázi MySQL v Azure.
php artisan migrate --env=production --forceSoubor .env.production ještě nemá platný klíč aplikace. Vygenerujte pro něj nový klíč v terminálu.
php artisan key:generate --env=production --forceSpusťte ukázkovou aplikaci s .env.production jako souborem prostředí.
php artisan serve --env=productionPřejděte na adresu
http://localhost:8000. Pokud se stránka načte bez chyb, aplikace PHP se v Azure připojuje k databázi MySQL v Azure.Na stránce přidejte několik úkolů.

Pokud chcete zastavit PHP, zadejte v terminálu
Ctrl + C.
Potvrzení změn
Potvrďte provedené změny spuštěním následujících příkazů Gitu:
git add .
git commit -m "database.php updates"
Vaše aplikace je připravená k nasazení.
Nasazení do Azure
V tomto kroku nasadíte aplikaci PHP připojenou k MySQL do služby Azure App Service.
Konfigurace uživatele nasazení
FTP a místní Git se můžou nasadit do webové aplikace Azure pomocí uživatele nasazení. Jakmile nakonfigurujete uživatele nasazení, můžete ho použít pro všechna nasazení Azure. Uživatelské jméno a heslo nasazení na úrovni účtu se liší od přihlašovacích údajů předplatného Azure.
Pokud chcete nakonfigurovat uživatele nasazení, spusťte v Azure Cloud Shell příkaz AZ WebApp Deployment User set . Nahraďte <username> a <password> pomocí uživatelského jména a hesla pro nasazení.
- Uživatelské jméno musí být v rámci Azure jedinečné a pro místní nabízená oznámení Git nesmí obsahovat @ symbol.
- Heslo musí mít délku alespoň osm znaků a dva z následujících tří prvků: písmena, číslice a symboly.
az webapp deployment user set --user-name <username> --password <password>
Výstup JSON zobrazuje heslo jako null . Pokud se zobrazí chyba 'Conflict'. Details: 409, změňte uživatelské jméno. Pokud se zobrazí chyba 'Bad Request'. Details: 400, použijte silnější heslo.
Poznamenejte si uživatelské jméno a heslo, které chcete použít k nasazení webových aplikací.
Vytvoření plánu služby App Service
V Cloud Shell vytvořte App Service plán pomocí az appservice plan create příkazu.
Následující příklad vytvoří plán služby App Service s názvem myAppServicePlan v cenové úrovni Free:
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE
Po vytvoření plánu služby App Service se v rozhraní příkazového řádku Azure zobrazí podobné informace jako v následujícím příkladu:
{
"adminSiteName": null,
"appServicePlanName": "myAppServicePlan",
"geoRegion": "West Europe",
"hostingEnvironmentProfile": null,
"id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
"kind": "app",
"location": "West Europe",
"maximumNumberOfWorkers": 1,
"name": "myAppServicePlan",
< JSON data removed for brevity. >
"targetWorkerSizeId": 0,
"type": "Microsoft.Web/serverfarms",
"workerTierName": null
}
V Cloud Shell vytvořte App Service plán pomocí az appservice plan create příkazu.
Následující příklad vytvoří plán služby App Service s názvem myAppServicePlan v cenové úrovni Free:
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE --is-linux
Po vytvoření plánu služby App Service se v rozhraní příkazového řádku Azure zobrazí podobné informace jako v následujícím příkladu:
{
"freeOfferExpirationTime": null,
"geoRegion": "West Europe",
"hostingEnvironmentProfile": null,
"id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
"kind": "linux",
"location": "West Europe",
"maximumNumberOfWorkers": 1,
"name": "myAppServicePlan",
< JSON data removed for brevity. >
"targetWorkerSizeId": 0,
"type": "Microsoft.Web/serverfarms",
"workerTierName": null
}
Vytvoření webové aplikace
Vytvořte webovou aplikaci v myAppServicePlan plánu App Service.
V Cloud Shell můžete použít az webapp create příkaz. V následujícím příkladu nahraďte <app-name> globálně jedinečným názvem aplikace (platné znaky jsou a-z, 0-9 a -). Modul runtime je nastavený na PHP|7.2. Pokud chcete zobrazit všechny podporované moduly runtime, spusťte příkaz az webapp list-runtimes --linux .
# Bash
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime "PHP|7.2" --deployment-local-git
# PowerShell
az --% webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime "PHP|7.2" --deployment-local-git
Po vytvoření webové aplikace Azure CLI zobrazí výstup podobný následujícímu příkladu:
Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git'
{
"availabilityState": "Normal",
"clientAffinityEnabled": true,
"clientCertEnabled": false,
"cloningInfo": null,
"containerSize": 0,
"dailyMemoryTimeQuota": 0,
"defaultHostName": "<app-name>.azurewebsites.net",
"deploymentLocalGitUrl": "https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git",
"enabled": true,
< JSON data removed for brevity. >
}
Vytvořili jste novou prázdnou webovou aplikaci s povoleným nasazením Gitu.
Poznámka
Adresa URL vzdáleného úložiště Git se zobrazuje ve vlastnosti deploymentLocalGitUrl ve formátu https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Tuto adresu URL si uložte, protože ji budete potřebovat později.
Vytvořte webovou aplikaci v myAppServicePlan plánu App Service.
V Cloud Shell můžete použít az webapp create příkaz. V následujícím příkladu nahraďte <app-name> globálně jedinečným názvem aplikace (platné znaky jsou a-z, 0-9 a -). Modul runtime je nastavený na PHP|7.2. Pokud chcete zobrazit všechny podporované moduly runtime, spusťte příkaz az webapp list-runtimes --linux .
# Bash
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime "PHP|7.2" --deployment-local-git
# PowerShell
az --% webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime "PHP|7.2" --deployment-local-git
Po vytvoření webové aplikace Azure CLI zobrazí výstup podobný následujícímu příkladu:
Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git'
{
"availabilityState": "Normal",
"clientAffinityEnabled": true,
"clientCertEnabled": false,
"cloningInfo": null,
"containerSize": 0,
"dailyMemoryTimeQuota": 0,
"defaultHostName": "<app-name>.azurewebsites.net",
"deploymentLocalGitUrl": "https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git",
"enabled": true,
< JSON data removed for brevity. >
}
Vytvořili jste novou prázdnou webovou aplikaci s povoleným nasazením Gitu.
Poznámka
Adresa URL vzdáleného úložiště Git se zobrazuje ve vlastnosti deploymentLocalGitUrl ve formátu https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Tuto adresu URL si uložte, protože ji budete potřebovat později.
Konfigurace nastavení databáze
Ve službě App Service můžete nastavit proměnné prostředí jako nastavení aplikace pomocí příkazu az webapp config appsettings set.
Následující příkaz nakonfiguruje nastavení aplikace DB_HOST, DB_DATABASE, DB_USERNAME a DB_PASSWORD. Nahraďte zástupné < symboly app-name> a < mysql-server-name>.
az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DB_HOST="<mysql-server-name>.mysql.database.azure.com" DB_DATABASE="sampledb" DB_USERNAME="phpappuser@<mysql-server-name>" DB_PASSWORD="MySQLAzure2017" MYSQL_SSL="true"
Pro přístup k nastavení můžete použít metodu PHP getenv. Kód Laravel používá pro metodu PHP getenv obálku env. Například konfigurace MySQL v souboru config/database.php vypadá podobně jako v následujícím kódu:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
...
],
Konfigurace proměnných prostředí Laravel
Laravel potřebuje ve službě App Service klíč aplikace. Můžete ho nakonfigurovat pomocí nastavení aplikace.
V okně místního terminálu pomocí příkazu
php artisanvygenerujte nový klíč aplikace, aniž byste ho ukládali do souboru .env.php artisan key:generate --showV Cloud Shell nastavte klíč aplikace v aplikaci App Service pomocí
az webapp config appsettings setpříkazu . Nahraďte zástupné < symboly app-name> a < outputofphpartisankey:generate>.az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings APP_KEY="<output_of_php_artisan_key:generate>" APP_DEBUG="true"APP_DEBUG="true"říká Laravelu, aby vracel informace o ladění, když nasazená aplikace narazí na chyby. Při spouštění produkční aplikace ho nastavte nafalse, což je bezpečnější.
Nastavení cesty virtuální aplikace
Nastavte cestu virtuální aplikace pro aplikaci. Tento krok je nezbytný, protože životní cyklus aplikace Laravel začíná ve veřejném adresáři, ne v kořenovém adresáři aplikace. Ostatní platformy PHP, jejichž životní cyklus začíná v kořenovém adresáři, můžou fungovat bez ruční konfigurace cesty virtuální aplikace.
V Cloud Shell nastavte cestu k virtuální aplikaci pomocí az resource update příkazu . Nahraďte < zástupný symbol app-name> názvem aplikace.
az resource update --name web --resource-group myResourceGroup --namespace Microsoft.Web --resource-type config --parent sites/<app_name> --set properties.virtualApplications[0].physicalPath="site\wwwroot\public" --api-version 2015-06-01
Ve výchozím nastavení Azure App Service cestu ke kořenové virtuální aplikaci ( ) do kořenového adresáře souborů / nasazené aplikace (sites\wwwroot).
Životní cyklus aplikace Laravel začíná ve veřejném adresáři místo kořenového adresáře aplikace. Výchozí image Dockeru s PHP pro službu App Service používá Apache a neumožňuje přizpůsobení DocumentRoot pro Laravel. Pomocí souboru .htaccess však můžete přepsat směrování všech požadavků do adresáře /public místo kořenového adresáře. Kořenový adresář úložiště pro tyto účely již soubor .htaccess obsahuje. S tímto souborem je vaše aplikace Laravel připravená k nasazení.
Další informace najdete v tématu Změna kořenového adresáře lokality.
Přenos z Gitu do Azure
Vzhledem k tomu, že nasazujete větev , musíte nastavit výchozí větev nasazení pro vaši aplikaci App Service na (viz Změna
mainvětvemainnasazení). V Cloud Shell nastavte nastaveníDEPLOYMENT_BRANCHaplikace pomocíaz webapp config appsettings setpříkazu .az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'Zpět v okně místního terminálu přidejte vzdálené úložiště Azure do místního úložiště Git. Nahraďte <deploymentLocalGitUrl-from-create-step> adresou URL vzdáleného úložiště Git, kterou jste si uložili v části Vytvoření webové aplikace.
git remote add azure <deploymentLocalGitUrl-from-create-step>Nasaďte aplikaci do vzdáleného úložiště Azure pomocí následujícího příkazu. Když vás Správce přihlašovacích údajů Git vyzve k zadání přihlašovacích údajů, nezapomeňte zadat přihlašovací údaje, které jste vytvořili v části Konfigurace uživatele nasazení, a ne přihlašovací údaje, které používáte pro přihlášení k Azure Portal.
git push azure mainSpuštění tohoto příkazu může trvat několik minut. Při spuštění příkaz zobrazí podobné informace jako v následujícím příkladu:
Counting objects: 3, done. Delta compression using up to 8 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 291 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) remote: Updating branch 'main'. remote: Updating submodules. remote: Preparing deployment for commit id 'a5e076db9c'. remote: Running custom deployment command... remote: Running deployment command... ... < Output has been truncated for readability >
Poznámka
Můžete si všimnout, že proces nasazení na konci nainstaluje balíčky Composer. Služba App Service tyto automatizace nespouští při výchozím nasazení, takže toto ukázkové úložiště obsahuje v kořenovém adresáři tři další soubory, které je povolují:
.deployment– Tento soubor informuje službu App Service, že má jako vlastní skript nasazení spustitbash deploy.sh.deploy.sh– vlastní skript nasazení. Když se do souboru podíváte, zjistíte, že po příkazunpm installspouští příkazphp composer.phar install.composer.phar– správce balíčků Composer.
Pomocí tohoto postupu můžete přidat do služby App Service libovolný krok nasazení z Gitu. Další informace najdete v tématu Vlastní skript nasazení.
Vzhledem k tomu, že nasazujete větev , musíte nastavit výchozí větev nasazení pro vaši aplikaci App Service na (viz Změna
mainvětvemainnasazení). V Cloud Shell nastavte nastaveníDEPLOYMENT_BRANCHaplikace pomocíaz webapp config appsettings setpříkazu .az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'Zpět v okně místního terminálu přidejte vzdálené úložiště Azure do místního úložiště Git. Nahraďte <deploymentLocalGitUrl-from-create-step> adresou URL vzdáleného úložiště Git, kterou jste si uložili v části Vytvoření webové aplikace.
git remote add azure <deploymentLocalGitUrl-from-create-step>Nasaďte aplikaci do vzdáleného úložiště Azure pomocí následujícího příkazu. Když vás Správce přihlašovacích údajů Git vyzve k zadání přihlašovacích údajů, nezapomeňte zadat přihlašovací údaje, které jste vytvořili v části Konfigurace uživatele nasazení, a ne přihlašovací údaje, které používáte pro přihlášení k Azure Portal.
git push azure mainSpuštění tohoto příkazu může trvat několik minut. Při spuštění příkaz zobrazí podobné informace jako v následujícím příkladu:
Counting objects: 3, done. Delta compression using up to 8 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 291 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) remote: Updating branch 'main'. remote: Updating submodules. remote: Preparing deployment for commit id 'a5e076db9c'. remote: Running custom deployment command... remote: Running deployment command... ... < Output has been truncated for readability >
Přejděte do aplikace Azure.
Přejděte na adresu http://<app-name>.azurewebsites.net a přidejte do seznamu několik úkolů.
Blahopřejeme! Teď máte ve službě Azure App Service spuštěnou aplikaci PHP řízenou daty.
Místní aktualizace modelu a opětovné nasazení
V tomto kroku provedete jednoduchou změnu datového modelu task a webové aplikace a potom tuto aktualizaci publikujete v Azure.
Pro scénář úkolů upravíte aplikaci tak, abyste mohli úkol označit jako dokončený.
Přidání sloupce
V okně místního terminálu přejděte do kořenového adresáře úložiště Gitu.
Vygenerujte novou migraci databáze pro tabulku
tasks:php artisan make:migration add_complete_column --table=tasksTento příkaz zobrazí název generovaného souboru migrace. Vyhledejte tento soubor v adresáři database/migrations a otevřete ho.
Nahraďte metodu
upnásledujícím kódem:public function up() { Schema::table('tasks', function (Blueprint $table) { $table->boolean('complete')->default(False); }); }Předchozí kód přidá do tabulky
taskslogický sloupeccomplete.Pro akci vrácení zpět nahraďte metodu
downnásledujícím kódem:public function down() { Schema::table('tasks', function (Blueprint $table) { $table->dropColumn('complete'); }); }V okně místního terminálu spusťte migrace databáze Laravel, aby se změna provedla v místní databázi.
php artisan migrateNa základě konvence pojmenování Laravel model
Task(viz app/Task.php) ve výchozím nastavení provádí mapování na tabulkutasks.
Aktualizace logiky aplikace
Otevřete soubor routes/web.php. V něm aplikace definuje své trasy a obchodní logiku.
Na konec souboru přidejte trasu s následujícím kódem:
/** * Toggle Task completeness */ Route::post('/task/{id}', function ($id) { error_log('INFO: post /task/'.$id); $task = Task::findOrFail($id); $task->complete = !$task->complete; $task->save(); return redirect('/'); });Předchozí kód provede jednoduchou aktualizaci datového modelu tím, že přepne hodnotu položky
complete.
Aktualizace zobrazení
Otevřete soubor resources/views/tasks.blade.php. Vyhledejte počáteční značku
<tr>a nahraďte ji:<tr class="{{ $task->complete ? 'success' : 'active' }}" >Předchozí kód změní barvu řádku v závislosti na tom, jestli je úkol dokončený.
Na dalším řádku je následující kód:
<td class="table-text"><div>{{ $task->name }}</div></td>Celý řádek nahraďte následujícím kódem:
<td> <form action="{{ url('task/'.$task->id) }}" method="POST"> {{ csrf_field() }} <button type="submit" class="btn btn-xs"> <i class="fa {{$task->complete ? 'fa-check-square-o' : 'fa-square-o'}}"></i> </button> {{ $task->name }} </form> </td>Předchozí kód přidá tlačítko Odeslat odkazující na trasy, které jste definovali předtím.
Místní test provedených změn
V okně místního terminálu spusťte vývojový server z kořenového adresáře úložiště Git.
php artisan servePokud chcete vidět změnu stavu úkolu, přejděte na adresu
http://localhost:8000a zaškrtněte políčko.
Pokud chcete zastavit PHP, zadejte v terminálu
Ctrl + C.
Publikování změn v Azure
V okně místního terminálu spusťte migrace databází Laravel s produkčním připojovacím řetězcem, aby se provedla změna v databázi Azure.
php artisan migrate --env=production --forcePotvrďte všechny změny v Gitu a potom odešlete změny kódu do Azure.
git add . git commit -m "added complete checkbox" git push azure mainPo
git pushdokončení přejděte do aplikace Azure a otestujte nové funkce.
Pokud jste přidali nějaké úkoly, zůstanou v databázi. Aktualizace schématu dat nechávají existující data netknutá.
Streamování diagnostických protokolů
Zatímco je vaše aplikace PHP spuštěná v Azure App Service, můžete směrovat protokoly konzoly do svého terminálu. Tímto způsobem můžete získat stejné diagnostické zprávy, které vám pomůžou ladit chyby aplikace.
Pokud chcete spustit streamování protokolů, az webapp log tail použijte příkaz v Cloud Shell.
az webapp log tail --name <app_name> --resource-group myResourceGroup
Po zahájení streamování protokolů aktualizujte aplikaci Azure v prohlížeči, abyste získali webový provoz. Teď se zobrazí protokoly konzoly směrované do terminálu. Pokud nevidíte protokoly konzoly okamžitě, podívejte se znovu za 30 sekund.
Streamování protokolů můžete kdykoli zastavit zadáním Ctrl+C.
Pokud chcete získat přístup k protokolům konzoly vygenerovaným v rámci kódu aplikace ve službě App Service, zapněte protokolování diagnostiky spuštěním následujícího příkazu v Cloud Shellu:
az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose
Možné hodnoty pro --level jsou: Error, Warning, Info a Verbose. Každá další úroveň zahrnuje předchozí úroveň. Například Error zahrnuje jenom chybové zprávy a Verbose zahrnuje všechny zprávy.
Jakmile je aktivované protokolování diagnostiky, spusťte následující příkaz pro zobrazení streamu protokolů:
az webapp log tail --resource-group <resource-group-name> --name <app-name>
Pokud nevidíte protokoly konzoly okamžitě, podívejte se znovu za 30 sekund.
Poznámka
Soubory protokolu můžete také zkontrolovat v prohlížeči na https://<app-name>.scm.azurewebsites.net/api/logs/docker.
Streamování protokolů můžete kdykoli zastavit zadáním Ctrl+C.
Tip
Aplikace PHP může k výstupu do konzoly použít standardní funkci error_log(). Ukázková aplikace používá tuto metodu v souboru app/Http/routes.php.
Jako webová platforma používá Laravel zprostředkovatele protokolu Monolog. Informace o tom, jak pomocí protokolu Monolog zajistit výstup zpráv do konzoly, najdete v článku PHP: Přihlášení do konzoly pomocí protokolu Monolog (php://out).
Správa aplikace Azure
Přejděte do Azure Portal a spravujte aplikaci, kterou jste vytvořili.
V nabídce vlevo klikněte na App Services a pak klikněte na název vaší aplikace Azure.

Zobrazí se stránka Přehled vaší aplikace. Tady můžete provádět základní úkoly správy, jako je zastavení, spuštění, restartování, procházení a odstranění.
Levá nabídka obsahuje stránky pro konfiguraci vaší aplikace.

Vyčištění prostředků
V předchozích krocích jste vytvořili prostředky Azure ve skupině prostředků. Pokud předpokládáte, že už tyto prostředky nebudete potřebovat, odstraňte skupinu prostředků spuštěním následujícího příkazu ve službě Cloud Shell:
az group delete --name myResourceGroup
Spuštění tohoto příkazu může trvat přibližně minut.
Další kroky
V tomto kurzu jste se naučili:
- Vytvořit databázi MySQL v Azure
- Připojit k MySQL aplikaci PHP
- Nasadit aplikaci do Azure
- Aktualizovat datový model a znovu nasadit aplikaci
- Streamovat diagnostické protokoly z Azure
- Spravovat aplikaci na webu Azure Portal
V dalším kurzu se dozvíte, jak namapovat na aplikaci vlastní název DNS.
Nebo se podívejte na další zdroje informací:
