البرنامج التعليمي: إنشاء PHP (Laravel) وAzure Database for MySQL - تطبيق الخادم المرن على Azure App Service

ينطبق على: قاعدة بيانات Azure لـMySQL - خادم مرن

توفر Azure App Service خدمة استضافة ويب قابلة للتطوير بدرجة كبيرة وذاتية التصحيح باستخدام نظام التشغيل Linux. يوضح هذا البرنامج التعليمي كيفية إنشاء تطبيق PHP آمن في خدمة تطبيق Azure المتصل بقاعدة بيانات MySQL (باستخدام قاعدة بيانات Azure لخادم MySQL المرن). عند الانتهاء، سيكون لديك تطبيق Laravel يعمل على Azure App Service في Linux.

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

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إنشاء تطبيق PHP وMySQL آمن بشكل افتراضي في Azure
  • تكوين أسرار الاتصال إلى MySQL باستخدام إعدادات التطبيق
  • توزيع التعليمات البرمجية للتطبيق باستخدام إجراءات GitHub
  • قم بتحديث التطبيق ثم أعد توزيعه
  • تشغيل عمليات ترحيل قاعدة البيانات بأمان
  • تدفق سجلات التشخيص من Azure
  • إدارة التطبيق في مدخل Azure

المتطلبات الأساسية

عينات التطبيقات

لمتابعة هذا البرنامج التعليمي، قم باستنساخ نموذج التطبيق أو تنزيله من المستودع:

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

إذا كنت تريد تشغيل التطبيق محليا، فقم بما يلي:

  • في .env، قم بتكوين إعدادات قاعدة البيانات (مثل DB_DATABASEو DB_USERNAMEو DB_PASSWORD) باستخدام الإعدادات في قاعدة بيانات Azure المحلية لقاعدة بيانات الخادم المرنة MySQL. تحتاج إلى مثيل خادم مرن ل Azure Database for MySQL لتشغيل هذا النموذج.

  • من جذر المستودع، ابدأ Laravel بالأوامر التالية:

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

1 - إنشاء App Service وموارد خادم مرنة ل Azure Database for MySQL

في هذه الخطوة، يمكنك إنشاء موارد Azure. تنشئ الخطوات المستخدمة في هذا البرنامج التعليمي تكوين خادم مرن لخدمة التطبيقات وقاعدة بيانات Azure ل MySQL آمن بشكل افتراضي. بالنسبة لعملية الإنشاء، ستحدد:

  • اسم تطبيق الويب. هو الاسم المستخدم كجزء من اسم DNS لتطبيق الويب الخاص بك في شكل https://<app-name>.azurewebsites.net.
  • وقت تشغيل التطبيق. إنه المكان الذي تحدد فيه إصدار PHP لاستخدامه لتطبيقك.
  • مجموعة الموارد للتطبيق. تتيح لك مجموعة الموارد تجميع (في حاوية منطقية) جميع موارد Azure المطلوبة للتطبيق.

سجّل الدخول إلى مدخل Azure واتبع هذه الخطوات لإنشاء مورد Azure App Service.

الإرشادات لقطه
في مدخل Microsoft Azure:
  1. أدخل "قاعدة بيانات تطبيق ويب" في شـريط البحث في أعلى مدخل Microsoft Azure.
  2. حدد العنصر المسمى تطبيق ويب + قاعدة بيانات ضمن عنوان Marketplace.
يمكنك أيضا الانتقال إلى معالج الإنشاء مباشرة.
A screenshot showing how to use the search box in the top tool bar to find the Web App + Database creation wizard.
في صفحة إنشاء تطبيق ويب + قاعدة بيانات، املأ النموذج كما يلي.
  1. مجموعة الموارد → حَدد إنشاء جديد واستخدم اسم msdocs-laravel-mysql-tutorial.

  2. المنطقة → أي منطقة Azure قريبة منك.

  3. الاسمmsdocs-laravel-mysql-XYZ حيث XYZ هو أي ثلاثة أحرف عشوائية. يجب أن يكون هذا الاسم فريدا عبر Azure.

  4. مكدس وقت التشغيلPHP 8.0.

    MySQL - يتم تحديد الخادم المرن لك بشكل افتراضي كمحرك قاعدة البيانات. قاعدة بيانات Azure لـ MySQL هي قاعدة بيانات MySQL مدارة بالكامل كخدمة على Azure، متوافقة مع أحدث إصدارات المجتمع.

  5. لاحظ اسم قاعدة البيانات الذي تم إنشاؤه لك (<app-name-database>). سوف تحتاجها لاحقًا.

  6. انقر فوق مراجعة + إنشاء.

وبعد اكتمال عملية التحقق، حدد إنشاء.
A screenshot showing how to configure a new app and database in the Web App + Database wizard.
يستغرق النشر بضع دقائق لإكماله، وينشئ الموارد التالية:
  • مجموعة الموارد → الحاوية لكافة الموارد التي تم إنشاؤها.
  • خطة خدمة التطبيق → تحدد موارد الحساب لخدمة التطبيق. يتم إنشاء خطة Linux في طبقة P1v2.
  • تمثل خدمة التطبيقات → تطبيقك وتعمل في خطة خدمة التطبيق.
  • الشبكة الظاهرية متكاملة مع تطبيق خدمة التطبيق وتعزل نسبة استخدام الشبكة الخلفية.
  • قاعدة بيانات Azure ل MySQL - خادم مرن → يمكن الوصول إليه فقط من الشبكة الظاهرية. يتم إنشاء قاعدة بيانات ومستخدم لك على الخادم.
  • تمكن → منطقة DNS الخاصة دقة DNS لخادم قاعدة بيانات MySQL في الشبكة الظاهرية.
بمجرد اكتمال التوزيع، انقر فوق الزر انتقال إلى المورد. يتم نقلك مباشرة إلى تطبيق خدمة التطبيق.
A screenshot showing the form to fill out to create a web app in Azure.

2 - إعداد اتصال قاعدة البيانات

قام معالج الإنشاء بإنشاء إعدادات التطبيق لاستخدامها للاتصال بقاعدة البيانات، ولكن ليس بتنسيق قابل للاستخدام للتعليمات البرمجية الخاصة بك حتى الآن. في هذه الخطوة، يمكنك تحرير إعدادات التطبيق وتحديثها بالتنسيق الذي يحتاجه تطبيقك.

الإرشادات لقطه
في صفحة خدمة التطبيق، في القائمة اليسرى، حدد تكوين. A screenshot showing how to open the configuration page in App Service.
في علامة التبويب إعدادات التطبيق في صفحة التكوين ، لكل من الإعدادات التالية، انقر فوق تحرير، وقم بتحديث حقل الاسم بقيم جديدة وانقر فوق موافق.
الاسم الحالي اسم جديد
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.
إنشاء إعداد قاعدة بيانات جديد MYSQL_ATTR_SSL_CA :
  1. انقر فوق إعداد تطبيق جديد.

  2. في حقل الاسم ، أدخل MYSQL_ATTR_SSL_CA.

  3. في حقل القيمة ، أدخل /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem.

    يشير إعداد التطبيق هذا إلى مسار شهادة TLS/SSL التي تحتاجها للوصول إلى خادم MySQL. يتم تضمينه في مستودع العينة للراحة.

  4. وانقر فوق موافق.

A screenshot showing how to create an app setting.
أنشئ إعدادات التطبيق الإضافية التالية باتباع الخطوات نفسها، ثم انقر فوق حفظ.
  • APP_DEBUG: استخدم صواب كقيمة. هذا متغير تصحيح أخطاء Laravel.

  • APP_KEY: استخدم base64:Dsz40HWbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= كقيمة. هذا متغير تشفير Laravel.

    هام

    يتم استخدام هذه APP_KEY القيمة هنا للراحة. بالنسبة لسيناريوهات الإنتاج، يجب إنشاؤه خصيصا للتوزيع الخاص بك باستخدام php artisan key:generate --show في سطر الأوامر.

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

3 - توزيع نموذج التعليمات البرمجية

في هذه الخطوة، ستقوم بتكوين توزيع GitHub باستخدام GitHub. إنها مجرد واحدة من العديد من الطرق للتوزيع في خدمة التطبيق، ولكنها أيضا طريقة رائعة للحصول على تكامل مستمر في عملية التوزيع الخاصة بك. بشكل افتراضي، git push كل إلى مستودع GitHub الخاص بك سيبدأ إجراء الإنشاء والتوزيع. ستقوم بإجراء بعض التغييرات على قاعدة التعليمات البرمجية الخاصة بك باستخدام التعليمة البرمجية Visual Studio مباشرة في المتصفح، ثم السماح لإجراءات GitHub بالتوزيع تلقائيا نيابة عنك.

الإرشادات لقطه
في نافذة متصفح جديدة:
  1. قم بتسجيل الدخول إلى حساب GitHub الخاص بك.

  2. الانتقال إلى https://github.com/Azure-Samples/laravel-tasks.

  3. انقر فوق نسخة المستودع.

  4. انقر فوق إنشاء نسخة المستودع.

A screenshot showing how to create a fork of the sample GitHub repository.
في صفحة GitHub، افتح تعليمة برمجية Visual Studio في المتصفح بالضغط على . المفتاح. A screenshot showing how to open the Visual Studio Code browser experience in GitHub.
في تعليمة برمجية Visual Studio في المتصفح افتح config/database.php في المستكشف. في mysql الاتصال، راجع أن إعدادات التطبيق التي قمت بإنشائها سابقا لاتصال MySQL مستخدمة بالفعل (DB_HOST، DB_DATABASE،، DB_USERNAMEDB_PASSWORD، ). MYSQL_ATTR_SSL_CA A screenshot showing Visual Studio Code in the browser and an opened file.
مرة أخرى في صفحة خدمة التطبيق، في القائمة اليسرى، حدد مركز التوزيع. A screenshot showing how to open the deployment center in App Service.
في صفحة Deployment Center:
  1. في المصدر، حدد GitHub. بشكل افتراضي، يتم تحديد إجراءات GitHub كموفر بناء.

  2. سجل الدخول إلى حساب GitHub واتبع المطالبة لتخويل Azure.

  3. في المؤسسة، حدد حسابك.

  4. في المستودع، حدد laravel-tasks.

  5. في الفرع، حدد رئيسي.

  6. في القائمة العلوية، انقر فوق حفظ.

تلتزم خدمة التطبيق بملف سير عمل في مستودع GitHub المحدد، في .github/workflows الدليل.
A screenshot showing how to configure CI/CD using GitHub Actions.
في صفحة Deployment Center:
  1. حدد "Logs". تم بالفعل بدء تشغيل التوزيع.

  2. في عنصر السجل لتشغيل التوزيع حدد سجلات التوزيع/البناء.

    يتم نقلك إلى مستودع GitHub الخاص بك وترى أن إجراء GitHub قيد التشغيل. يحدد ملف سير العمل مرحلتين منفصلتين، الإنشاء والتوزيع.

A screenshot showing how to open deployment logs in the deployment center.
لإجراء أي تغييرات على التعليمات البرمجية الخاصة بك، انتقل إلى Visual Studio Code في المستعرض:
  1. حدد ملحق البرنامج للتحكم بالمصادر.

  2. بجوار الملف الذي تم تغييره ، على سبيل المثال database.php، حدد + لتنظيم التغييرات.

  3. في مربع النص، اكتب رسالة تنفيذ، على سبيل المثال add certificate.

  4. حدد علامة الاختيار لتثبيتها ودفعها إلى GitHub.

إذا عدت إلى صفحة مركز التوزيع، فسترى إدخال سجل جديد لأنه تم بدء تشغيل آخر. انتظر حتى يكتمل التشغيل. يستغرق حوالي 15 دقيقة.

تلميح

يتم تعريف إجراء GitHub بواسطة الملف في مستودع GitHub الخاص بك، في .github/workflow. يمكنك جعله أسرع عن طريق تخصيص الملف.

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

4 - إنشاء مخطط قاعدة البيانات

يضع معالج الإنشاء مثيل خادم Azure Database for MySQL المرن خلف نقطة نهاية خاصة، بحيث يمكن الوصول إليها فقط من الشبكة الظاهرية. نظرا لأن تطبيق خدمة التطبيق متكامل بالفعل مع الشبكة الظاهرية، فإن أسهل طريقة لتشغيل عمليات ترحيل قاعدة البيانات مع قاعدة البيانات الخاصة بك هي مباشرة من داخل حاوية خدمة التطبيق.

الإرشادات لقطه
في صفحة App Service:
  1. من القائمة اليسرى، حدد SHH.

  2. حدد Go.

يتم فتح جلسة SSH مع حاوية خدمة التطبيق في المتصفح. إذا أردت، يمكنك الانتقال مباشرة إلى https://<app-name>.scm.azurewebsites.net/webssh/host بدلا من ذلك.
A screenshot showing how to open the SSH shell for your app from the Azure portal.
في محطة SSH الطرفية:
  1. قرص مضغوط إلى جذر التعليمات البرمجية للتطبيق الخاص بك:

    cd /home/site/wwwroot
    
  2. تشغيل عمليات ترحيل قاعدة البيانات من جذر التطبيق الخاص بك.

    php artisan migrate --force
    

    إشعار

    يمكن أن تستمر التغييرات التي يتم إجراؤها على الملفات في /home فقط بعد عمليات إعادة تشغيل التطبيق. التغييرات خارج /home غير مستمرة.

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

5 - تغيير جذر الموقع

تبدأ دورة حياة تطبيق Laravel في الدليل العام بدلاً من. تستخدم حاوية PHP 8.0 الافتراضية لخدمة التطبيقات Nginx، والتي تبدأ في الدليل الجذر للتطبيق. لتغيير جذر الموقع، تحتاج إلى تغيير ملف تكوين Nginx في حاوية PHP 8.0 (/etc/nginx/sites-available/default). لراحتك، يحتوي مستودع العينة على ملف تكوين مخصص يسمى افتراضي. كما هو ملاحظ سابقا، لا تريد استبدال هذا الملف باستخدام SSH shell، لأنه سيتم فقدان التغييرات الخاصة بك بعد إعادة تشغيل التطبيق.

الإرشادات لقطه
في صفحة App Service:
  1. من القائمة اليسرى، حدد تكوين.

  2. حدد علامة التبويب إعدادات عامة.

A screenshot showing how to open the general settings tab in the configuration page of App Service.
في علامة التبويب الإعدادات العامة:
  1. في مربع أمر بدء التشغيل، أدخل الأمر التالي: cp /home/site/wwwroot/default /etc/nginx/sites-available/default&service nginx reload.

    يحل محل ملف تكوين Nginx في حاوية PHP 8.0 ويعيد تشغيل Nginx. يضمن هذا التكوين إجراء هذا التغيير على الحاوية في كل مرة تبدأ فيها.

  2. حدد حفظ.

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

6 - تصفح إلى التطبيق

الإرشادات لقطه
في صفحة App Service:
  1. من القائمة اليسرى، حدد نظرة عامة.

  2. حدد عنوان URL لتطبيقك.

    يمكنك أيضًا الانتقال مباشرة إلىhttps://<app-name>.azurewebsites.net.

A screenshot showing how to launch an App Service from the Azure portal.
أضف بعض المهام إلى القائمة. تهانينا، أنت تقوم بتشغيل تطبيق PHP يستند إلى البيانات في خدمة تطبيق Azure. A screenshot of the Laravel app running in App Service.

7 - دفق سجلات التشخيص

الإرشادات لقطه
في صفحة App Service:
  1. من القائمة اليسرى، حدد تسجيلات خدمة التطبيق.

  2. ضمن سجل التطبيقات، حدد نظام الملفات.

A screenshot showing how to enable native logs in App Service in the Azure portal.
من القائمة اليسرى، انقر فوق دفق السجل. ترى سجلات تطبيقك، بما في ذلك سجلات النظام الأساسي والسجلات من داخل الحاوية. A screenshot showing how to view the log stream in the Azure portal.

تنظيف الموارد

عند الانتهاء، يمكنك حذف جميع الموارد من اشتراك Azure الخاص بك عن طريق حذف مجموعة الموارد.

الإرشادات لقطه
في شريط البحث أعلى مدخل Microsoft Azure:
  1. أدخل اسم مجموعة الموارد.

  2. حدد مجموعة الموارد.

A screenshot showing how to search for and navigate to a resource group in the Azure portal.
في جزء مجموعة الموارد، حدد Delete resource group. A screenshot showing the location of the Delete Resource Group button in the Azure portal.
  1. أدخل اسم مجموعة الموارد لتأكيد حذفك.

  2. انقر على حذف.

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

الأسئلة الشائعة

كم يكلف هذا الإعداد؟

أسعار موارد الإنشاء كما يلي:

  • يتم إنشاء خطة خدمة التطبيق في طبقة متميز V2 ويمكن توسيع نطاقها لأعلى أو لأسفل. راجع تسعير App Service.
  • يتم إنشاء مثيل خادم Azure Database for MySQL المرن في طبقة B1ms ويمكن توسيع نطاقه لأعلى أو لأسفل. مع حساب Azure المجاني، تكون طبقة B1ms مجانيا لمدة 12 شهرا، حتى الحدود الشهرية. راجع تسعير الخادم المرن ل Azure Database for MySQL.
  • لا تتحمل الشبكة الظاهرية رسوما ما لم تقم بتكوين وظائف إضافية، مثل التناظر. راجع أسعار شبكة Azure الظاهرية.
  • تتحمل منطقة DNS الخاصة رسوما صغيرة. راجع أسعار Azure DNS.

كيف أعمل الاتصال بقاعدة بيانات Azure لقاعدة بيانات خادم MySQL المرنة المؤمنة خلف شبكة ظاهرية؟

للاتصال بقاعدة بيانات Azure Database for MySQL المرنة، يمكنك استخدام عدة طرق استنادا إلى الأدوات والبيئات المتاحة لك:

  • الوصول إلى أداة سطر الأوامر:
    • mysql استخدم الأمر من محطة SSH الطرفية للتطبيق للوصول الأساسي.
  • أدوات سطح المكتب (على سبيل المثال، MySQL Workbench):
    • استخدام نفق SSH مع Azure CLI:
      • إنشاء جلسة SSH لتطبيق الويب باستخدام Azure CLI.
      • استخدم جلسة SSH لنفق نسبة استخدام الشبكة إلى MySQL.
    • استخدام VPN من موقع إلى موقع أو Azure VM:
      • يجب أن يكون جهازك جزءا من الشبكة الظاهرية.
      • ضع في اعتبارك استخدام:
        • جهاز Azure ظاهري مرتبط بإحدى الشبكات الفرعية.
        • جهاز في شبكة محلية لديه اتصال VPN من موقع إلى موقع بشبكة Azure الظاهرية.
  • تكامل Azure Cloud Shell:

كيف يعمل تطوير التطبيقات المحلية مع إجراءات GitHub؟

خذ ملف سير العمل الذي تم إنشاؤه تلقائيا من خدمة التطبيق كمثال، git push كل يبدأ تشغيل بنية وتوزيع جديد. من نسخة محلية من مستودع GitHub، يمكنك إجراء التحديثات المطلوبة دفعه إلى GitHub. على سبيل المثال:

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

لماذا توزيع إجراءات GitHub بطيء جدًا؟

يعرف ملف سير العمل الذي تم إنشاؤه تلقائيا من خدمة التطبيق البناء ثم التوزيع والتشغيل على وظيفتين. لأن كل مهمة تعمل في بيئتها النظيفة الخاصة، يضمن ملف سير العمل أن deploy الوظيفة لديها حق الوصول إلى الملفات من build الوظيفة:

يتم إنفاق معظم الوقت الذي تستغرقه العملية المكونة من وظيفتين في تحميل وتنزيل البيانات الاصطناعية. إذا أردت، يمكنك تبسيط ملف سير العمل عن طريق دمج الوظيفتين في واحدة، ما يلغي الحاجة إلى خطوات التحميل والتنزيل.

الملخص

في هذا البرنامج التعليمي، نتعلم طريقة القيام بما يأتي:

  • إنشاء تطبيق خادم مرن آمن بشكل افتراضي PHP وقاعدة بيانات Azure ل MySQL في Azure
  • تكوين أسرار الاتصال بقاعدة بيانات Azure لخادم MySQL المرن باستخدام إعدادات التطبيق
  • توزيع التعليمات البرمجية للتطبيق باستخدام إجراءات GitHub
  • قم بتحديث التطبيق ثم أعد توزيعه
  • تشغيل عمليات ترحيل قاعدة البيانات بأمان
  • تدفق سجلات التشخيص من Azure
  • إدارة التطبيق في مدخل Azure

الخطوات التالية