Öğ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.

Eklenen yeni görevleri gösteren Görev Listesi başlıklı Azure uygulaması örneğinin ekran görüntüsü.

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.
Web Uygulaması + Veritabanı oluşturma sihirbazını bulmak için üst araç çubuğundaki arama kutusunun nasıl kullanılacağını gösteren ekran görüntüsü.
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.
Web Uygulaması + Veritabanı sihirbazında yeni bir uygulama ve veritabanını yapılandırmayı gösteren ekran görüntüsü.
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.
Azure'da web uygulaması oluşturmak için doldurulacak formu gösteren ekran görüntüsü.

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. App Service'te yapılandırma sayfasını açmayı gösteren ekran görüntüsü.
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
Otomatik oluşturulan bağlantı dizesi nasıl göreceğinizi gösteren ekran görüntüsü.
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.

Uygulama ayarının nasıl oluşturulacağını gösteren ekran görüntüsü.
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.

Yapılandırma sayfasındaki tüm gerekli uygulama ayarlarını gösteren ekran görüntüsü.

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.

Örnek GitHub deposunun çatalının nasıl oluşturulacağını gösteren ekran görüntüsü.
GitHub sayfasında, tuşa basarak tarayıcıda Visual Studio Code'ı . açın. GitHub'da Visual Studio Code tarayıcı deneyimini açmayı gösteren ekran görüntüsü.
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. Tarayıcıda Visual Studio Code'un ve açık bir dosyanın gösterildiği ekran görüntüsü.
App Service sayfasına geri dönün, soldaki menüde Dağıtım Merkezi'ni seçin. App Service'te dağıtım merkezini açmayı gösteren ekran görüntüsü.
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.
GitHub Actions kullanarak CI/CD'yi yapılandırmayı gösteren ekran görüntüsü.
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.

Dağıtım merkezinde dağıtım günlüklerini açmayı gösteren ekran görüntüsü.
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.

Visual Studio Code tarayıcı deneyiminde değişikliklerinizi işlemeyi gösteren ekran görüntüsü.

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.
Azure portalından uygulamanız için SSH kabuğunu açmayı gösteren ekran görüntüsü.
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.

SSH kabuğunda çalıştırılacak komutları ve bunların çıkışını gösteren ekran görüntüsü.

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.

App Service'in yapılandırma sayfasında genel ayarlar sekmesini açmayı gösteren ekran görüntüsü.
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.

App Service'te başlangıç komutunu yapılandırmayı gösteren ekran görüntüsü.

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.

Azure portalından App Service başlatmayı gösteren ekran görüntüsü.
Listeye birkaç görev ekleyin. Tebrikler, Azure Uygulaması Hizmeti'nde veri temelli bir PHP uygulaması çalıştırıyorsunuz. App Service'te çalışan Laravel uygulamasının ekran görüntüsü.

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.

Azure portalında App Service'te yerel günlükleri etkinleştirmeyi gösteren ekran görüntüsü.
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. Azure portalında günlük akışını görüntülemeyi gösteren ekran görüntüsü.

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.

Azure portalında kaynak grubu arama ve bu gruba gitme adımlarını gösteren ekran görüntüsü.
Kaynak grubu sayfasında Kaynak grubunu sil'e tıklayın. Azure portalında Kaynak Grubunu Sil düğmesinin konumunu gösteren ekran görüntüsü.
  1. Silme işleminizi onaylamak için kaynak grubu adını girin.

  2. Sil'e tıklayın.

Azure portalında kaynak grubunu silmeye yönelik onay iletişim kutusunun ekran görüntüsü.

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