Öğretici: Azure App Service bir PHP (Laray) ve MySQL esnek sunucusu (Önizleme) uygulaması derlemeTutorial: Build a PHP (Laravel) and MySQL Flexible Server (Preview) app in Azure App Service

Esnek sunucu ile Azure 'da PHP Web uygulaması

Azure App Service , Linux işletim sistemini kullanarak yüksek düzeyde ölçeklenebilir, kendini yayama bir Web barındırma hizmeti sağlar.Azure App Service provides a highly scalable, self-patching web hosting service using the Linux operating system. Bu öğreticide, Azure 'da bir PHP uygulamasının nasıl oluşturulacağı ve bir MySQL veritabanına nasıl bağlanacağı gösterilmektedir.This tutorial shows how to create a PHP app in Azure and connect it to a MySQL database. İşiniz bittiğinde, Linux üzerinde Azure App Service üzerinde çalışan bir Laralevel uygulamanız olacaktır.When you're finished, you'll have a Laravel app running on Azure App Service on Linux.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:In this tutorial, you learn how to:

  • Yerel MySQL ile PHP (Laralevel) uygulaması kurmaSetup a PHP (Laravel) app with local MySQL
  • MySQL esnek sunucusu oluşturma (Önizleme)Create a MySQL Flexible Server (Preview)
  • Bir PHP uygulamasını MySQL esnek sunucusuna bağlama (Önizleme)Connect a PHP app to MySQL Flexible Server (Preview)
  • Uygulamayı Azure App Service dağıtmaDeploy the app to Azure App Service
  • Veri modelini güncelleştirme ve uygulamayı yeniden dağıtmaUpdate the data model and redeploy the app
  • Uygulamayı Azure portalında yönetmeManage the app in the Azure portal

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.If you don't have an Azure subscription, create a free account before you begin.

ÖnkoşullarPrerequisites

Bu öğreticiyi tamamlamak için:To complete this tutorial:

  1. Git'i yükleyinInstall Git
  2. PHP 5.6.4 veya sonraki sürümü yüklemeInstall PHP 5.6.4 or above
  3. Oluşturucu YüklemeInstall Composer
  4. Laravel için gereken şu PHP uzantılarını etkinleştirin: OpenSSL, PDO-MySQL, Mbstring, Tokenizer, XMLEnable the following PHP extensions Laravel needs: OpenSSL, PDO-MySQL, Mbstring, Tokenizer, XML
  5. MySQL'i yükleyin ve başlatınInstall and start MySQL

Yerel MySQL hazırlamaPrepare local MySQL

Bu adımda, bu öğreticide kullanmak üzere yerel MySQL sunucunuzda bir veritabanı oluşturursunuz.In this step, you create a database in your local MySQL server for your use in this tutorial.

Yerel MySQL sunucusuna bağlanmaConnect to local MySQL server

Bir terminal penceresinde yerel MySQL sunucunuza bağlanın.In a terminal window, connect to your local MySQL server. Bu öğreticideki tüm komutları çalıştırmak için bu terminal penceresini kullanabilirsiniz.You can use this terminal window to run all the commands in this tutorial.

mysql -u root -p

Parola istenirse root hesabının parolasını girin.If you're prompted for a password, enter the password for the root account. Kök hesap parolanızı hatırlamıyorsanız bkz MySQL: Kök Parolayı Sıfırlama.If you don't remember your root account password, see MySQL: How to Reset the Root Password.

Komutunuz başarıyla çalışırsa, MySQL sunucunuz çalışıyor demektir.If your command runs successfully, then your MySQL server is running. Çalışmıyorsa, yerel MySQL sunucunuzun aşağıdaki MySQL yükleme sonrası adımları kullanılarak başlatıldığından emin olun.If not, make sure that your local MySQL server is started by following the MySQL post-installation steps.

Yerel olarak veritabanı oluşturmaCreate a database locally

mysql isteminde bir veritabanı oluşturun.At the mysql prompt, create a database.

CREATE DATABASE sampledb;

quit yazarak sunucu bağlantınızdan çıkış yapın.Exit your server connection by typing quit.

quit

Yerel olarak PHP uygulaması oluşturmaCreate a PHP app locally

Bu adımda bir Laravel örnek uygulaması edinir, veritabanı bağlantısını yapılandırır ve yerel olarak çalıştırırsınız.In this step, you get a Laravel sample application, configure its database connection, and run it locally.

ÖrneğiClone the sample

Terminal penceresinde, örnek uygulamayı klonlayabileceğiniz boş bir dizine gidin.In the terminal window, navigate to an empty directory where you can clone the sample application. Örnek depoyu kopyalamak için aşağıdaki komutu çalıştırın.Run the following command to clone the sample repository.

git clone https://github.com/Azure-Samples/laravel-tasks

cd komutuyla kopyalanmış dizininize geçin.cd to your cloned directory. Gereken paketleri yükleyin.Install the required packages.

cd laravel-tasks
composer install

MySQL bağlantısını yapılandırmaConfigure MySQL connection

Depo kökünde .env adlı bir dosya oluşturun.In the repository root, create a file named .env. Aşağıdaki değişkenleri .env dosyasına kopyalayın.Copy the following variables into the .env file. < Root_password> yer tutucusunu MySQL kök kullanıcısının parolasıyla değiştirin.Replace the <root_password> placeholder with the MySQL root user's password.

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>

Laravel’in .env dosyasını nasıl kullandığı hakkında bilgi için bkz. Laravel Ortamı Yapılandırması.For information on how Laravel uses the .env file, see Laravel Environment Configuration.

Örneği yerel olarak çalıştırmaRun the sample locally

Uygulama için gereken tabloları oluşturmak üzere Laravel veritabanı geçişlerini çalıştırın.Run Laravel database migrations to create the tables the application needs. Geçişlerde hangi tabloların oluşturulduğunu görmek için, Git deposundaki veritabanı/geçişler dizinine bakın.To see which tables are created in the migrations, look in the database/migrations directory in the Git repository.

php artisan migrate

Yeni bir Laravel uygulama anahtarı oluşturun.Generate a new Laravel application key.

php artisan key:generate

Uygulamayı çalıştırın.Run the application.

php artisan serve

Bir tarayıcıda http://localhost:8000 sayfasına gidin.Navigate to http://localhost:8000 in a browser. Sayfaya birkaç görev ekleyin.Add a few tasks in the page.

PHP başarıyla MySQL’e bağlanır

PHP’yi durdurmak için terminale Ctrl + C yazın.To stop PHP, type Ctrl + C in the terminal.

MySQL esnek sunucusu oluşturma (Önizleme)Create a MySQL Flexible Server (Preview)

Bu adımda, MySQL Için Azure veritabanı esnek sunucusu 'nda genel önizlemede olan bir MySQL veritabanı oluşturacaksınız.In this step, you create a MySQL database in Azure Database for MySQL Flexible Server which is in public preview. Daha sonra, PHP uygulamasını bu veritabanına bağlanacak şekilde yapılandırırsınız.Later, you configure the PHP application to connect to this database. Azure Cloud Shell, komutuyla ' de bir sunucu oluşturun az flexible-server create .In the Azure Cloud Shell, create a server in with the az flexible-server create command.

az mysql flexible-server create  --resource-group myResourceGroup --public-access <IP-Address>

Önemli

  • Bir sonraki adımda kullanmak için ServerName ve Connection dizesini bir yere, laralevel veri geçişini bağlamak ve çalıştırmak için bu dizeyi bir yere iade edin.Make a note of the servername and connection string to use it in the next step to connect and run laravel data migration.
  • IP adresi bağımsız değişkeni için, ISTEMCI makinenizin IP 'sini sağlayın.For IP-Address argument, provide the IP of your client machine. Sunucu oluşturulduğunda kilitlenir ve sunucuyu yerel olarak yönetmek için istemci makinenize erişime izin vermeniz gerekir.The server is locked when created and you need to permit access to your client machine to manage the server locally.

Web uygulamasının sunucuya bağlanmasına izin vermek için sunucu güvenlik duvarını yapılandırmaConfigure server firewall to allow web app to connect to the server

Cloud Shell, az MySQL Server Firewall-Rule Create komutunu kullanarak MySQL sunucunuzun istemci bağlantılarına izin vermek için bir güvenlik duvarı kuralı oluşturun.In the Cloud Shell, create a firewall rule for your MySQL server to allow client connections by using the az mysql server firewall-rule create command. Hem başlangıç IP 'si hem de bitiş IP 'si olarak ayarlandığında 0.0.0.0 , güvenlik duvarı yalnızca sunucuya bağlanmak için statik IP 'si olmayan diğer Azure hizmetleri için açılır.When both starting IP and end IP are set to 0.0.0.0, the firewall is only opened for other Azure services that do not have a static IP to connect to the server.

az mysql flexible-server firewall-rule create --name allanyAzureIPs --server <mysql-server-name> --resource-group myResourceGroup --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0

Üretim MySQL sunucusuna yerel olarak bağlanmaConnect to production MySQL server locally

Yerel terminal penceresinde, Azure’da MySQL sunucusuna bağlanın.In the local terminal window, connect to the MySQL server in Azure. Daha önce ve için belirttiğiniz değeri kullanın <admin-user> <mysql-server-name> .Use the value you specified previously for <admin-user> and <mysql-server-name> . Parola sorulduğunda, Azure’da veritabanı oluştururken belirttiğiniz parolayı kullanın.When prompted for a password, use the password you specified when you created the database in Azure.

mysql -u <admin-user> -h <mysql-server-name>.mysql.database.azure.com -P 3306 -p

Üretim veritabanı oluşturmaCreate a production database

mysql isteminde bir veritabanı oluşturun.At the mysql prompt, create a database.

CREATE DATABASE sampledb;

İzinleri olan bir kullanıcı oluşturmaCreate a user with permissions

phpappuser adlı bir veritabanı kullanıcısı oluşturun ve bu kullanıcıya sampledb veritabanındaki tüm ayrıcalıkları verin.Create a database user called phpappuser and give it all privileges in the sampledb database. Öğreticinin basitliği için parola olarak MySQLAzure2020 kullanın.For simplicity of the tutorial, use MySQLAzure2020 as the password.

CREATE USER 'phpappuser' IDENTIFIED BY 'MySQLAzure2020';
GRANT ALL PRIVILEGES ON sampledb.* TO 'phpappuser';

quit yazarak sunucu bağlantısından çıkış yapın.Exit the server connection by typing quit.

quit

Uygulamayı MySQL esnek sunucusuna bağlamaConnect app to MySQL flexible server

Bu adımda, PHP uygulamasını MySQL için Azure Veritabanı içinde oluşturduğunuz MySQL veritabanına bağlarsınız.In this step, you connect the PHP application to the MySQL database you created in Azure Database for MySQL.

Veritabanı bağlantısını yapılandırmaConfigure the database connection

Depo kökünde bir .env.production dosyası oluşturun ve içine aşağıdaki değişkenleri kopyalayın.In the repository root, create an .env.production file and copy the following variables into it. < MySQL-Server-Name> yer tutucusunu hem DB_Host hem DB_USERNAME ile değiştirin.Replace the placeholder <mysql-server-name> in both DB_HOST and 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
DB_PASSWORD=MySQLAzure2017
MYSQL_SSL=true

Değişiklikleri kaydedin.Save the changes.

İpucu

MySQL bağlantı bilgilerinizin güvenliğini sağlamak için bu dosya zaten Git deposunun dışında bırakılmıştır (Depo kökünde .gitignore dosyasına bakın).To secure your MySQL connection information, this file is already excluded from the Git repository (See .gitignore in the repository root). Daha sonra, App Service’teki ortam değişkenlerini, MySQL için Azure Veritabanı içinde veritabanınıza bağlanmak üzere nasıl yapılandıracağınızı öğreneceksiniz.Later, you learn how to configure environment variables in App Service to connect to your database in Azure Database for MySQL. Ortam değişkenlerini kullandığınızda App Service içinde .env dosyası gerekli değildir.With environment variables, you don't need the .env file in App Service.

TLS/SSL sertifikası yapılandırmaConfigure TLS/SSL certificate

Varsayılan olarak, MySQL esnek sunucusu istemcilerden TLS bağlantıları uygular.By default, MySQL Flexible Server enforces TLS connections from clients. Azure 'da MySQL veritabanınıza bağlanmak için MySQL Için Azure veritabanı esnek sunucusu tarafından sağlanan . Pee sertifikasınıkullanmanız gerekir.To connect to your MySQL database in Azure, you must use the .pem certificate supplied by Azure Database for MySQL Flexible Server. Bu sertifikayıindirin) ve örnek uygulama deposunun yerel kopyasına SSL klasörüne yerleştirin.Download this certificate) and place it in the SSL folder in the local copy of the sample app repository.

config/database.php dosyasını açın ve aşağıdaki kodda gösterildiği gibi sslmode ve options parametrelerini connections.mysql içine ekleyin.Open config/database.php and add the sslmode and options parameters to connections.mysql, as shown in the following code.

'mysql' => [
    ...
    'sslmode' => env('DB_SSLMODE', 'prefer'),
    'options' => (env('MYSQL_SSL') && extension_loaded('pdo_mysql')) ? [
        PDO::MYSQL_ATTR_SSL_KEY    => '/ssl/DigiCertGlobalRootCA.crt.pem',
    ] : []
],

Uygulamayı yerel olarak test etmeTest the application locally

MySQL için Azure Veritabanı içinde tablolar oluşturmak için, .env.production ile Laravel veritabanı geçişlerini ortam dosyası olarak çalıştırın.Run Laravel database migrations with .env.production as the environment file to create the tables in your MySQL database in Azure Database for MySQL. .env.production dosyasının, Azure’da MySQL veritabanınızla bağlantı bilgilerini içerdiğini unutmayın.Remember that .env.production has the connection information to your MySQL database in Azure.

php artisan migrate --env=production --force

.env.production henüz geçerli bir uygulama anahtarına sahip değildir..env.production doesn't have a valid application key yet. Terminalde bu dosya için yeni bir tane oluşturun.Generate a new one for it in the terminal.

php artisan key:generate --env=production --force

Örnek uygulamayı .env.production ortam dosyası ile birlikte çalıştırın.Run the sample application with .env.production as the environment file.

php artisan serve --env=production

http://localhost:8000 sayfasına gidin.Navigate to http://localhost:8000. Sayfa hatasız yüklenirse, PHP uygulaması Azure’da MySQL veritabanına bağlanıyor demektir.If the page loads without errors, the PHP application is connecting to the MySQL database in Azure.

Sayfaya birkaç görev ekleyin.Add a few tasks in the page.

PHP, MySQL için Azure Veritabanı’na başarıyla bağlanır

PHP’yi durdurmak için terminale Ctrl + C yazın.To stop PHP, type Ctrl + C in the terminal.

Değişikliklerinizi kaydetmeCommit your changes

Değişikliklerinizi kaydetmek için aşağıdaki Git komutlarını çalıştırın:Run the following Git commands to commit your changes:

git add .
git commit -m "database.php updates"

Uygulamanız dağıtılmaya hazırdır.Your app is ready to be deployed.

Azure’a dağıtınDeploy to Azure

Bu adımda, MySQL’e bağlı PHP uygulamasını Azure App Service'e dağıtırsınız.In this step, you deploy the MySQL-connected PHP application to Azure App Service.

Dağıtım kullanıcısı yapılandırmaConfigure a deployment user

FTP ve yerel git, bir dağıtım kullanıcısı kullanarak bir Azure Web uygulamasına dağıtabilir.FTP and local Git can deploy to an Azure web app by using a deployment user. Dağıtım kullanıcısını yapılandırdıktan sonra tüm Azure dağıtımlarınız için kullanabilirsiniz.Once you configure your deployment user, you can use it for all your Azure deployments. Hesap düzeyinde dağıtım Kullanıcı adınız ve parolanız, Azure aboneliği kimlik bilgilerinizden farklı.Your account-level deployment username and password are different from your Azure subscription credentials.

Dağıtım kullanıcısını yapılandırmak için, Azure Cloud Shell bölümünde az WebApp Deployment User set komutunu çalıştırın.To configure the deployment user, run the az webapp deployment user set command in Azure Cloud Shell. Kullanıcı adı <> ve < parola> , dağıtım Kullanıcı Kullanıcı adınızla ve parolasıyla değiştirin.Replace <username> and <password> with your deployment user username and password.

Kullanıcı adı Azure içinde benzersiz olmalıdır ve yerel git gönderimleri için ' @ ' sembolünü içermemelidir.The username must be unique within Azure, and for local Git pushes, must not contain the ‘@’ symbol. Parola en az sekiz karakter uzunluğunda olmalıdır ve şu üç öğeden ikisi vardır: harfler, rakamlar ve semboller.The password must be at least eight characters long, with two of the following three elements: letters, numbers, and symbols.

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku F1 --is-linux

JSON çıktısı, parolayı null olarak gösterir.The JSON output shows the password as null. ' Çakışma ' alırsanız.If you get a 'Conflict'. Ayrıntılar: 409 hatası, Kullanıcı adını değiştirin.Details: 409 error, change the username. ' Hatalı Istek ' alırsanız.If you get a 'Bad Request'. Ayrıntılar: 400 hatası, daha güçlü bir parola kullanın.Details: 400 error, use a stronger password. Web uygulamalarınızı dağıtmak için kullanmak üzere Kullanıcı adınızı ve parolanızı kaydedin.Record your username and password to use to deploy your web apps.

App Service planı oluşturmaCreate an App Service plan

Cloud Shell, az appservice plan Create komutuyla kaynak grubunda bir App Service planı oluşturun.In the Cloud Shell, create an App Service plan in the resource group with the az appservice plan create command. Aşağıdaki örnek, ücretsiz fiyatlandırma katmanında (--SKU F1) ve bir Linux kapsayıcısında (--,-Linux) myAppServicePlan adlı bir App Service planı oluşturur.The following example creates an App Service plan named myAppServicePlan in the Free pricing tier (--sku F1) and in a Linux container (--is-linux).

az appservice plan Create--Name myAppServicePlan--Resource-Group myResourceGroup--SKU F1---Linuxaz appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku F1 --is-linux

Web uygulaması oluşturmaCreate a web app

MyAppServicePlan App Service planında bir Web uygulaması oluşturun.Create a web app in the myAppServicePlan App Service plan.

Cloud Shell az WebApp Create komutunu kullanabilirsiniz.In the Cloud Shell, you can use the az webapp create command. Aşağıdaki örnekte, < app-name> değerini genel olarak benzersiz bir uygulama adıyla değiştirin (geçerli karakterler a-z , 0-9 ve - ).In the following example, replace <app-name> with a globally unique app name (valid characters are a-z, 0-9, and -). Çalışma zamanı PHP|7.0 olarak ayarlanmıştır.The runtime is set to PHP|7.0. Desteklenen tüm çalışma zamanlarını görmek için az WebApp List-çalışma zamanları--Linux' u çalıştırın.To see all supported runtimes, run az webapp list-runtimes --linux.

az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime "PHP|7.3" --deployment-local-git

Web uygulaması oluşturulduğunda Azure CLI aşağıda yer alan çıktıdaki gibi bilgiler gösterir:When the web app has been created, the Azure CLI shows output similar to the following example:

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

Git dağıtımı etkin boş bir yeni web uygulaması oluşturdunuz.You’ve created an empty new web app, with git deployment enabled.

Not

Git Remote 'in URL 'SI deploymentLocalGitUrl özelliğinde, https:// @ . scm.azurewebsites.net/. git biçiminde gösterilir.The URL of the Git remote is shown in the deploymentLocalGitUrl property, with the format https://@.scm.azurewebsites.net/.git. Bu URL’ye daha sonra ihtiyacınız olacağı için URL’yi kaydedin.Save this URL as you need it later.

Veritabanı ayarlarını yapılandırmaConfigure database settings

App Service'te, az webapp config appsettings set komutunu kullanıp ortam değişkenlerini uygulama ayarları olarak belirlersiniz.In App Service, you set environment variables as app settings by using the az webapp config appsettings set command.

Aşağıdaki komut DB_HOST, DB_DATABASE, DB_USERNAME ve DB_PASSWORD uygulama ayarlarını yapılandırır.The following command configures the app settings DB_HOST, DB_DATABASE, DB_USERNAME, and DB_PASSWORD. < App-name> ve < mysql-Server-Name> yer tutucularını değiştirin.Replace the placeholders <app-name> and <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" DB_PASSWORD="MySQLAzure2017" MYSQL_SSL="true"

Ayarlara erişmek için PHP getenv yöntemini kullanabilirsiniz.You can use the PHP getenv method to access the settings. Laravel kodu, PHP getenv üzerinde bir env sarmalayıcı kullanır.the Laravel code uses an env wrapper over the PHP getenv. Örneğin, config/database.php içindeki MySQL yapılandırması aşağıdaki kod gibi görünür:For example, the MySQL configuration in config/database.php looks like the following code:

'mysql' => [
    'driver'    => 'mysql',
    'host'      => env('DB_HOST', 'localhost'),
    'database'  => env('DB_DATABASE', 'forge'),
    'username'  => env('DB_USERNAME', 'forge'),
    'password'  => env('DB_PASSWORD', ''),
    ...
],

Laravel ortam değişkenlerini yapılandırmaConfigure Laravel environment variables

Laravel, App Service'te bir uygulama anahtarı gerektirir.Laravel needs an application key in App Service. Uygulama anahtarını uygulama ayarları ile yapılandırabilirsiniz.You can configure it with app settings.

Yerel terminal penceresinde, uygulama anahtarını .env dosyasına kaydetmeden yeni bir uygulama anahtarı oluşturmak için php artisan seçeneğini kullanın.In the local terminal window, use php artisan to generate a new application key without saving it to .env.

php artisan key:generate --show

Cloud Shell, komutunu kullanarak App Service uygulamasındaki uygulama anahtarını ayarlayın az webapp config appsettings set .In the Cloud Shell, set the application key in the App Service app by using the az webapp config appsettings set command. < App-name> ve < outputofphpartisankey: Generate> yer tutucuları değiştirin.Replace the placeholders <app-name> and <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" , dağıtılmış uygulama hata ile karşılaştığında hata ayıklama bilgilerini döndürmesini söyler.APP_DEBUG="true" tells Laravel to return debugging information when the deployed app encounters errors. Bir üretim uygulaması çalıştırırken daha güvenli olan false seçeneğine ayarlayın.When running a production application, set it to false, which is more secure.

Sanal uygulama yolu ayarlamaSet the virtual application path

Laralevel uygulama yaşam döngüsü , uygulamanın kök dizini yerine ortak dizin içinde başlar.Laravel application lifecycle begins in the public directory instead of the application's root directory. App Service için varsayılan PHP Docker görüntüsü, Apache kullanır ve Laravel için DocumentRoot öğesini özelleştirmenize izin vermez.The default PHP Docker image for App Service uses Apache, and it doesn't let you customize the DocumentRoot for Laravel. Bununla birlikte, .htaccess kullanarak tüm istekleri kök dizin yerine /public dizinini işaret edecek şekilde yeniden yazabilirsiniz.However, you can use .htaccess to rewrite all requests to point to /public instead of the root directory. Depo köküne bu amaçla bir .htaccess zaten eklenmiştir.In the repository root, an .htaccess is added already for this purpose. Bununla, Laravel uygulamanız dağıtılmaya hazırdır.With it, your Laravel application is ready to be deployed.

Daha fazla bilgi için bkz. site kökünü değiştirme.For more information, see Change site root.

Git üzerinden Azure'a göndermePush to Azure from Git

Yerel terminal penceresine dönüp yerel Git deponuza bir Azure uzak deposu ekleyin.Back in the local terminal window, add an Azure remote to your local Git repository. < Deploymentlocalgiturl-from-Create-Step> , Web uygulaması oluşturlistesinden kaydettiğiniz git uzak URL 'siyle değiştirin.Replace <deploymentLocalGitUrl-from-create-step> with the URL of the Git remote that you saved from Create a web app.

git remote add azure <deploymentLocalGitUrl-from-create-step>

Aşağıdaki komutla uygulamanızı dağıtmak için Azure uzak deposuna gönderin.Push to the Azure remote to deploy your app with the following command. Git kimlik bilgileri Yöneticisi kimlik bilgilerini sizden isterse, Azure portal oturum açmak için kullandığınız kimlik bilgilerini değil dağıtım kullanıcısı yapılandırma bölümünde oluşturduğunuz kimlik bilgilerini girdiğinizden emin olun.When Git Credential Manager prompts you for credentials, make sure you enter the credentials you created in Configure a deployment user, not the credentials you use to sign in to the Azure portal.

git push azure main

Bu komutun çalıştırılması birkaç dakika sürebilir.This command may take a few minutes to run. Çalıştırıldığında, aşağıdaki örneğe benzer bilgiler görüntüler:While running, it displays information similar to the following example:

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 >

Azure uygulamasına gidinBrowse to the Azure app

http://<app-name>.azurewebsites.net listesine göz atın ve listeye birkaç görev ekleyin.Browse to http://<app-name>.azurewebsites.net and add a few tasks to the list.

Azure 'da PHP Web uygulaması

Tebrikler, Azure App Service'te veri temelli bir PHP uygulaması çalıştırıyorsunuz.Congratulations, you're running a data-driven PHP app in Azure App Service.

Modeli yerel olarak güncelleştirme ve yeniden dağıtmaUpdate model locally and redeploy

Bu adımda, task veri modeli ve web uygulamasında basit bir değişiklik yaptıktan sonra güncelleştirmeyi Azure'da yayımlarsınız.In this step, you make a simple change to the task data model and the webapp, and then publish the update to Azure.

Görevler senaryosu için, görevi tamamlandı olarak işaretleyebileceğiniz şekilde uygulamayı değiştirirsiniz.For the tasks scenario, you modify the application so that you can mark a task as complete.

Sütun eklemeAdd a column

Yerel terminal penceresinde Git deposunun kök dizinine gidin.In the local terminal window, navigate to the root of the Git repository.

tasks tablosu için yeni bir veritabanı geçişi oluşturun:Generate a new database migration for the tasks table:

php artisan make:migration add_complete_column --table=tasks

Bu komut, oluşturulan geçiş dosyasının adını gösterir.This command shows you the name of the migration file that's generated. database/migrations içinde bu dosyayı bulup açın.Find this file in database/migrations and open it.

up yöntemini aşağıdaki kod ile değiştirin:Replace the up method with the following code:

public function up()
{
    Schema::table('tasks', function (Blueprint $table) {
        $table->boolean('complete')->default(False);
    });
}

Yukarıdaki kod, tasks tablosuna complete adlı bir boole sütunu ekler.The preceding code adds a boolean column in the tasks table called complete.

Geri alma eylemi için down yöntemini aşağıdaki kod ile değiştirin:Replace the down method with the following code for the rollback action:

public function down()
{
    Schema::table('tasks', function (Blueprint $table) {
        $table->dropColumn('complete');
    });
}

Yerel terminal penceresinde, Laravel veritabanı geçişlerini çalıştırarak yerel veritabanında değişikliği yapın.In the local terminal window, run Laravel database migrations to make the change in the local database.

php artisan migrate

Laravel adlandırma kuralına göre Task modeli (bkz. app/Task.php) varsayılan olarak tasks tablosu ile eşlenir.Based on the Laravel naming convention, the model Task (see app/Task.php) maps to the tasks table by default.

Uygulama mantığını güncelleştirmeUpdate application logic

routes/web.php dosyasını açın.Open the routes/web.php file. Uygulama, yollarını ve iş mantığını burada tanımlar.The application defines its routes and business logic here.

Dosyanın sonuna aşağıdaki kod ile bir yol ekleyin:At the end of the file, add a route with the following code:

/**
 * 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('/');
});

Yukarıdaki kod, complete değerini değiştirerek veri modelinde basit bir güncelleştirme yapar.The preceding code makes a simple update to the data model by toggling the value of complete.

Görünümü güncelleştirmeUpdate the view

resources/views/tasks.blade.php dosyasını açın.Open the resources/views/tasks.blade.php file. <tr> açma etiketini bulup şununla değiştirin:Find the <tr> opening tag and replace it with:

<tr class="{{ $task->complete ? 'success' : 'active' }}" >

Yukarıdaki kod, görevin tamamlanıp tamamlanmamasına bağlı olarak satır rengini değiştirir.The preceding code changes the row color depending on whether the task is complete.

Sonraki satırda şu kodu görürsünüz:In the next line, you have the following code:

<td class="table-text"><div>{{ $task->name }}</div></td>

Tüm satırı aşağıdaki kod ile değiştirin:Replace the entire line with the following code:

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

Yukarıdaki kod, daha önce tanımladığınız yola başvuran Gönder düğmesini ekler.The preceding code adds the submit button that references the route that you defined earlier.

Değişiklikleri yerel olarak test etmeTest the changes locally

Yerel terminal penceresinde, Git deposunun kök dizininden geliştirme sunucusunu çalıştırın.In the local terminal window, run the development server from the root directory of the Git repository.

php artisan serve

Görev durumu değişikliğini görmek için http://localhost:8000 öğesine gidip onay kutusunu işaretleyin.To see the task status change, navigate to http://localhost:8000 and select the checkbox.

Göreve eklenen onay kutusu

PHP’yi durdurmak için terminale Ctrl + C yazın.To stop PHP, type Ctrl + C in the terminal.

Değişiklikleri Azure’da yayımlamaPublish changes to Azure

Yerel terminal penceresinde, Laravel veritabanı geçişlerini üretim bağlantı dizesi ile birlikte çalıştırarak değişikliği Azure veritabanında yapın.In the local terminal window, run Laravel database migrations with the production connection string to make the change in the Azure database.

php artisan migrate --env=production --force

Tüm değişiklikleri Git’e kaydedin ve ardından kod değişikliklerini Azure’a gönderin.Commit all the changes in Git, and then push the code changes to Azure.

git add .
git commit -m "added complete checkbox"
git push azure main

Tamamlandıktan sonra git push Azure uygulamasına gidin ve yeni işlevleri test edin.Once the git push is complete, navigate to the Azure app and test the new functionality.

Azure’da yayımlanan model ve veritabanı değişiklikleri

Herhangi bir görevi eklediyseniz veritabanında tutulur.If you added any tasks, they are retained in the database. Veri şemasında yapılan güncelleştirmeler var olan verileri olduğu gibi bırakır.Updates to the data schema leave existing data intact.

Kaynakları temizlemeClean up resources

Önceki adımlarda, bir kaynak grubunda Azure kaynakları oluşturdunuz.In the preceding steps, you created Azure resources in a resource group. Bu kaynakların gelecekte gerekli olacağını düşünmüyorsanız, Cloud Shell’de aşağıdaki komutu çalıştırarak kaynak grubunu silin:If you don't expect to need these resources in the future, delete the resource group by running the following command in the Cloud Shell:

az group delete --name myResourceGroup

Sonraki adımlarNext steps