Självstudie: Skapa en PHP- och MySQL-app i Azure App Service
Azure App Service en mycket skalbar och självkorrigering av webbvärdtjänsten med hjälp Windows operativsystemet. I den här självstudien visas hur du skapar en PHP-app i Azure och ansluter den till en MySQL-databas. När du är klar har du en Laravel-app som körs på Azure App Service på Windows.
Azure App Service en mycket skalbar och självkorrigering av webbvärdtjänsten med linux-operativsystemet. I den här självstudien visas hur du skapar en PHP-app i Azure och ansluter den till en MySQL-databas. När du är klar har du en Laravel-app som körs på Azure App Service på Linux.
I den här guiden får du lära dig att:
- Skapa en MySQL-databas i Azure
- ansluta en PHP-app till MySQL
- distribuera appen till Azure
- uppdatera datamodellen och distribuera om appen
- strömma diagnostikloggar från Azure
- hantera appen i Azure-portalen.
Om du inte har en Azure-prenumerationkan du skapa ett kostnads fritt konto innan du börjar.
Förutsättningar
För att slutföra den här kursen behöver du:
- Installera Git
- Installera PHP 5.6.4 eller senare
- Installera Composer
- Aktivera följande PHP-tillägg som behövs för Laravel: OpenSSL, PDO-MySQL, Mbstring, Tokenizer och XML
- Installera och starta MySQL
Använd bash-miljön i Azure Cloud Shell.
Om du vill kan du i stället installera Azure CLI för att köra CLI-referenskommandon.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Fler inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas till det installerar du Azure CLI-tillägg vid första användning. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Förbereda lokal MySQL
I det här steget skapar du en databas för självstudien på din lokala MySQL-server.
Ansluta till en lokal MySQL-server
Anslut till din lokala MySQL-server via ett terminalfönster. Du kan använda det här terminalfönstret för att köra alla kommandon i den här självstudien.
mysql -u root -p
Om du uppmanas att ange ett lösenord anger du lösenordet för root-kontot. Se MySQL: Återställa rotlösenordet om du inte kommer ihåg rotlösenordet för ditt konto.
MySQL-servern är igång om kommandot körs utan problem. Om inte, kontrollerar du att den lokala MySQL-servern är igång genom att följa anvisningarna efter installation av MySQL.
Skapa en lokal databas
Skapa en databas i
mysql-prompten.CREATE DATABASE sampledb;Skriv
quitför att avsluta serveranslutningen.quit
Skapa en PHP-app lokalt
I det här steget hämtar du en Laravel-exempelapp, konfigurerar dess databasanslutning och kör den lokalt.
Klona exemplet
Använd kommandot cd för att komma till en arbetskatalog i terminalfönstret.
Klona exempeldatabasen och ändra till lagringsplatsens rot.
git clone https://github.com/Azure-Samples/laravel-tasks cd laravel-tasksKontrollera att standardgrenen är
main.git branch -m mainTips
Ändringen av grennamnet krävs inte av App Service. Men eftersom många lagringslager ändrar sin standardgren till visar den här självstudien även hur du
maindistribuerar en lagringsplats frånmain. Mer information finns i Ändra distributionsgren.Installera de paket som behövs.
composer install
Konfigurera MySQL-anslutningen
Skapa en fil med namnet .env i lagringsplatsens rot. Kopiera in följande variabler i .env-filen. Ersätt < root_password> platshållaren med MySQL-rotanvändarens lösenord.
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>
Mer information om hur Laravel använder .env-filen finns i Laravel Environment Configuration (Konfiguration av Laravel-miljö).
Köra exemplet lokalt
Kör Laravel-databasmigreringar för att skapa de tabeller som behövs för appen. Du kan se vilka tabeller som skapas i migreringarna i katalogen database/migrations (databas/migreringar) på Git-lagringsplatsen.
php artisan migrateGenerera en ny Laravel-programnyckel.
php artisan key:generateKör appen.
php artisan serveGå till
http://localhost:8000i en webbläsare. Lägg till några uppgifter på sidan.
Om du vill stoppa PHP skriver du
Ctrl + Ci terminalen.
Skapa MySQL i Azure
I det här steget skapar du en MySQL-databas i Azure Database for MySQL. Senare kommer du att konfigurera PHP-appen för att ansluta till den här databasen.
Skapa en resursgrupp
En resurs grupp är en logisk behållare där Azure-resurser, till exempel webbappar, databaser och lagrings konton, distribueras och hanteras. Du kan exempelvis välja att ta bort hela resursgruppen i ett enkelt steg längre fram.
I Cloud Shell skapar du en resurs grupp med az group create kommandot. I följande exempel skapas en resursgrupp med namnet myResourceGroup på platsen Europa, västra. Om du vill se alla platser som stöds för App Service på Kostnadsfri nivå, kör du kommandot az appservice list-locations --sku FREE.
az group create --name myResourceGroup --location "West Europe"
Du skapar vanligtvis din resursgrupp och resurserna i en region nära dig.
När kommandot har slutförts visar JSON-utdata resursgruppens egenskaper.
Skapa en MySQL-server
I Cloud Shell skapar du en server Azure Database for MySQL med az mysql server create kommandot .
I följande kommando ersätter du platshållaren med ett unikt servernamn, ett användarnamn för <mysql-server-name> och ett lösenord för <admin-user> <admin-password> platshållaren. Det här servernamnet används som en del av MySQL-slutpunkten (https://<mysql-server-name>.mysql.database.azure.com), så namnet måste vara unikt för alla servrar i Azure. Mer information om hur du väljer MySQL DB SKU finns i Skapa en Azure Database for MySQL server.
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
När MySQL-servern skapas visar Azure CLI information som ser ut ungefär så här:
{
"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 >
}
Konfigurera serverbrandväggen
I Cloud Shell du en brandväggsregel för MySQL-servern som tillåter klientanslutningar med hjälp av
az mysql server firewall-rule createkommandot . När både start-IP och slut-IP har angetts till 0.0.0.0 öppnas brandväggen endast för andra Azure-resurser.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.0Tips
Du kan begränsa brandväggsregeln ännu mer genom att endast använda de utgående IP-adresser som används av din app.
I den Cloud Shell du kommandot igen för att tillåta åtkomst från din lokala dator genom att ersätta med din lokala <your-ip-address> IPv4 IP-adress.
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>
Skapa en produktionsdatabas
Anslut till MySQL-server i Azure via det lokala terminalfönstret. Använd det värde som du angav tidigare < för admin-user> och < mysql-server-name>. När du uppmanas att ange ett lösenord använder du lösenordet som du angav när du skapade databasen i Azure.
mysql -u <admin-user>@<mysql-server-name> -h <mysql-server-name>.mysql.database.azure.com -P 3306 -pSkapa en databas i
mysql-prompten.CREATE DATABASE sampledb;Skapa en databasanvändare med namnet phpappuser och ge användaren alla privilegier i
sampledb-databasen. För enkelhetens skull använder du MySQLAzure2017 som lösenord.CREATE USER 'phpappuser' IDENTIFIED BY 'MySQLAzure2017'; GRANT ALL PRIVILEGES ON sampledb.* TO 'phpappuser';Skriv
quitför att avsluta serveranslutningen.quit
Ansluta appen till Azure MySQL
I det här steget ansluter du PHP-programmet till MySQL-databasen som du skapade i Azure Database for MySQL.
Konfigurera databasanslutningen
Skapa en .env.production-fil i lagringsplatsens rot och kopiera in följande variabler i filen. Ersätt placeholder_ < mysql-server-name>_ i både DB_HOST och 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
Spara ändringarna.
Tips
För att skydda din MySQL-anslutningsinformation är den här filen redan undantagen från Git-lagringsplatsen (se .gitignore i lagringsplatsens rot). Senare får du lära dig hur du konfigurerar miljövariabler i App Service för att ansluta till din databas i Azure Database for MySQL. När du använder miljövariabler behöver du inte .env-filen i App Service.
Konfigurera TLS/SSL-certifikat
Som standard Azure Database for MySQL TLS-anslutningar från klienter. För att ansluta till din MySQL-databas i Azure måste du använda .pem-certifikatet som tillhandahålls av Azure Database for MySQL.
Öppna config/database.php och lägg till parametrarna sslmode och options i connections.mysql, som i följande kod.
'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',
] : []
],
I den här kursen finns certifikatet BaltimoreCyberTrustRoot.crt.pem på lagringsplatsen så att du enkelt kommer åt det.
Testa appen lokalt
Kör Laravel-databasmigreringar med .env.production som miljöfil för att skapa tabellerna i din MySQL-databas i Azure Database for MySQL. Tänk på att anslutningsinformationen till din MySQL-databas i Azure finns i .env.production.
php artisan migrate --env=production --force.env.production innehåller inte någon giltig programnyckel ännu. Generera en ny nyckel för den i terminalen.
php artisan key:generate --env=production --forceKör exempelprogrammet med .env.production som miljöfil.
php artisan serve --env=productionNavigera till
http://localhost:8000. Om sidan läses in utan fel ansluter PHP-appen till MySQL-databasen i Azure.Lägg till några uppgifter på sidan.

Om du vill stoppa PHP skriver du
Ctrl + Ci terminalen.
Genomföra ändringarna
Kör följande Git-kommandon för att genomföra ändringarna:
git add .
git commit -m "database.php updates"
Din app är klar att distribuera.
Distribuera till Azure
I det här steget distribuerar du din MySQL-anslutna PHP-app till Azure App Service.
Konfigurera en distributionsanvändare
FTP och lokal Git kan distribuera till en Azure-webbapp med hjälp av en distributionsanvändare. När du har konfigurerat distributionsanvändaren kan du använda den för alla dina Azure-distributioner. Ditt användarnamn och lösenord för distribution på kontonivå skiljer sig från autentiseringsuppgifterna för din Azure-prenumeration.
Konfigurera distributionsanvändaren genom att köra kommandot az webapp deployment user set i Azure Cloud Shell. Ersätt <username> och med ett användarnamn och lösenord för <password> distributionsanvändaren.
- Användarnamnet måste vara unikt i Azure och för lokala Git-pushar får det inte innehålla @ symbolen .
- Lösenordet måste vara minst åtta tecken långt, med två av följande tre element: bokstäver, siffror och symboler.
az webapp deployment user set --user-name <username> --password <password>
JSON-utdata visar lösenordet som null . Om du ser felet 'Conflict'. Details: 409 ska du byta användarnamn. Om du ser felet 'Bad Request'. Details: 400 ska du använda ett starkare lösenord.
Registrera ditt användarnamn och lösenord som ska användas för att distribuera dina webbappar.
Skapa en App Service-plan
I Cloud Shell skapar du en App Service plan med az appservice plan create kommandot .
I följande exempel skapas en App Service-plan med namnet myAppServicePlan på prisnivån Kostnadsfri:
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE
När App Service-planen har skapats visas information av Azure CLI. Informationen ser ut ungefär som i följande exempel:
{
"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
}
I Cloud Shell skapar du en App Service plan med az appservice plan create kommandot .
I följande exempel skapas en App Service-plan med namnet myAppServicePlan på prisnivån Kostnadsfri:
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE --is-linux
När App Service-planen har skapats visas information av Azure CLI. Informationen ser ut ungefär som i följande exempel:
{
"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
}
Skapa en webbapp
Skapa en webbapp i myAppServicePlan App Service plan.
I Cloud Shell kan du använda az webapp create kommandot . Ersätt <app-name> med ett globalt unikt appnamn (giltiga tecken är a-z, 0-9 och -) i följande exempel. Körningen har angetts till PHP|7.2. Om du vill se alla körningar som stöds kör du 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
När webbappen har skapats visar Azure CLI utdata liknande den i följande exempel:
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. >
}
Du har skapat en tom ny webbapp med git-distribution aktiverad.
Anteckning
URL för fjärransluten Git visas i egenskapen deploymentLocalGitUrl med formatet https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Spara den här URL:en, eftersom du behöver den senare.
Skapa en webbapp i myAppServicePlan App Service plan.
I Cloud Shell kan du använda az webapp create kommandot . Ersätt <app-name> med ett globalt unikt appnamn (giltiga tecken är a-z, 0-9 och -) i följande exempel. Körningen har angetts till PHP|7.2. Om du vill se alla körningar som stöds kör du 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
När webbappen har skapats visar Azure CLI utdata liknande den i följande exempel:
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. >
}
Du har skapat en tom ny webbapp med git-distribution aktiverad.
Anteckning
URL för fjärransluten Git visas i egenskapen deploymentLocalGitUrl med formatet https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Spara den här URL:en, eftersom du behöver den senare.
Konfigurera databasinställningarna
I App Service ställer du in miljövariabler som appinställningar med kommandot az webapp config appsettings set.
Följande kommando konfigurerar appinställningarna DB_HOST, DB_DATABASE, DB_USERNAME och DB_PASSWORD. Ersätt platshållarna < app-name> < 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"
Du kan komma åt inställningarna med PHP-metoden getenv. I Laravel-koden används en env-omslutning över PHP getenv. MySQL-konfigurationen i config/database.php ser till exempel ut som följande kod:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
...
],
Konfigurera Laravel-miljövariabler
Laravel måste ha en programnyckel i App Service. Du kan konfigurera den med appinställningar.
Gå till det lokala terminalfönstret och använd
php artisanför att generera en ny programnyckel utan att spara den i .env.php artisan key:generate --showI Cloud Shell anger du programnyckeln i App Service med hjälp av
az webapp config appsettings setkommandot . Ersätt platshållarna < appnamn och>ofphpartisankey: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"säger åt Laravel att returnera felsökningsinformation när den distribuerade appen påträffar fel. När du kör en produktionsapp anger du värdetfalse, vilket är säkrare.
Ange sökväg till virtuella program
Ange den virtuella sökvägen för appen. Det här steget är nödvändigt eftersom Laravel-programmets livscykel börjar i den offentliga katalogen i stället för programmets rotkatalog. Andra PHP-ramverk vilkas livscykel startar i rotkatalogen fungerar utan manuell konfiguration av den virtuella programsökvägen.
I Cloud Shell du den virtuella programsökvägen med hjälp av az resource update kommandot . Ersätt < platshållaren appnamn> namn.
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
Som standard Azure App Service den virtuella rotsökvägen ( ) till rotkatalogen för de distribuerade programfilerna / (sites\wwwroot).
Laravel-programmets livscykel börjar i den offentliga katalogen i stället för programmets rotkatalog. PHP Docker-standardavbildningen för App Service använder Apache, och låter dig inte anpassa DocumentRoot för Laravel. Däremot kan du använda .htaccess för att skriva om alla begäranden så att de pekar till /public i stället för rotkatalogen. I lagringsplatsens rot har en .htaccess redan lagts till för detta ändamål. Därmed är Laravel-appen klar att distribueras.
Mer information finns i Ändra platsrot.
Skicka till Azure från Git
Eftersom du distribuerar -grenen måste du ange standarddistributionsgrenen för
maindin App Service-appmaintill (se Ändra distributionsgren). I Cloud Shell anger duDEPLOYMENT_BRANCHappinställningen medaz webapp config appsettings setkommandot .az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'I det lokala terminalfönstret kan du lägga till en Azure-fjärrdatabas till din lokala Git-databas. Ersätt <deploymentLocalGitUrl-from-create-step> med URL:en för den Fjärranslutna Git som du sparade från Skapa en webbapp.
git remote add azure <deploymentLocalGitUrl-from-create-step>Skicka till Azure-fjärrdatabasen för att distribuera appen med följande kommando. När Git Autentiseringshanteraren uppmanar dig att ange autentiseringsuppgifter ska du se till att du anger de autentiseringsuppgifter som du skapade i Konfigurera en distributionsanvändare , inte de autentiseringsuppgifter som du använder för att logga in på Azure Portal.
git push azure mainDet kan ett par minuter att köra kommandot. Medan det körs visas information liknande den i följande exempel:
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 >
Anteckning
Du kanske märker att distributionsprocessen installerar Composer-paket i slutet. App Service kör inte dessa automatiseringar under standarddistributionen. Den här exempellagringsplatsen har tre extra filer i rotkatalogen för detta:
.deployment– Den här filen skickar ett meddelande till App Service om att körabash deploy.shsom anpassat distributionsskript.deploy.sh– Det anpassade distributionsskriptet. Om du granskar filen ser du att den körphp composer.phar installefternpm install.composer.phar– Composer-pakethanteraren.
Du kan använda den här metoden för att lägga till steg i den Git-baserade distributionen till App Service. Mer information finns i Anpassat distributionsskript.
Eftersom du distribuerar -grenen måste du ange standarddistributionsgrenen för
maindin App Service-appmaintill (se Ändra distributionsgren). I Cloud Shell anger duDEPLOYMENT_BRANCHappinställningen medaz webapp config appsettings setkommandot .az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'I det lokala terminalfönstret kan du lägga till en Azure-fjärrdatabas till din lokala Git-databas. Ersätt <deploymentLocalGitUrl-from-create-step> med URL:en för den Fjärranslutna Git som du sparade från Skapa en webbapp.
git remote add azure <deploymentLocalGitUrl-from-create-step>Skicka till Azure-fjärrdatabasen för att distribuera appen med följande kommando. När Git Autentiseringshanteraren uppmanar dig att ange autentiseringsuppgifter ska du se till att du anger de autentiseringsuppgifter som du skapade i Konfigurera en distributionsanvändare , inte de autentiseringsuppgifter som du använder för att logga in på Azure Portal.
git push azure mainDet kan ett par minuter att köra kommandot. Medan det körs visas information liknande den i följande exempel:
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 >
Bläddra till Azure-appen
Bläddra till http://<app-name>.azurewebsites.net och lägg till några uppgifter i listan.
Grattis! Du kör en datadriven PHP-app i Azure App Service.
Uppdatera modell lokalt och distribuera om
I det här steget gör du en enkel ändring i task-datamodellen och webbappen och publicerar sedan uppdateringen till Azure.
För uppgiftsscenariot ändrar du programmet så att du kan markera en uppgift som slutförd.
Lägga till en kolumn
Visa det lokala terminalfönstret och gå till roten för Git-lagringsplatsen.
Generera en ny databasmigrering för
tasks-tabellen:php artisan make:migration add_complete_column --table=tasksDet här kommandot visar namnet på migreringsfilen som genereras. Leta reda på filen i database/migrations och öppna den.
Ersätt metoden
upmed följande kod:public function up() { Schema::table('tasks', function (Blueprint $table) { $table->boolean('complete')->default(False); }); }Föregående kod lägger till en boolesk kolumn i
tasks-tabellen med namnetcomplete.Ersätt metoden
downmed följande kod för återställningsåtgärden:public function down() { Schema::table('tasks', function (Blueprint $table) { $table->dropColumn('complete'); }); }Visa det lokala terminalfönstret och kör Laravel-databasemigreringar för att göra ändringen i den lokala databasen.
php artisan migrateModellen
Task(se app/Task.php) mappar tilltasks-tabellen som standard, baserat på Laravel-namngivningskonventionen.
Uppdatera programlogik
Öppna filen routes/web.php. Här definieras programmets vägar och affärslogik.
I slutet av filen lägger du till en väg med följande kod:
/** * 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('/'); });Föregående kod gör en enkel uppdatering till datamodellen genom att ändra värdet för
complete.
Uppdatera vyn
Öppna filen resources/views/tasks.blade.php. Leta reda på starttaggen
<tr>och ersätt den med:<tr class="{{ $task->complete ? 'success' : 'active' }}" >Föregående kod ändrar färg på raden beroende på om uppgiften är slutförd.
På nästa rad finns följande kod:
<td class="table-text"><div>{{ $task->name }}</div></td>Ersätt hela raden med följande kod:
<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>Föregående kod lägger till knappen Skicka som refererar till den väg som du angav tidigare.
Testa ändringarna lokalt
Visa det lokala terminalfönstret och kör utvecklingsservern från rotkatalogen på Git-lagringsplatsen.
php artisan serveOm du vill se ändringen i uppgiftsstatusen går du till
http://localhost:8000och markerar kryssrutan.
Om du vill stoppa PHP skriver du
Ctrl + Ci terminalen.
Publicera ändringar till Azure
Gå till det lokala terminalfönstret och kör Laravel-databasmigreringar med produktionsanslutningssträngen för att genomföra ändringen i Azure-databasen.
php artisan migrate --env=production --forceGenomför alla ändringar på Git och skicka sedan kodändringarna till Azure.
git add . git commit -m "added complete checkbox" git push azure mainNär
git pushhar slutförts så kan du gå till Azure-appen och prova de nya funktionerna.
Om du har lagt till några uppgifter finns de kvar i databasen. Uppdateringar i dataschemat påverkar inte befintliga data.
Strömma diagnostikloggar
När PHP-appen körs i Azure App Service kan du skicka konsolloggarna till din terminal. På så sätt kan du få samma diagnostikmeddelanden för att felsöka programfel.
Starta loggströmningen med kommandot az webapp log tail i Cloud Shell.
az webapp log tail --name <app_name> --resource-group myResourceGroup
Uppdatera Azure-app i webbläsaren så hämtas webbtrafik när loggströmningen har startats. Du kan nu se konsolloggarna som skickas till terminalen. Om du inte ser konsolloggarna omedelbart kan du titta efter igen efter 30 sekunder.
Skriv Ctrl+C när som helst för att stoppa loggströmningen.
Om du vill komma åt konsolloggarna som genereras i din programkod i App Service aktiverar du diagnostisk loggning genom att köra följande kommando i Cloud Shell:
az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose
Möjliga värden för --level är: Error, Warning, Info och Verbose. Varje efterföljande nivå omfattar den föregående nivån. Exempel: Error omfattar endast felmeddelanden och Verbose omfattar alla meddelanden.
När diagnostisk loggning har aktiverats kör du följande kommando för att visa loggströmmen:
az webapp log tail --resource-group <resource-group-name> --name <app-name>
Om du inte ser konsolloggarna omedelbart kan du titta efter igen efter 30 sekunder.
Anteckning
Du kan även granska loggfilerna från din webbläsare via https://<app-name>.scm.azurewebsites.net/api/logs/docker.
Skriv Ctrl+C när som helst för att stoppa loggströmningen.
Tips
Ett PHP-program kan använda standarden error_log() för att skapa utdata till konsolen. Exempelprogrammet använder den här metoden i app/Http/routes.php.
Laravel använder Monolog som loggningsprovider i webbramverket. Information om hur du får Monolog att skicka meddelanden till konsolen finns i artikeln om PHP och hur du använder monolog för att skicka loggar till konsolen (php://out).
Hantera Azure-appen
Gå till Azure-portalen för att hantera den app som du skapade.
I den vänstra menyn, klickar du på App Services och därefter på namnet på din Azure-app.

Nu visas översiktssidan för din app. Här kan du utföra grundläggande hanteringsåtgärder som att stoppa, starta, starta om, bläddra och ta bort.
Menyn till vänster innehåller sidor för att konfigurera appen.

Rensa resurser
I de föregående stegen skapade du Azure-resurser i en resursgrupp. Om du inte tror att du behöver dessa resurser i framtiden tar du bort resursgruppen genom att köra följande kommando i Cloud Shell:
az group delete --name myResourceGroup
Det kan några minuter att köra kommandot.
Nästa steg
I den här självstudiekursen lärde du dig att:
- Skapa en MySQL-databas i Azure
- ansluta en PHP-app till MySQL
- distribuera appen till Azure
- uppdatera datamodellen och distribuera om appen
- strömma diagnostikloggar från Azure
- hantera appen i Azure-portalen.
Gå vidare till nästa självstudie där du får lära dig att mappa ett anpassat DNS-namn till appen.
Eller så kan du kolla in andra resurser:
