البرنامج التعليمي: إنشاء 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.

لقطة شاشة لمثال تطبيق Azure بعنوان قائمة المهام تظهر مهامًا جديدة مضافة.

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

  • إنشاء تطبيق 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.
يمكنك أيضا الانتقال إلى معالج الإنشاء مباشرة.
لقطة شاشة تعرض كيفية استخدام مربع البحث في شريط الأدوات العلوي للعثور على تطبيق الويب + معالج إنشاء قاعدة البيانات.
في صفحة إنشاء تطبيق ويب + قاعدة بيانات، املأ النموذج كما يلي.
  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. انقر فوق مراجعة + إنشاء.

وبعد اكتمال عملية التحقق، حدد إنشاء.
لقطة شاشة توضح كيفية تكوين تطبيق جديد وقاعدة بيانات جديدة في تطبيق الويب + معالج قاعدة البيانات.
يستغرق النشر بضع دقائق لإكماله، وينشئ الموارد التالية:
  • مجموعة الموارد → الحاوية لكافة الموارد التي تم إنشاؤها.
  • خطة خدمة التطبيق → تحدد موارد الحساب لخدمة التطبيق. يتم إنشاء خطة Linux في طبقة P1v2.
  • تمثل خدمة التطبيقات → تطبيقك وتعمل في خطة خدمة التطبيق.
  • الشبكة الظاهرية متكاملة مع تطبيق خدمة التطبيق وتعزل نسبة استخدام الشبكة الخلفية.
  • قاعدة بيانات Azure ل MySQL - خادم مرن → يمكن الوصول إليه فقط من الشبكة الظاهرية. يتم إنشاء قاعدة بيانات ومستخدم لك على الخادم.
  • تمكن → منطقة DNS الخاصة دقة DNS لخادم قاعدة بيانات MySQL في الشبكة الظاهرية.
بمجرد اكتمال التوزيع، انقر فوق الزر انتقال إلى المورد. يتم نقلك مباشرة إلى تطبيق خدمة التطبيق.
لقطة شاشة تعرض النموذج المراد تعبئته لإنشاء تطبيق ويب في Azure.

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

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

الإرشادات لقطة شاشة
في صفحة خدمة التطبيق، في القائمة اليسرى، حدد تكوين. لقطة شاشة توضح كيفية فتح صفحة التكوين في خدمة التطبيقات.
في علامة التبويب إعدادات التطبيق في صفحة التكوين ، لكل من الإعدادات التالية، انقر فوق تحرير، وقم بتحديث حقل الاسم بقيم جديدة وانقر فوق موافق.
الاسم الحالي اسم جديد
AZURE_MYSQL_DBNAME DB_DATABASE
AZURE_MYSQL_HOST DB_HOST
AZURE_MYSQL_USERNAME DB_USERNAME
AZURE_MYSQL_PASSWORD DB_PASSWORD
لقطة شاشة توضح كيفية رؤية سلسلة الاتصال المُنشأ تلقائيًا.
إنشاء إعداد قاعدة بيانات جديد MYSQL_ATTR_SSL_CA :
  1. انقر فوق إعداد تطبيق جديد.

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

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

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

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

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

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

    هام

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

لقطة شاشة تعرض جميع إعدادات التطبيق المطلوبة في صفحة التكوين

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

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

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

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

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

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

لقطة شاشة توضح كيفية إنشاء نسخة مستودع من نموذج مستودع GitHub.
في صفحة GitHub، افتح تعليمة برمجية Visual Studio في المتصفح بالضغط على . المفتاح. لقطة شاشة توضح كيفية فتح تجربة متصفح تعليمة برمجية Visual Studio في GitHub.
في تعليمة برمجية Visual Studio في المتصفح افتح config/database.php في المستكشف. في mysql الاتصال، راجع أن إعدادات التطبيق التي قمت بإنشائها سابقا لاتصال MySQL مستخدمة بالفعل (DB_HOST، DB_DATABASE،، DB_USERNAMEDB_PASSWORD، ). MYSQL_ATTR_SSL_CA لقطة شاشة تعرض تعليمة برمجية Visual Studio في المتصفح وملف مفتوح
مرة أخرى في صفحة خدمة التطبيق، في القائمة اليسرى، حدد مركز التوزيع. لقطة شاشة توضح كيفية فتح مركز التوزيع في خدمة التطبيقات.
في صفحة Deployment Center:
  1. في المصدر، حدد GitHub. بشكل افتراضي، يتم تحديد إجراءات GitHub كموفر بناء.

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

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

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

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

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

تلتزم خدمة التطبيق بملف سير عمل في مستودع GitHub المحدد، في .github/workflows الدليل.
لقطة شاشة توضح كيفية تكوين CI / CD باستخدام إجراءات GitHub.
في صفحة Deployment Center:
  1. حدد "Logs". تم بالفعل بدء تشغيل التوزيع.

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

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

لقطة شاشة توضح كيفية فتح سجلات التوزيع في مركز التوزيع.
لإجراء أي تغييرات على التعليمات البرمجية الخاصة بك، انتقل إلى Visual Studio Code في المستعرض:
  1. حدد ملحق البرنامج للتحكم بالمصادر.

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

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

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

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

تلميح

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

لقطة شاشة توضح كيفية تنفيذ التغييرات في تجربة متصفح تعليمة برمجية Visual Studio.

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

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

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

  2. حدد Go.

يتم فتح جلسة SSH مع حاوية خدمة التطبيق في المتصفح. إذا أردت، يمكنك الانتقال مباشرة إلى https://<app-name>.scm.azurewebsites.net/webssh/host بدلا من ذلك.
لقطة شاشة توضح كيفية فتح SSH shell لتطبيقك من مدخل Microsoft Azure.
في محطة SSH الطرفية:
  1. قرص مضغوط إلى جذر التعليمات البرمجية للتطبيق الخاص بك:

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

    php artisan migrate --force
    

    إشعار

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

لقطة شاشة توضح الأوامر التي يجب تشغيلها في SSH shell ومخرجاتها.

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

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

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

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

لقطة شاشة توضح علامة تبويب الإعدادات العامة كيفية فتح صفحة التكوين في خدمة التطبيقات.
في علامة التبويب الإعدادات العامة:
  1. في مربع أمر بدء التشغيل، أدخل الأمر التالي: cp /home/site/wwwroot/default /etc/nginx/sites-available/default&service nginx reload.

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

  2. حدد حفظ.

لقطة شاشة توضح كيفية تكوين أمر بدء التشغيل في خدمة التطبيقات.

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

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

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

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

لقطة شاشة توضح كيفية إطلاق خدمة التطبيق في مدخل Microsoft Azure
أضف بعض المهام إلى القائمة. تهانينا، أنت تقوم بتشغيل تطبيق PHP يستند إلى البيانات في خدمة تطبيق Azure. لقطة شاشة لتطبيق Laravel قيد التشغيل في خدمة التطبيقات.

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

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

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

لقطة شاشة توضح كيفية تمكين السجلات الأصلية في خدمة التطبيقات في مدخل Microsoft Azure.
من القائمة اليسرى، انقر فوق دفق السجل. ترى سجلات تطبيقك، بما في ذلك سجلات النظام الأساسي والسجلات من داخل الحاوية. لقطة شاشة توضح كيفية عرض تدفق السجل في مدخل Microsoft Azure.

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

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

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

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

لقطة شاشة توضح كيفية البحث عن مجموعة موارد والتنقل إليها في مدخل Microsoft Azure.
في جزء مجموعة الموارد، حدد Delete resource group. لقطة شاشة تعرض موقع زر حذف مجموعة الموارد في مدخل Microsoft Azure.
  1. أدخل اسم مجموعة الموارد لتأكيد حذفك.

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

لقطة شاشة لمربع حوار التأكيد لحذف مجموعة موارد في مدخل Microsoft Azure.

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

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

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

  • يتم إنشاء خطة خدمة التطبيق في طبقة متميز 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

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