Öğretici: Azure App Service'da PHP (Laravel) ve MySQL Esnek Sunucu uygulaması derleme

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

Azure App Service, 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 bağlı Azure App Service güvenli bir PHP uygulamasının nasıl oluşturulacağı gösterilmektedir (MySQL için Azure Veritabanı Esnek Sunucu kullanılarak). İşiniz bittiğinde, Linux üzerinde Azure App Service üzerinde çalışan bir Laravel uygulamanız olacak.

Yeni görevlerin eklendiğini gösteren Görev Listesi başlıklı Azure uygulaması örneğinin ekran görüntüsü.

Bu öğreticide şunların nasıl yapıldığı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 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 bir MySQL sunucusuna ihtiyacınız vardır.

  • 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 kaynakları oluşturma

Bu adımda Azure kaynaklarını oluşturursunuz. Bu öğreticide kullanılan adımlar, varsayılan olarak güvenli bir App Service ve MySQL için Azure Veritabanı - Esnek Sunucu yapılandırması oluşturur. 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 oturum açın ve Azure App Service kaynaklarınızı oluşturmak için bu adımları izleyin.

Yönergeler Ekran görüntüsü
Azure portalında:
  1. Azure portal üst kısmındaki arama çubuğuna "web uygulaması veritabanı" yazın.
  2. Market başlığı altında Web Uygulaması + Veritabanı etiketli öğeyi seçin.
Oluşturma sihirbazına doğrudan 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 GrubuYeni 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. admsdocs-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 varsayılan olarak veritabanı altyapısı olarak sizin için seçilir. MySQL için Azure Veritabanı, Azure'da hizmet olarak tam olarak yönetilen ve en son topluluk sürümleriyle uyumlu bir 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 uygulamayı 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ı sizin için veritabanına bir bağlantı dizesi oluşturdu, ancak henüz kodunuz için kullanılabilecek bir biçimde değil. Bu adımda, uygulamanızın ihtiyaç duyduğu biçime sahip uygulama ayarları oluşturursunuz.

Yönergeler Ekran görüntüsü
App Service sayfasının sol menüsünde Yapılandırma'yı seçin. yapılandırma sayfasının App Service'de nasıl açılıp açılmayacaklarını gösteren ekran görüntüsü.
Yapılandırma sayfasının Uygulama ayarları sekmesinde bir DB_DATABASE ayar oluşturun:
  1. Yeni uygulama ayarı'ne tıklayın.

  2. Ad alanına DB_DATABASE girin.

  3. Değer alanına, msdocs-docs-laravel-mysql-XYZ-database gibi görünen oluşturma sihirbazından otomatik olarak oluşturulan veritabanı adını girin.

  4. Tamam'a tıklayın.

Otomatik olarak oluşturulan bağlantı dizesini nasıl göreceğinizi gösteren ekran görüntüsü.
Uygulama ayarları sekmesine geri dönün:
  1. Ekranı en alta kaydırın ve defaultConnection bağlantı dizesini seçin. Oluşturma sihirbazı tarafından oluşturulmuştur ve ihtiyacınız olan kullanıcı adını ve parolayı içerir.

  2. Değer alanında Kopyala düğmesini seçin ve değeri daha sonra bir metin dosyasına yapıştırın. Şu biçimdedir (netlik için satır sonları):

    Database=mysql;
    Server=<database-server-domain-name>;
    User Id=<username>;
    Password=<password>
    
  3. İptal’i seçin.

Uygulama ayarının nasıl oluşturulacağını gösteren ekran görüntüsü.
Uygulama ayarı oluşturmak için aynı adımları izleyerek aşağıdaki ek uygulama ayarlarını oluşturun.
  • DB_HOST: Kopyalanan bağlantı dizesinden database-server-domain-name> değerini kullanın<.

  • DB_USERNAME: Değer olarak kopyalanan bağlantı dizesinden kullanıcı adını> kullanın<.

  • DB_PASSWORD: Kopyalanan bağlantı dizesinin parolasını> değer olarak kullanın<.

  • MYSQL_ATTR_SSL_CA: Değer olarak /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem kullanın.

    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.

  • 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 kolaylık sağlamak için burada 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ında gerekli tüm 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. Bu, App Service dağıtmak için kullanabileceğiniz birçok yöntemden 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 biri 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 ve GitHub Actions 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ızda oturum açın.

  2. https://github.com/Azure-Samples/laravel-tasks sayfasına gidin.

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

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

Örnek GitHub deposunun çatalını oluşturmayı 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ıdaki Visual Studio Code explorer'da config/database.php dosyasını açın. Bağlantıdamysql, MySQL bağlantısı için daha önce oluşturduğunuz uygulama ayarlarının zaten kullanıldığına bakın (DB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORD, ). MYSQL_ATTR_SSL_CA Tarayıcıda Visual Studio Code ve açık bir dosyayı gösteren ekran görüntüsü.
App Service sayfasının sol menüsünde Dağıtım Merkezi'ni seçin. App Service'da 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. Varsayılan olarak, derleme sağlayıcısı olarak GitHub Actions 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'dalaravel-tasks öğesini seçin.

  5. Dal'daana'yı seçin.

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

App Service, bir iş akışı dosyasını dizindeki seçili GitHub deposuna .github/workflows 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 Oluştur/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 gidin:
  1. Kaynak Denetimi uzantısını seçin.

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

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

  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ırmanın tamamlanmasını bekleyin. Yaklaşık 15 dakika sürer.

İpucu

GitHub eylemi, GitHub deponuzdaki .github/workflow dosyasında tanımlanır. Dosyayı özelleştirerek daha hızlı hale getirebilirsiniz.

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

4 - Veritabanı şeması oluşturma

Oluşturma sihirbazı, MySQL veritabanı sunucusunu özel bir uç noktanın arkasına yerleştirir, bu nedenle yalnızca sanal ağdan erişilebilir. App Service uygulaması sanal ağ ile zaten tümleştirilmiş 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.

App Service kapsayıcınızla bir SSH oturumu tarayıcıda açılır. İsterseniz doğrudan https://<app-name>.scm.azurewebsites.net/webssh/host adresine gidebilirsiniz.
uygulamanızın SSH kabuğunu Azure portal 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ğlaması için örnek depo varsayılan adlı özel bir yapılandırma dosyası içerir. Daha önce 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 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 yeniden yükleme.

    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 bu değişikliğin yapılmasını sağlar.

  2. Kaydet’i seçin.

App Service'da 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. Soldaki 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 bir App Service nasıl başlatıldığını gösteren ekran görüntüsü.
Listeye birkaç görev ekleyin. Tebrikler, Azure App Service'de veri temelli bir PHP uygulaması çalıştırıyorsunuz. App Service'de ç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. Soldaki 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 App Service yerel günlüklerin nasıl etkinleştirileceğine ilişkin ekran görüntüsü.
Soldaki 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 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 üst kısmındaki arama çubuğunda:
  1. Kaynak grubu adını girin.

  2. Kaynak grubunu seçin.

Azure portal bir 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 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 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:

Nasıl yaparım? diğer araçlarla sanal ağın arkasında güvenliği sağlanan MySQL veritabanına bağlanıyor musunuz?

  • Bir commmand-line aracından temel erişim için uygulamanın SSH terminalinden çalıştırabilirsiniz mysql .
  • MySQL Workbench gibi bir masaüstü aracından bağlanmak için makinenizin sanal ağ içinde olması gerekir. Örneğin, alt ağlardan birine bağlı bir Azure VM veya Azure sanal ağıyla siteden siteye VPN bağlantısı olan bir şirket içi ağda bulunan bir makine olabilir.
  • Ayrıca Azure Cloud Shell sanal ağ ile tümleştirebilirsiniz.

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

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

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

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

App Service'den otomatik olarak oluşturulan iş akışı dosyası, derleme ve 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şteki dosyalara erişmesini build sağlardeploy:

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

Özet

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

  • 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

Sonraki adımlar