البرنامج التعليمي: إنشاء 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.
في هذا البرنامج التعليمي، تتعلم كيفية:
- إنشاء تطبيق PHP وMySQL آمن بشكل افتراضي في Azure
- تكوين أسرار الاتصال إلى MySQL باستخدام إعدادات التطبيق
- توزيع التعليمات البرمجية للتطبيق باستخدام إجراءات GitHub
- قم بتحديث التطبيق ثم أعد توزيعه
- تشغيل عمليات ترحيل قاعدة البيانات بأمان
- تدفق سجلات التشخيص من Azure
- إدارة التطبيق في مدخل Azure
المتطلبات الأساسية
- الاشتراك في Azure إذا لم تكن مشتركاً فيه، فأنشئ حساباً مجانيّاً على Azure قبل البدء. حاليا، باستخدام حساب Azure المجاني، يمكنك تجربة Azure Database for MySQL - Flexible Server مجانا لمدة 12 شهرا. لمزيد من المعلومات، راجع تجربة Azure Database for MySQL - Flexible Server مجانا.
عينات التطبيقات
لمتابعة هذا البرنامج التعليمي، قم باستنساخ نموذج التطبيق أو تنزيله من المستودع:
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:
|
|
في صفحة إنشاء تطبيق ويب + قاعدة بيانات، املأ النموذج كما يلي.
|
|
يستغرق النشر بضع دقائق لإكماله، وينشئ الموارد التالية:
|
2 - إعداد اتصال قاعدة البيانات
قام معالج الإنشاء بإنشاء إعدادات التطبيق لاستخدامها للاتصال بقاعدة البيانات، ولكن ليس بتنسيق قابل للاستخدام للتعليمات البرمجية الخاصة بك حتى الآن. في هذه الخطوة، يمكنك تحرير إعدادات التطبيق وتحديثها بالتنسيق الذي يحتاجه تطبيقك.
الإرشادات | لقطة شاشة | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
في صفحة خدمة التطبيق، في القائمة اليسرى، حدد تكوين. | |||||||||||
في علامة التبويب إعدادات التطبيق في صفحة التكوين ، لكل من الإعدادات التالية، انقر فوق تحرير، وقم بتحديث حقل الاسم بقيم جديدة وانقر فوق موافق.
|
|||||||||||
إنشاء إعداد قاعدة بيانات جديد MYSQL_ATTR_SSL_CA :
|
|||||||||||
أنشئ إعدادات التطبيق الإضافية التالية باتباع الخطوات نفسها، ثم انقر فوق حفظ.
|
3 - توزيع نموذج التعليمات البرمجية
في هذه الخطوة، ستقوم بتكوين توزيع GitHub باستخدام GitHub. إنها مجرد واحدة من العديد من الطرق للتوزيع في خدمة التطبيق، ولكنها أيضا طريقة رائعة للحصول على تكامل مستمر في عملية التوزيع الخاصة بك. بشكل افتراضي، git push
كل إلى مستودع GitHub الخاص بك سيبدأ إجراء الإنشاء والتوزيع. ستقوم بإجراء بعض التغييرات على قاعدة التعليمات البرمجية الخاصة بك باستخدام التعليمة البرمجية Visual Studio مباشرة في المتصفح، ثم السماح لإجراءات GitHub بالتوزيع تلقائيا نيابة عنك.
الإرشادات | لقطة شاشة |
---|---|
في نافذة متصفح جديدة:
|
|
في صفحة GitHub، افتح تعليمة برمجية Visual Studio في المتصفح بالضغط على . المفتاح. |
|
في تعليمة برمجية Visual Studio في المتصفح افتح config/database.php في المستكشف. في mysql الاتصال، راجع أن إعدادات التطبيق التي قمت بإنشائها سابقا لاتصال MySQL مستخدمة بالفعل (DB_HOST ، DB_DATABASE ،، DB_USERNAME DB_PASSWORD ، ). MYSQL_ATTR_SSL_CA |
|
مرة أخرى في صفحة خدمة التطبيق، في القائمة اليسرى، حدد مركز التوزيع. | |
في صفحة Deployment Center:
.github/workflows الدليل. |
|
في صفحة Deployment Center:
|
|
لإجراء أي تغييرات على التعليمات البرمجية الخاصة بك، انتقل إلى Visual Studio Code في المستعرض:
تلميح يتم تعريف إجراء GitHub بواسطة الملف في مستودع GitHub الخاص بك، في .github/workflow. يمكنك جعله أسرع عن طريق تخصيص الملف. |
4 - إنشاء مخطط قاعدة البيانات
يضع معالج الإنشاء مثيل خادم Azure Database for MySQL المرن خلف نقطة نهاية خاصة، بحيث يمكن الوصول إليها فقط من الشبكة الظاهرية. نظرا لأن تطبيق خدمة التطبيق متكامل بالفعل مع الشبكة الظاهرية، فإن أسهل طريقة لتشغيل عمليات ترحيل قاعدة البيانات مع قاعدة البيانات الخاصة بك هي مباشرة من داخل حاوية خدمة التطبيق.
الإرشادات | لقطة شاشة |
---|---|
في صفحة App Service:
https://<app-name>.scm.azurewebsites.net/webssh/host بدلا من ذلك. |
|
في محطة SSH الطرفية:
|
5 - تغيير جذر الموقع
تبدأ دورة حياة تطبيق Laravel في الدليل العام بدلاً من. تستخدم حاوية PHP 8.0 الافتراضية لخدمة التطبيقات Nginx، والتي تبدأ في الدليل الجذر للتطبيق. لتغيير جذر الموقع، تحتاج إلى تغيير ملف تكوين Nginx في حاوية PHP 8.0 (/etc/nginx/sites-available/default). لراحتك، يحتوي مستودع العينة على ملف تكوين مخصص يسمى افتراضي. كما هو ملاحظ سابقا، لا تريد استبدال هذا الملف باستخدام SSH shell، لأنه سيتم فقدان التغييرات الخاصة بك بعد إعادة تشغيل التطبيق.
6 - تصفح إلى التطبيق
7 - دفق سجلات التشخيص
تنظيف الموارد
عند الانتهاء، يمكنك حذف جميع الموارد من اشتراك Azure الخاص بك عن طريق حذف مجموعة الموارد.
الأسئلة الشائعة
- كم يكلف هذا الإعداد؟
- كيف أعمل الاتصال بقاعدة بيانات Azure لقاعدة بيانات خادم MySQL المرنة المؤمنة خلف شبكة ظاهرية؟
- كيف يعمل تطوير التطبيقات المحلية مع إجراءات GitHub؟
- لماذا توزيع إجراءات GitHub بطيء جدًا؟
كم يكلف هذا الإعداد؟
أسعار موارد الإنشاء كما يلي:
- يتم إنشاء خطة خدمة التطبيق في طبقة متميز 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 الظاهرية.
- استخدام نفق SSH مع Azure CLI:
- تكامل Azure Cloud Shell:
- دمج Azure Cloud Shell مع الشبكة الظاهرية للوصول المباشر.
كيف يعمل تطوير التطبيقات المحلية مع إجراءات GitHub؟
خذ ملف سير العمل الذي تم إنشاؤه تلقائيا من خدمة التطبيق كمثال، git push
كل يبدأ تشغيل بنية وتوزيع جديد. من نسخة محلية من مستودع GitHub، يمكنك إجراء التحديثات المطلوبة دفعه إلى GitHub. على سبيل المثال:
git add .
git commit -m "<some-message>"
git push origin main
لماذا توزيع إجراءات GitHub بطيء جدًا؟
يعرف ملف سير العمل الذي تم إنشاؤه تلقائيا من خدمة التطبيق البناء ثم التوزيع والتشغيل على وظيفتين. لأن كل مهمة تعمل في بيئتها النظيفة الخاصة، يضمن ملف سير العمل أن deploy
الوظيفة لديها حق الوصول إلى الملفات من build
الوظيفة:
- في نهاية المهمة
build
، قم بتحميل الملفات كقطع أثرية. - في بداية المهمة
deploy
، قم بتنزيل البيانات الاصطناعية.
يتم إنفاق معظم الوقت الذي تستغرقه العملية المكونة من وظيفتين في تحميل وتنزيل البيانات الاصطناعية. إذا أردت، يمكنك تبسيط ملف سير العمل عن طريق دمج الوظيفتين في واحدة، ما يلغي الحاجة إلى خطوات التحميل والتنزيل.
الملخص
في هذا البرنامج التعليمي، نتعلم طريقة القيام بما يأتي:
- إنشاء تطبيق خادم مرن آمن بشكل افتراضي PHP وقاعدة بيانات Azure ل MySQL في Azure
- تكوين أسرار الاتصال بقاعدة بيانات Azure لخادم MySQL المرن باستخدام إعدادات التطبيق
- توزيع التعليمات البرمجية للتطبيق باستخدام إجراءات GitHub
- قم بتحديث التطبيق ثم أعد توزيعه
- تشغيل عمليات ترحيل قاعدة البيانات بأمان
- تدفق سجلات التشخيص من Azure
- إدارة التطبيق في مدخل Azure