Öğretici: Azure Uygulaması Hizmetinde PHP (Laravel) ve MySQL için Azure Veritabanı - Esnek Sunucu uygulaması oluşturma

ŞUNLAR IÇIN GEÇERLIDIR: MySQL için Azure Veritabanı - Esnek Sunucu

Azure Uygulaması Hizmeti, Linux işletim sistemini kullanarak yüksek oranda ölçeklenebilir, kendi kendine düzeltme eki uygulamalı bir web barındırma hizmeti sağlar. Bu öğreticide, MySQL veritabanına (MySQL için Azure Veritabanı esnek sunucu kullanılarak) bağlı Azure Uygulaması Hizmetinde güvenli bir PHP uygulamasının nasıl oluşturulacağı gösterilmektedir. İşiniz bittiğinde, Linux'ta Azure Uygulaması Hizmeti üzerinde çalışan bir Laravel uygulamanız olur.

Screenshot of the Azure app example titled Task List showing new tasks added.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Azure'da varsayılan olarak güvenli bir PHP ve MySQL uygulaması oluşturma
  • Uygulama ayarlarını kullanarak MySQL'e bağlantı gizli dizilerini yapılandırma
  • GitHub Actions kullanarak uygulama kodunu dağıtma
  • Uygulamayı güncelleştirme ve yeniden dağıtma
  • Veritabanı geçişlerini güvenli bir şekilde çalıştırma
  • Azure’daki tanılama günlüklerinin akışını sağlama
  • Uygulamayı Azure portalında yönetme

Önkoşullar

Örnek uygulama

Bu öğreticiyi takip etmek için örnek uygulamayı depodan kopyalayın veya indirin:

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

Uygulamayı yerel olarak çalıştırmak istiyorsanız aşağıdakileri yapın:

  • .env'de, yerel MySQL için Azure Veritabanı esnek sunucu veritabanınızdaki ayarları kullanarak veritabanı ayarlarını (, ve DB_PASSWORDgibiDB_DATABASEDB_USERNAME) yapılandırın. Bu örneği çalıştırmak için yerel MySQL için Azure Veritabanı esnek sunucu örneği gerekir.

  • Deponun kökünden aşağıdaki komutlarla Laravel'i başlatın:

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

1 - App Service ve MySQL için Azure Veritabanı esnek sunucu kaynakları oluşturma

Bu adımda Azure kaynaklarını oluşturursunuz. Bu öğreticide kullanılan adımlar bir App Service oluşturur ve varsayılan olarak güvenli olan esnek sunucu yapılandırmasını MySQL için Azure Veritabanı. Oluşturma işlemi için şunları belirteceksiniz:

  • Web uygulamasının Adı. Web uygulamanızın DNS adının bir parçası olarak biçiminde kullanılan addır https://<app-name>.azurewebsites.net.
  • Uygulama için Çalışma Zamanı . Burası, uygulamanız için kullanılacak PHP sürümünü seçtiğiniz yerdir.
  • Uygulamanın Kaynak Grubu . Kaynak grubu, uygulama için gereken tüm Azure kaynaklarını gruplandırmanıza (mantıksal bir kapsayıcıda) olanak tanır.

Azure portalında oturum açın ve Azure Uygulaması Hizmeti kaynaklarınızı oluşturmak için bu adımları izleyin.

Yönergeler Ekran görüntüsü
Azure portalında:
  1. Azure portalının üst kısmındaki arama çubuğuna "web uygulaması veritabanı" yazın.
  2. Market başlığının altında Web Uygulaması + Veritabanı etiketli öğeyi seçin.
Doğrudan oluşturma sihirbazına da gidebilirsiniz.
A screenshot showing how to use the search box in the top tool bar to find the Web App + Database creation wizard.
Web Uygulaması + Veritabanı Oluştur sayfasında, formu aşağıdaki gibi doldurun.
  1. Kaynak Grubu → Yeni oluştur'u seçin ve msdocs-laravel-mysql-tutorial adını kullanın.

  2. Bölge → Yakınınızda herhangi bir Azure bölgesi.

  3. msdocs-laravel-mysql-XYZ →, burada XYZ herhangi bir rastgele karakterdir. Bu ad Azure genelinde benzersiz olmalıdır.

  4. Php 8.0çalışma zamanı yığını.

    MySQL - Esnek Sunucu , veritabanı altyapısı olarak varsayılan olarak sizin için seçilir. MySQL için Azure Veritabanı, Azure'da en son topluluk sürümleriyle uyumlu, tam olarak yönetilen bir hizmet olarak MySQL veritabanıdır.

  5. Sizin için oluşturulan veritabanı adını (<app-name-database>) not edin. Buna daha sonra ihtiyacınız olacak.

  6. Gözden geçir ve oluştur’a tıklayın.

Doğrulama tamamlandıktan sonra Oluştur'a tıklayın.
A screenshot showing how to configure a new app and database in the Web App + Database wizard.
Dağıtımın tamamlanması birkaç dakika sürer ve aşağıdaki kaynakları oluşturur:
  • Kaynak grubu → Oluşturulan tüm kaynaklar için kapsayıcı.
  • App Service planı → App Service için işlem kaynaklarını tanımlar. P1v2 katmanında bir Linux planı oluşturulur.
  • App Service → Uygulamanızı temsil eder ve App Service planında çalışır.
  • Sanal ağ → App Service uygulamasıyla tümleşiktir ve arka uç ağ trafiğini yalıttır.
  • MySQL için Azure Veritabanı - Esnek Sunucu → Yalnızca sanal ağdan erişilebilir. Sunucuda sizin için bir veritabanı ve kullanıcı oluşturulur.
  • Özel DNS bölge → Sanal ağdaki MySQL veritabanı sunucusunun DNS çözümlemesini etkinleştirir.
Dağıtım tamamlandıktan sonra Kaynağa git düğmesine tıklayın. Doğrudan App Service uygulamasına yönlendirilirsiniz.
A screenshot showing the form to fill out to create a web app in Azure.

2 - Veritabanı bağlantısını ayarlama

Oluşturma sihirbazı, veritabanına bağlanmak için kullanabileceğiniz uygulama ayarlarını oluşturdu, ancak henüz kodunuz için kullanılabilecek bir biçimde değil. Bu adımda, uygulama ayarlarını uygulamanızın ihtiyaç duyduğu biçimde düzenler ve güncelleştirirsiniz.

Yönergeler Ekran görüntüsü
App Service sayfasının sol menüsünde Yapılandırma'yı seçin. A screenshot showing how to open the configuration page in App Service.
Yapılandırma sayfasının Uygulama ayarları sekmesinde, aşağıdaki ayarların her biri için Düzenle'ye tıklayın, Ad alanını yeni değerlerle güncelleştirin ve Tamam'a tıklayın.
Geçerli Ad Yeni Ad
AZURE_MYSQL_DBNAME DB_DATABASE
AZURE_MYSQL_HOST DB_HOST
AZURE_MYSQL_USERNAME DB_USERNAME
AZURE_MYSQL_PASSWORD DB_PASSWORD
A screenshot showing how to see the autogenerated connection string.
Yeni MYSQL_ATTR_SSL_CA bir veritabanı ayarı oluşturun:
  1. Yeni uygulama ayarı'ne tıklayın.

  2. Ad alanına MYSQL_ATTR_SSL_CA girin.

  3. Değer alanına /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem girin.

    Bu uygulama ayarı, MySQL sunucusuna erişmek için ihtiyacınız olan TLS/SSL sertifikasının yolunu gösterir. Kolaylık sağlamak için örnek depoya dahildir.

  4. Tamam'a tıklayın.

A screenshot showing how to create an app setting.
Aynı adımları izleyerek aşağıdaki ek uygulama ayarlarını oluşturun ve kaydet'e tıklayın.
  • APP_DEBUG: Değer olarak true kullanın. Bu bir Laravel hata ayıklama değişkenidir.

  • APP_KEY: Değer olarak base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= kullanın. Bu bir Laravel şifreleme değişkenidir.

    Önemli

    Bu APP_KEY değer burada kolaylık sağlamak için kullanılır. Üretim senaryoları için, komut satırında kullanılarak php artisan key:generate --show dağıtımınız için özel olarak oluşturulmalıdır.

A screenshot showing all the required app settings in the configuration page.

3 - Örnek kodu dağıtma

Bu adımda GitHub Actions'ı kullanarak GitHub dağıtımını yapılandıracaksınız. App Service'e dağıtmanın birçok yolundan yalnızca biridir, aynı zamanda dağıtım sürecinizde sürekli tümleştirmeye sahip olmanın harika bir yoludur. Varsayılan olarak, GitHub deponuzun her git push örneği derleme ve dağıtma eylemini başlatacaktır. Doğrudan tarayıcıda Visual Studio Code ile kod tabanınızda bazı değişiklikler yapacak, ardından GitHub Actions'ın sizin için otomatik olarak dağıtılmasına izin vereceksiniz.

Yönergeler Ekran görüntüsü
Yeni bir tarayıcı penceresinde:
  1. GitHub hesabınıza giriş yapın.

  2. Şuraya gidin: https://github.com/Azure-Samples/laravel-tasks

  3. Çatal'a tıklayın.

  4. Çatal oluştur'a tıklayın.

A screenshot showing how to create a fork of the sample GitHub repository.
GitHub sayfasında, tuşa basarak tarayıcıda Visual Studio Code'ı . açın. A screenshot showing how to open the Visual Studio Code browser experience in GitHub.
Tarayıcıda Visual Studio Code'da gezginde config/database.php açın. Bağlantıdamysql, MySQL bağlantısı için daha önce oluşturduğunuz uygulama ayarlarının (DB_HOST, DB_DATABASE, , DB_USERNAME, DB_PASSWORDMYSQL_ATTR_SSL_CA) zaten kullanıldığına bakın. A screenshot showing Visual Studio Code in the browser and an opened file.
App Service sayfasına geri dönün, soldaki menüde Dağıtım Merkezi'ni seçin. A screenshot showing how to open the deployment center in App Service.
Dağıtım Merkezi sayfasında:
  1. Kaynak bölümünde GitHub'ı seçin. GitHub Actions varsayılan olarak derleme sağlayıcısı olarak seçilir.

  2. GitHub hesabınızda oturum açın ve Azure'ı yetkilendirme istemini izleyin.

  3. Kuruluş'ta hesabınızı seçin.

  4. Depo'da laravel-tasks öğesini seçin.

  5. Dal'da ana'yı seçin.

  6. Üstteki menüde Kaydet'e tıklayın.

App Service, .github/workflows dizindeki seçili GitHub deposuna bir iş akışı dosyası işler.
A screenshot showing how to configure CI/CD using GitHub Actions.
Dağıtım Merkezi sayfasında:
  1. Günlükler’i seçin. Dağıtım çalıştırması zaten başlatıldı.

  2. Dağıtım çalıştırmasının günlük öğesinde Günlükleri Derle/Dağıt'ı seçin.

    GitHub deponuza yönlendirilirsiniz ve GitHub eyleminin çalıştığını görürsünüz. İş akışı dosyası derleme ve dağıtma olarak iki ayrı aşama tanımlar.

A screenshot showing how to open deployment logs in the deployment center.
Kodunuzda değişiklik yapmak için tarayıcıda Visual Studio Code'a gidin:
  1. Kaynak Denetimi uzantısını seçin.

  2. Değiştirilen dosyanın yanında, örneğin database.php, değişikliklerinizi hazırlamak için öğesini seçin + .

  3. Metin kutusuna bir işleme iletisi yazın, örneğin add certificate.

  4. İşlemek ve GitHub'a göndermek için onay işaretini seçin.

Dağıtım Merkezi sayfasına geri dönerseniz, başka bir çalıştırma başlatıldığından yeni bir günlük girdisi görürsünüz. Çalıştırma işleminin tamamlanmasını bekleyin. Yaklaşık 15 dakika sürer.

İpucu

GitHub eylemi, .github/workflow içindeki GitHub deponuzdaki dosya tarafından tanımlanır. Dosyayı özelleştirerek daha hızlı hale getirebilirsiniz.

A screenshot showing how to commit your changes in the Visual Studio Code browser experience.

4 - Veritabanı şeması oluşturma

Oluşturma sihirbazı, MySQL için Azure Veritabanı esnek sunucu örneğini özel bir uç noktanın arkasına yerleştirir, bu nedenle yalnızca sanal ağdan erişilebilir. App Service uygulaması zaten sanal ağ ile tümleşik olduğundan veritabanı geçişlerini veritabanınızla çalıştırmanın en kolay yolu doğrudan App Service kapsayıcısının içindendir.

Yönergeler Ekran görüntüsü
App Service sayfasında:
  1. Soldaki menüden SSH'yi seçin.

  2. Git'i seçin.

Tarayıcıda App Service kapsayıcınızla bir SSH oturumu açılır. İsterseniz doğrudan adresine https://<app-name>.scm.azurewebsites.net/webssh/host gidebilirsiniz.
A screenshot showing how to open the SSH shell for your app from the Azure portal.
SSH terminalinde:
  1. Uygulama kodunuzun köküne CD:

    cd /home/site/wwwroot
    
  2. Uygulama kökünden veritabanı geçişlerini çalıştırın.

    php artisan migrate --force
    

    Not

    Yalnızca içindeki dosyalarda /home yapılan değişiklikler uygulama yeniden başlatmalarının ötesinde kalıcı olabilir. dışındaki /home değişiklikler kalıcı olmaz.

A screenshot showing the commands to run in the SSH shell and their output.

5 - Site kökünü değiştirme

Laravel uygulama yaşam döngüsü bunun yerine /public dizininde başlar. App Service için varsayılan PHP 8.0 kapsayıcısı, uygulamanın kök dizininde başlayan Nginx'i kullanır. Site kökünü değiştirmek için PHP 8.0 kapsayıcısında (/etc/nginx/sites-available/default) Nginx yapılandırma dosyasını değiştirmeniz gerekir. Kolaylık sağlamak için örnek depo varsayılan adlı özel bir yapılandırma dosyası içerir. Daha önce de belirtildiği gibi, bir uygulama yeniden başlatıldıktan sonra değişiklikleriniz kaybolacağından bu dosyayı SSH kabuğunu kullanarak değiştirmek istemezsiniz.

Yönergeler Ekran görüntüsü
App Service sayfasında:
  1. Soldaki menüden Yapılandırma'yı seçin.

  2. Genel ayarlar sekmesini seçin.

A screenshot showing how to open the general settings tab in the configuration page of App Service.
Genel ayarlar sekmesinde:
  1. Başlangıç Komutu kutusuna şu komutu girin: cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload.

    PHP 8.0 kapsayıcısında Nginx yapılandırma dosyasının yerini alır ve Nginx'i yeniden başlatır. Bu yapılandırma, kapsayıcı her başlatıldığında kapsayıcıda bu değişikliğin yapılmasını sağlar.

  2. Kaydet'i seçin.

A screenshot showing how to configure a startup command in App Service.

6 - Uygulamaya göz atın

Yönergeler Ekran görüntüsü
App Service sayfasında:
  1. Sol menüden Genel Bakış'ı seçin.

  2. Uygulamanızın URL'sini seçin.

    Doğrudan adresine https://<app-name>.azurewebsites.netde gidebilirsiniz.

A screenshot showing how to launch an App Service from the Azure portal.
Listeye birkaç görev ekleyin. Tebrikler, Azure Uygulaması Hizmeti'nde veri temelli bir PHP uygulaması çalıştırıyorsunuz. A screenshot of the Laravel app running in App Service.

7 - Tanılama günlüklerini akışla aktarma

Yönergeler Ekran görüntüsü
App Service sayfasında:
  1. Sol menüden App Service günlükleri'ni seçin.

  2. Uygulama günlüğü'nin altında Dosya Sistemi'ne tıklayın.

A screenshot showing how to enable native logs in App Service in the Azure portal.
Sol menüden Günlük akışı'na tıklayın. Kapsayıcının içinden platform günlükleri ve günlükler de dahil olmak üzere uygulamanızın günlüklerini görürsünüz. A screenshot showing how to view the log stream in the Azure portal.

Kaynakları temizleme

İşiniz bittiğinde, kaynak grubunu silerek Azure aboneliğinizdeki tüm kaynakları silebilirsiniz.

Yönergeler Ekran görüntüsü
Azure portalının üst kısmındaki arama çubuğunda:
  1. Kaynak grubu adını girin.

  2. Kaynak grubunu seçin.

A screenshot showing how to search for and navigate to a resource group in the Azure portal.
Kaynak grubu sayfasında Kaynak grubunu sil'e tıklayın. A screenshot showing the location of the Delete Resource Group button in the Azure portal.
  1. Silme işleminizi onaylamak için kaynak grubu adını girin.

  2. Sil'e tıklayın.

A screenshot of the confirmation dialog for deleting a resource group in the Azure portal.

Sık sorulan sorular

Bu kurulumun maliyeti ne kadardır?

Kaynak oluşturma fiyatlandırması aşağıdaki gibidir:

  • App Service planı Premium V2 katmanında oluşturulur ve ölçeği artırılabilir veya azaltılabilir. Bkz. App Service fiyatlandırması.
  • MySQL için Azure Veritabanı esnek sunucu örneği B1ms katmanında oluşturulur ve ölçeği artırılabilir veya azaltılabilir. Ücretsiz Azure hesabıyla B1ms katmanı, aylık sınırlara kadar 12 ay boyunca ücretsizdir. Bkz. esnek sunucu fiyatlandırması MySQL için Azure Veritabanı.
  • Eşleme gibi ek işlevler yapılandırmadığınız sürece sanal ağ ücret ödemez. Bkz. Azure Sanal Ağ fiyatlandırması.
  • Özel DNS bölgesi küçük bir ücrete tabi. Bkz. Azure DNS fiyatlandırması.

Nasıl yaparım? sanal ağın arkasında güvenliği sağlanan MySQL için Azure Veritabanı esnek bir sunucu veritabanına bağlanın.

MySQL için Azure Veritabanı esnek bir sunucu veritabanına bağlanmak için, kullanabileceğiniz araçlara ve ortamlara göre çeşitli yöntemler kullanabilirsiniz:

  • Komut satırı aracı erişimi:
    • mysql Temel erişim için uygulamanın SSH terminalinden komutunu kullanın.
  • Masaüstü araçları (örneğin, MySQL Workbench):
    • Azure CLI ile SSH tüneli kullanma:
      • Azure CLI kullanarak web uygulamasında bir SSH oturumu oluşturun.
      • Trafiği MySQL'e tünel olarak eklemek için SSH oturumunu kullanın.
    • Siteden siteye VPN'yi veya Azure VM'yi kullanma:
      • Makineniz sanal ağın parçası olmalıdır.
      • Aşağıdakileri kullanmayı göz önünde bulundurun:
  • Azure Cloud Shell tümleştirmesi:

Yerel uygulama geliştirme GitHub Actions ile nasıl çalışır?

App Service'ten otomatik olarak oluşturulan iş akışı dosyasını örnek olarak alın; her git push birinde yeni bir derleme ve dağıtım çalıştırması başlar. GitHub deposunun yerel bir kopyasından, istenen güncelleştirmelerin GitHub'a göndermesini sağlarsınız. Örneğin:

git add .
git commit -m "<some-message>"
git push origin main

GitHub Actions dağıtımı neden bu kadar yavaş?

App Service'ten otomatik olarak oluşturulan iş akışı dosyası, derleme ve sonra dağıtma, iki iş çalıştırmasını tanımlar. Her iş kendi temiz ortamında çalıştığından, iş akışı dosyası işin işten dosyalara erişmesini build sağlardeploy:

  • İşin sonunda build dosyaları yapıt olarak karşıya yükleyin.
  • İşin başında deploy yapıtları indirin.

İki işli işlem tarafından geçen sürenin çoğu yapıtları karşıya yüklemek ve indirmek için harcanmıştır. İsterseniz, iki işi tek bir işte birleştirerek iş akışı dosyasını basitleştirebilir ve bu sayede karşıya yükleme ve indirme adımları gereksinimi ortadan kalkar.

Özet

Bu öğreticide, şunların nasıl yapıldığını öğrendiniz:

  • Azure'da varsayılan olarak güvenli bir PHP ve MySQL için Azure Veritabanı esnek sunucu uygulaması oluşturma
  • Uygulama ayarlarını kullanarak esnek MySQL için Azure Veritabanı sunucuya bağlantı gizli dizilerini yapılandırma
  • GitHub Actions kullanarak uygulama kodunu dağıtma
  • Uygulamayı güncelleştirme ve yeniden dağıtma
  • Veritabanı geçişlerini güvenli bir şekilde çalıştırma
  • Azure’daki tanılama günlüklerinin akışını sağlama
  • Uygulamayı Azure portalında yönetme

Sonraki adımlar