إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذا الدرس، تقوم بنشر تطبيق ويب بايثون مدعوم بالبيانات إلى خدمة تطبيقات Azure باستخدام خدمة قاعدة بيانات Azure لقاعدة بيانات PostgreSQL العلائقية. تدعم Azure App Service Python في بيئة خادم Linux. تستخدم هذه المقالة تطبيق Flask . البدائل تشمل Django أو درس FastAPI.
في هذا البرنامج التعليمي، تتعلم كيفية:
- إنشاء بنية ذاكرة التخزين المؤقت ل App Service وPostgreSQL وRedis بشكل افتراضي آمن.
- تأمين أسرار الاتصال باستخدام هوية مدارة ومراجع Key Vault.
- نشر نموذج تطبيق Python إلى App Service من مستودع GitHub.
- الوصول إلى سلسلة الاتصال App Service وإعدادات التطبيق في التعليمات البرمجية للتطبيق.
- قم بإجراء التحديثات وإعادة توزيع التعليمات البرمجية للتطبيق.
- إنشاء مخطط قاعدة البيانات عن طريق تشغيل عمليات ترحيل قاعدة البيانات.
- دفق سجلات التشخيص من Azure.
- إدارة التطبيق في مدخل Microsoft Azure.
- توفير نفس البنية والنشر باستخدام Azure Developer CLI.
- تحسين سير عمل التطوير الخاص بك باستخدام GitHub Codespaces وGitHub Copilot.
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط. إذا لم يكن لديك حساب Azure، يمكنك إنشاء حساب مجانا.
- حساب GitHub. يمكنك أيضا الحصول على واحد مجانا.
- معرفة Python مع تطوير Flask.
- (اختياري) لتجربة GitHub Copilot، حساب GitHub Copilot. يتوفر إصدار تجريبي مجاني لمدة 30 يوما.
- حساب Azure مع اشتراك نشط. إذا لم يكن لديك حساب Azure، يمكنك إنشاء حساب مجانا.
- حساب GitHub. يمكنك أيضا الحصول على واحد مجانا.
- تم تثبيت Azure Developer CLI . يمكنك اتباع الخطوات باستخدام Azure Cloud Shell لأنه يحتوي بالفعل على Azure Developer CLI مثبت.
- معرفة Python مع تطوير Flask.
- (اختياري) لتجربة GitHub Copilot، حساب GitHub Copilot. يتوفر إصدار تجريبي مجاني لمدة 30 يوما.
تخطي إلى النهاية
إذا كنت تريد فقط رؤية التطبيق النموذجي في هذا الدرس يعمل على Azure، قم بتشغيل الأوامر التالية في Azure Cloud Shell، واتبع التعليم:
mkdir msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app
azd init --template msdocs-flask-postgresql-sample-app
azd up
تشغيل تطبيق العرض التوضيحي
كنقطة بداية، قم بإعداد تطبيق نموذجي قائم على البيانات. لراحتك، يتضمن مستودع العينات تكوين حاوية التطوير . حاوية التطوير تحتوي على كل ما تحتاجه لتطوير تطبيق. يشمل قاعدة البيانات، وذاكرة التخزين المؤقت، وجميع متغيرات البيئة التي يحتاجها التطبيق النموذجي. يمكن لحاوية التطوير العمل في فضاء كود GitHub، لذا يمكنك تشغيل العينة على أي جهاز كمبيوتر مزود بمتصفح ويب.
إشعار
إذا كنت تتابع هذا الدرس مع تطبيقك الخاص، اطلع على وصف الملفrequirements.txt في README.md لترى ما هي الحزم التي تحتاجها.
الخطوة 1: في نافذة متصفح جديدة:
- قم بتسجيل الدخول إلى حساب GitHub الخاص بك.
- الانتقال إلى https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app/fork.
- قم بإلغاء تحديد نسخ الفرع الرئيسي فقط. تريد جميع الفروع.
- حدد إنشاء نسخة المستودع.
الخطوة 2: في نسخة GitHub:
- حدد main>starter-no-infra لفرع البداية. يحتوي هذا الفرع فقط على مشروع نموذجي دون ملفات أو إعدادات متعلقة بالأزر.
- حدد Code. في تبويب كودسباس ، اختر إنشاء كود سبيحة على starter-no-infra.
تستغرق مساحة التعليمات البرمجية بضع دقائق لإعدادها. يعمل
pip install -r requirements.txtلمستودعك.
الخطوة 3: في الوحدة الطرفية لمساحة التعليمات البرمجية:
- تشغيل عمليات ترحيل قاعدة البيانات باستخدام
flask db upgrade. - شغّل التطبيق باستخدام
flask run. - عندما ترى الإعلام
Your application running on port 5000 is available.، حدد فتح في المستعرض. يجب أن تشاهد نموذج التطبيق في علامة تبويب مستعرض جديدة. لإيقاف التطبيق، اكتبCtrl+C.
تلميح
يمكنك أن تسأل GitHub Copilot عن هذا المستودع. على سبيل المثال:
- @workspace ماذا يفعل هذا المشروع؟
- @workspace ماذا يفعل المجلد .devcontainer؟
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
Create App Service و PostgreSQL
في هذا القسم، تقوم بإنشاء موارد Azure. ينشئ هذا الدرس مجموعة من الموارد الآمنة افتراضيا التي تشمل App Service وAzure Database ل PostgreSQL. بالنسبة لعملية الإنشاء، يمكنك تحديد:
- اسم تطبيق الويب. يتم استخدامه كجزء من اسم DNS لتطبيقك.
- المنطقة لتشغيل التطبيق فعليا في العالم. كما أنه جزء من اسم DNS لتطبيقك.
- مكدس وقت التشغيل للتطبيق. النسخة من بايثون التي تستخدمها في تطبيقك.
- خطة الاستضافة للتطبيق. مستوى التسعير الذي يشمل مجموعة الميزات وسعة التوسع لتطبيقك.
- مجموعة الموارد للتطبيق. تتيح لك مجموعة الموارد تجميع موارد Azure للتطبيق في حاوية منطقية.
سجل الدخول إلى مدخل Microsoft Azure واتبع هذه الخطوات لإنشاء موارد Azure App Service.
الخطوة 1: في مدخل Microsoft Azure:
- في أعلى بوابة Azure، ادخل قاعدة بيانات تطبيقات الويب في شريط البحث.
- تحت عنوان السوق ، اختر العنصر المسمى Web App + Database. يمكنك أيضا التنقل مباشرة إلى Create Web App .
الخطوة 2: في صفحة إنشاء تطبيق ويب + قاعدة بيانات ، املأ النموذج كما يلي.
- Resource Group: حدد Create new واستخدم اسم msdocs-flask-postgres-tutorial.
- المنطقة: أي منطقة Azure قريبة منك.
- الاسم: msdocs-python-postgres-XYZ.
- مكدس وقت التشغيل: بايثون 3.14.
- قاعدة البيانات: PostgreSQL - يتم تحديد الخادم المرن افتراضيا كمحرك قاعدة البيانات. يتم أيضا تعيين اسم الخادم واسم قاعدة البيانات بشكل افتراضي إلى القيم المناسبة.
- إضافة ذاكرة التخزين المؤقت Azure ل Redis؟: لا.
- خطة الاستضافة: أساسية. عندما تكون مستعدا، يمكنك التوسع إلى مستوى تسعير الإنتاج.
- حدد Review + create.
- بعد اكتمال التحقق من الصحة، حدد إنشاء.
الخطوة 3: يستغرق النشر بضع دقائق. بعد اكتمال التوزيع، حدد «Go to resource». النشر ينشئ الموارد التالية:
- مجموعة الموارد: الحاوية لكافة الموارد التي تم إنشاؤها.
- خطة App Service: تحدد موارد الحوسبة ل App Service. النشر يخلق خطة لينكس في المستوى الأساسي .
- App Service: تمثل تطبيقك وتعمل في خطة App Service.
- الشبكة الظاهرية: متكاملة مع تطبيق App Service وتعزل حركة مرور الشبكة الخلفية.
- واجهات الشبكة: تمثل عناوين IP الخاصة، واحدة لكل نقطة من نقاط النهاية الخاصة.
- خادم Azure Database for PostgreSQL المرن: يمكن الوصول إليه فقط من داخل الشبكة الظاهرية. يتم إنشاء قاعدة بيانات ومستخدم لك على الخادم.
- مناطق DNS الخاصة: تمكن دقة DNS لمخزن المفاتيح وخادم قاعدة البيانات في الشبكة الظاهرية.
أسرار الاتصال الآمن
عملية النشر تولد متغيرات الاتصال لك كإعدادات تطبيق. أفضل الممارسات الأمنية هي إبقاء الأسرار خارج خدمة التطبيقات تماما. انقل أسرارك إلى خزنة مفاتيح وغير إعداد التطبيق إلى مراجع خزنة المفاتيح بمساعدة موصلات الخدمة.
الخطوة 1: استرجاع سلسلة الاتصال الموجودة:
- في القائمة اليسرى من صفحة خدمة التطبيقات، اخترمتغيرات بيئة>.
- حدد AZURE_POSTGRESQL_CONNECTIONSTRING.
- في إعداد تطبيق الإضافة/التحرير، في حقل القيمة ، ابحث عن password= في نهاية السلسلة.
- انسخ سلسلة كلمة المرور بعد كلمة المرور= لاستخدامها لاحقا. يتيح لك إعداد التطبيق هذا الاتصال بقاعدة بيانات Postgres المؤمنة خلف نقطة نهاية خاصة. السر محفوظ مباشرة في تطبيق خدمة التطبيقات، وهذا ليس أفضل ممارسة. لاحقا، تغير هذا التكوين.
الخطوة 2: إنشاء خزنة مفاتيح لإدارة الأسرار بأمان:
- في شريط البحث العلوي، اكتب "key vault"، ثم حدد Marketplace>Key Vault.
- في Resource Group، حدد msdocs-python-postgres-tutorial.
- في اسم Key vault، اكتب اسما يتكون من أحرف وأرقام فقط.
- في Region، قم بتعيينه إلى نفس موقع مجموعة الموارد.
الخطوة 3: تأمين خزنة المفاتيح باستخدام نقطة نهاية خاصة:
- حدد Networking.
- إلغاء تحديد تمكين الوصول العام.
- حدد Create a private endpoint.
- في Resource Group، حدد msdocs-python-postgres-tutorial.
- في مربع الحوار، في الموقع، حدد نفس موقع تطبيق App Service.
- في Name، اكتب msdocs-python-postgres-XYZVaultEndpoint.
- في الشبكة الظاهرية، حدد msdocs-python-postgres-XYZVnet.
- في Subnet، اختر msdocs-python-postgres-XYZSubnet.
- حدد موافق.
- حدد Review + create، ثم حدد Create. انتظر حتى ينتهي نشر مخزن المفاتيح. يجب أن ترى أن نشرك قد اكتمل.
الخطوة 4: تكوين موصل PostgreSQL:
- في شريط البحث العلوي، اكتب msdocs-python-postgres، ثم حدد مورد App Service المسمى msdocs-python-postgres-XYZ.
- في صفحة خدمة التطبيقات، في القائمة اليسرى، اختر موصل خدمة الإعدادات>. هناك بالفعل موصل أنشأته عملية النشر لك.
- حدد خانة الاختيار بجوار موصل PostgreSQL، ثم حدد تحرير.
- في Client type، حدد Django. على الرغم من أن لديك تطبيق Flask، فإن نوع عميل Django في موصل خدمة PostgreSQL يمنحك متغيرات قاعدة البيانات في إعدادات منفصلة بدلا من سلسلة اتصال واحدة. المتغيرات المنفصلة أسهل بالنسبة لك لاستخدامها في التعليمات البرمجية للتطبيق الخاص بك، والتي تستخدم SQLAlchemy للاتصال بقاعدة البيانات.
- حدد المصادقة.
- في كلمة المرور، الصق كلمة المرور التي نسختها سابقا.
- حدد مخزن البيانات السرية في Key Vault.
- ضمن Key Vault Connection، حدد Create new. يفتح حوار إنشاء اتصال فوق مربع حوار التعديل.
الخطوة 5: إنشاء اتصال خزنة المفاتيح:
- في مربع الحوار Create connection لاتصال Key Vault، في Key Vault، حدد key vault الذي أنشأته سابقا.
- حدد Review + Create.
- عند اكتمال التحقق من الصحة، حدد إنشاء.
الخطوة 6: أنهي إعدادات موصل PostgreSQL:
- لقد عدت إلى مربع حوار التحرير ل defaultConnector. في علامة التبويب Authentication ، انتظر حتى يتم إنشاء موصل key vault. عند الانتهاء من الإنشائ، يقوم منسدلي اتصال خزنة المفاتيح بتحديده تلقائيا.
- حدد Next: Networking.
- حدد حفظ. انتظر حتى يظهر إعلام نجاح التحديث .
الخطوة 7: تحقق من تكامل Key Vault
- من القائمة اليسرى، اخترمتغيرات> البيئة مرة أخرى.
- بجوار AZURE_POSTGRESQL_PASSWORD، حدد Show value. يجب أن تكون
@Microsoft.KeyVault(...)القيمة ، مما يعني أنها مرجع لخزنة المفاتيح. السر الآن يدار في خزنة المفاتيح.
للتلخيص، تتضمن عملية تأمين أسرار الاتصال الخاصة بك ما يلي:
- استرداد أسرار الاتصال من متغيرات البيئة لتطبيق App Service.
- إنشاء مفتاح رئيسي.
- إنشاء اتصال Key Vault بالهوية المدارة المعينة من قبل النظام.
- تحديث موصلات الخدمة لتخزين الأسرار في مخزن المفاتيح.
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
نشر نموذج الكود
في هذا القسم، تقوم بتكوين نشر GitHub باستخدام GitHub Actions. إنها واحدة من العديد من الطرق لنشر التطبيق في خدمة التطبيقات. إنها طريقة رائعة للحصول على تكامل مستمر في عملية النشر الخاصة بك. بشكل افتراضي، git push كل إلى مستودع GitHub الخاص بك تبدأ إجراء الإنشاء والتوزيع.
الخطوة 1: في القائمة اليسرى، حدد Deployment>Deployment Center.
الخطوة 2: في صفحة مركز النشر :
- في المصدر، حدد GitHub. بشكل افتراضي، يتم تحديد GitHub Actions كموفر بناء.
- سجل الدخول إلى حساب GitHub واتبع المطالبة لتخويل Azure.
- في المؤسسة، حدد حسابك.
- في Repository، حدد msdocs-flask-postgresql-sample-app.
- في Branch، حدد starter-no-infra. هذا الفرع هو نفس الفرع الذي عملت فيه مع تطبيق نموذجي، بدون أي ملفات أو إعدادات متعلقة ب Azure.
- بالنسبة لنوع المصادقة، حدد الهوية المعينة من قبل المستخدم.
- في القائمة العلوية، حدد Save.
تقوم خدمة التطبيقات بإرسال ملف سير عمل إلى مستودع GitHub المختار، في
.github/workflowsالدليل. بشكل افتراضي، ينشئ مركز التوزيع هوية معينة من قبل المستخدم لسير العمل للمصادقة باستخدام Microsoft Entra (مصادقة OIDC). لخيارات المصادقة الأخرى، راجع النشر على خدمة التطبيقات باستخدام GitHub Actions.
الخطوة 3: مرة أخرى في مساحة التعليمات البرمجية GitHub من نسخة المستودع الخاصة بك، قم بتشغيل git pull origin starter-no-infra.
هذا الأمر يسحب ملف سير العمل الجديد إلى مساحة الشيفرة الخاصة بك.
الخطوة 4 (الخيار 1: مع GitHub Copilot):
- ابدأ جلسة دردشة جديدة باختيار عرض الدردشة ، ثم اختر +.
- اسأل، @workspace كيف يتصل التطبيق بقاعدة البيانات؟ قد يشرح لك Copilot بعض التفاصيل
SQLAlchemy، مثل كيفية تكوين رابط الاتصال الخاص به في azureproject/development.py و azureproject/production.py. - اسأل @workspace في وضع الإنتاج، يعمل تطبيقي في تطبيق ويب App Service، يستخدم Azure Service Connector للاتصال بخادم مرن PostgreSQL باستخدام نوع عميل Django. ما هي أسماء متغيرات البيئة التي أحتاج لاستخدامها؟ قد يعطيك Copilot اقتراحا مشابها لما في الخيار الثاني: بدون خطوات Copilot في GitHub ويطلب منك إجراء التغيير في ملف azureproject/production.py .
- افتح azureproject/production.py في المستكشف وأضف اقتراح التعليمات البرمجية. GitHub Copilot لا يعطيك نفس الرد في كل مرة. الردود ليست دائما صحيحة. قد تحتاج إلى طرح المزيد من الأسئلة لضبط استجابتها. للحصول على نصائح، راجع ماذا يمكنني أن أفعل باستخدام GitHub Copilot في مساحة الشيفرة الخاصة بي؟
الخطوة 4 (الخيار 2: بدون GitHub Copilot):
- افتح azureproject/production.py في المستكشف.
- ابحث عن التعليمات البرمجية التي تم التعليق عليها (الأسطر 3-8) وقم بإلغاء التعليق عليها.
هذا التغيير ينشئ سلسلة اتصال ل SQLAlchemy باستخدام
AZURE_POSTGRESQL_USER،AZURE_POSTGRESQL_PASSWORD،AZURE_POSTGRESQL_HOST، وAZURE_POSTGRESQL_NAME.
الخطوة 5:
- حدد ملحق التحكم بالمصادر .
- في مربع النص، اكتب رسالة تثبيت مثل
Configure Azure database connection. أو حدد
واسمح ل GitHub Copilot بإنشاء رسالة تثبيت لك. - حدد Commit، ثم قم بالتأكيد باستخدام Yes.
- حدد مزامنة التغييرات 1، ثم تأكد من موافق.
الخطوة 6: مرة أخرى في صفحة Deployment Center في مدخل Microsoft Azure:
- اختر السجلات، ثم اختر التحديث لرؤية تشغيل النشر الجديد.
- في عنصر السجل لتشغيل النشر، حدد إدخال Build/Deploy Logs مع أحدث طابع زمني.
الخطوة 7: يتم نقلك إلى مستودع GitHub الخاص بك. إجراء GitHub يعمل. ملف سير العمل يحدد مرحلتين منفصلتين، البناءوالنشر. انتظر حتى يتم تشغيل GitHub لإظهار حالة Success. يستغرق حوالي 5 دقائق.
هل تواجه مشكلات؟ تحقق من دليل استكشاف الأخطاء وإصلاحها.
توليد مخطط قاعدة البيانات
مع قاعدة بيانات PostgreSQL المحمية بواسطة الشبكة الظاهرية، أسهل طريقة لتشغيل عمليات ترحيل قاعدة بيانات Flask هي في جلسة SSH مع حاوية Linux في App Service.
الخطوة 1: في صفحة خدمة التطبيقات ، في القائمة اليسرى،
- حدد Development Tools>SSH.
- حدد Go.
الخطوة 2: في جلسة SSH، قم بتشغيل flask db upgrade. إذا نجحت، فإن App Service تتصل بنجاح بقاعدة البيانات.
تلميح
في جلسة SSH، يمكن أن تستمر التغييرات على الملفات في /home فقط بعد إعادة تشغيل التطبيق. التغييرات خارج /home غير مستمرة.
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
استعرض التطبيق
الخطوة 1: في صفحة خدمة التطبيقات :
- من القائمة اليسرى، حدد Overview.
- حدد عنوان URL لتطبيقك.
الخطوة 2: أضف بعض المطاعم إلى القائمة. تهانينا، أنت تقوم بتشغيل تطبيق ويب في Azure App Service، مع اتصال آمن بقاعدة بيانات Azure ل PostgreSQL.
دفق سجلات التشخيص
تسجل Azure App Service جميع سجلات وحدة التحكم لمساعدتك في تشخيص المشكلات المتعلقة بتطبيقك. يتضمن print() التطبيق النموذجي عبارات لتوضيح هذه القدرة كما هو موضح هنا.
@app.route('/', methods=['GET'])
def index():
print('Request for index page received')
restaurants = Restaurant.query.all()
return render_template('index.html', restaurants=restaurants)
الخطوة 1: في صفحة خدمة التطبيقات :
- من القائمة اليسرى، حدد Monitoring>App Service logs.
- ضمن تسجيل التطبيق، حدد نظام الملفات.
- في القائمة العلوية، حدد Save.
الخطوة 2: من القائمة اليسرى، حدد Log stream. ترى سجلات تطبيقك، بما في ذلك سجلات النظام الأساسي والسجلات من داخل الحاوية.
لمعرفة المزيد عن تسجيل الدخول إلى تطبيقات بايثون، راجع إعداد Azure Monitor لتطبيق بايثون الخاص بك.
تنظيف الموارد
عند الانتهاء، يمكنك حذف جميع الموارد من اشتراك Azure الخاص بك عن طريق حذف مجموعة الموارد.
الخطوة 1: في شريط البحث أعلى مدخل Microsoft Azure:
- أدخل اسم مجموعة الموارد.
- حدد مجموعة الموارد.
الخطوة 2: في صفحة مجموعة الموارد، حدد حذف مجموعة الموارد.
الخطوة 3:
- لتأكيد الحذف، أدخل اسم مجموعة الموارد.
- حدد حذف.
- قم بالتأكيد باستخدام الحذف مرة أخرى.
إنشاء موارد Azure ونشر تطبيق نموذجي
في هذه الخطوة، يمكنك إنشاء موارد Azure ونشر نموذج تطبيق إلى App Service على Linux. تنشئ الخطوات المستخدمة في هذا البرنامج التعليمي مجموعة من الموارد الآمنة بشكل افتراضي التي تتضمن خدمة التطبيقات وقاعدة بيانات Azure ل PostgreSQL.
تحتوي حاوية التطوير بالفعل على Azure Developer CLI (AZD).
من جذر المستودع، قم بتشغيل
azd init.azd init --template python-app-service-postgresql-infraعند المطالبة، قدم الإجابات التالية:
السؤال الإجابة الدليل الحالي ليس فارغا. هل ترغب في تهيئة مشروع هنا في "<دليلك>"؟ السنة ماذا تريد أن تفعل بهذه الملفات؟ الاحتفاظ بالملفات الموجودة دون تغيير أدخل اسم بيئة جديدة اكتب اسم فريد. يستخدم قالب AZD هذا الاسم كجزء من اسم DNS لتطبيق الويب الخاص بك في Azure ( <app-name>-<hash>.azurewebsites.net). يسمح بالأحرف الأبجدية الرقمية والواصلات.سجل الدخول إلى Azure عن طريق تشغيل
azd auth loginالأمر واتباع المطالبة:azd auth loginإنشاء موارد Azure الضرورية باستخدام
azd provisionالأمر . اتبع المطالبة لتحديد الاشتراك والموقع المطلوبين لموارد Azure.azd provisionيستغرق الأمر
azd provisionحوالي 15 دقيقة لإتمامه. ذاكرة Redis الاحتياطية تستغرق أكبر وقت ممكن. لاحقا، عدل الكود الخاص بك ليعمل مع App Service وقم بنشر التغييرات باستخدامazd deploy. أثناء التشغيل، يوفر الأمر رسائل حول عملية التوفير والنشر، بما في ذلك رابط للنشر في أزور.يحتوي قالب AZD هذا على ملفات (azure.yaml والدليل infra ) التي تنشئ بنية آمنة بشكل افتراضي مع موارد Azure التالية:
- مجموعة الموارد: الحاوية لكافة الموارد التي تم إنشاؤها.
- خطة App Service: تحدد موارد الحوسبة ل App Service. يقوم بإنشاء خطة لينكس في المستوى الأساسي .
- App Service: تمثل تطبيقك وتعمل في خطة App Service.
- الشبكة الظاهرية: متكاملة مع تطبيق App Service وتعزل حركة مرور الشبكة الخلفية.
- نقاط النهاية الخاصة: الوصول إلى نقاط النهاية لمخزن المفاتيح وذاكرة التخزين المؤقت Redis في الشبكة الظاهرية.
- واجهات الشبكة: تمثل عناوين IP الخاصة، واحدة لكل نقطة من نقاط النهاية الخاصة.
- قاعدة بيانات Azure لخادم PostgreSQL المرن: يمكن الوصول إليها فقط من خلال الشبكة الافتراضية. يتم إنشاء قاعدة بيانات ومستخدم لك على الخادم.
- منطقة DNS الخاصة: تمكن دقة DNS لخادم PostgreSQL في الشبكة الظاهرية.
- مساحة عمل Log Analytics: تعمل كحاوية مستهدفة لتطبيقك لشحن سجلاته، حيث يمكنك أيضا الاستعلام عن السجلات.
- ذاكرة التخزين المؤقت Azure ل Redis: يمكن الوصول إليها فقط من خلف نقطة النهاية الخاصة بها.
- Key vault: يمكن الوصول إليه فقط من خلف نقطة النهاية الخاصة به. يستخدم لإدارة البيانات السرية لتطبيق App Service.
بعد أن ينتهي الأمر من إنشاء الموارد ونشر كود التطبيق لأول مرة، لا يعمل التطبيق النموذجي المنشور بعد. يجب عليك إجراء تغييرات صغيرة لجعلها متصلة بقاعدة البيانات في Azure.
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
استخدم سلسلة اتصال قاعدة البيانات
قالب AZD الذي تستخدمه يولد متغيرات الاتصال الخاصة بك بالفعل كإعدادات تطبيق. يقوم بإخراجها إلى المحطة. تعد إعدادات التطبيق إحدى الطرق للحفاظ على أسرار الاتصال خارج مستودع التعليمات البرمجية.
في إخراج AZD، ابحث عن الإعدادات
AZURE_POSTGRESQL_USERوAZURE_POSTGRESQL_PASSWORDAZURE_POSTGRESQL_HOSTو و.AZURE_POSTGRESQL_NAMEللحفاظ على البيانات السرية آمنة، يتم عرض أسماء الإعدادات فقط. تبدو كما يلي في إخراج AZD:App Service app has the following connection settings: - AZURE_POSTGRESQL_NAME - AZURE_POSTGRESQL_HOST - AZURE_POSTGRESQL_USER - AZURE_POSTGRESQL_PASSWORD - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPEلراحتك، يعرض لك قالب AZD الارتباط المباشر إلى صفحة إعدادات التطبيق. ابحث عن الارتباط وافتحه في علامة تبويب مستعرض جديدة.
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
تعديل كود العينة وإعادة النشر
في كود GitHub، ابدأ جلسة دردشة جديدة باختيار عرض الدردشة ، ثم اختر +.
اسأل، @workspace كيف يتصل التطبيق بقاعدة البيانات؟ قد يشرح لك Copilot بعض التفاصيل
SQLAlchemy، مثل كيفية تكوين رابط الاتصال الخاص به في azureproject/development.py و azureproject/production.py.اسأل @workspace في وضع الإنتاج، يعمل تطبيقي في تطبيق ويب App Service، يستخدم Azure Service Connector للاتصال بخادم مرن PostgreSQL باستخدام نوع عميل Django. ما هي أسماء متغيرات البيئة التي أحتاج لاستخدامها؟ قد يعطيك Copilot اقتراحا مشابها لما في الخيار الثاني: بدون خطوات Copilot في GitHub ويطلب منك إجراء التغيير في ملف azureproject/production.py .
افتح azureproject/production.py في المستكشف وأضف اقتراح التعليمات البرمجية.
GitHub Copilot لا يعطيك نفس الرد في كل مرة. الردود ليست دائما صحيحة. قد تحتاج إلى طرح المزيد من الأسئلة لضبط استجابتها. للحصول على تلميحات، راجع ما الذي يمكنني فعله باستخدام GitHub Copilot في مساحة التعليمات البرمجية الخاصة بي؟.
في المحطة الطرفية، قم بتشغيل
azd deploy.azd deploy
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
توليد مخطط قاعدة البيانات
مع قاعدة بيانات PostgreSQL المحمية بواسطة الشبكة الظاهرية، أسهل طريقة لتشغيل عمليات ترحيل قاعدة بيانات Flask هي في جلسة SSH مع حاوية Linux في App Service.
في إخراج AZD، ابحث عن عنوان URL لجلسة SSH وانتقل إليه في المتصفح. يبدو مثل هذا في الإخراج:
Open SSH session to App Service container at: <URL>في جلسة SSH، قم بتشغيل
flask db upgrade. إذا نجحت، فإن App Service تتصل بنجاح بقاعدة البيانات.إشعار
يمكن أن تستمر التغييرات التي يتم إجراؤها على الملفات في
/homeفقط بعد عمليات إعادة تشغيل التطبيق. التغييرات خارج/homeغير مستمرة.
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
استعرض التطبيق
في إخراج AZD، ابحث عن عنوان URL لتطبيقك وانتقل إليه في المستعرض. يبدو عنوان URL كما يلي في إخراج AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>أضف بعض المطاعم إلى القائمة.
مبروك! أنت تشغل تطبيق ويب في Azure App Service، مع اتصال آمن ب Azure Database for PostgreSQL.
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
دفق سجلات التشخيص
يمكن ل Azure App Service التقاط سجلات وحدة التحكم لمساعدتك في تشخيص المشكلات مع التطبيق الخاص بك. قالب AZD يتيح بالفعل تسجيل الدخول إلى نظام الملفات المحليويشحن السجلات إلى مساحة عمل تحليلات السجلات.
يتضمن print() نموذج التطبيق عبارات لإثبات هذه الإمكانية، كما هو موضح في القصاصة البرمجية التالية.
@app.route('/', methods=['GET'])
def index():
print('Request for index page received')
restaurants = Restaurant.query.all()
return render_template('index.html', restaurants=restaurants)
في إخراج AZD، ابحث عن الارتباط لدفق سجلات App Service وانتقل إليه في المتصفح.
تعرف على المزيد حول تسجيل الدخول إلى تطبيقات Python في سلسلة إعداد Azure Monitor لتطبيق Python الخاص بك.
هل تواجه مشكلات؟ تحقق من قسم استكشاف الأخطاء وإصلاحها.
تنظيف الموارد
لحذف كافة موارد Azure في بيئة النشر الحالية، قم بتشغيل azd down المطالبات واتبعها.
azd down
استكشاف الأخطاء وإصلاحها
إليك بعض المشكلات التي قد تواجهها أثناء محاولتك العمل على هذا الدرس وخطوات لحلها.
لا يمكنني الاتصال بجلسة SSH
إذا لم تستطع الاتصال بجلسة SSH، فهذا يعني أن التطبيق نفسه فشل في التشغيل. تحقق من سجلات التشخيص للحصول على التفاصيل. على سبيل المثال، إذا رأيت خطأ مثل KeyError: 'AZURE_POSTGRESQL_HOST'، فقد يعني ذلك أن متغير البيئة مفقود. ربما أزلت إعداد التطبيق.
أتلقى خطأ عند تشغيل عمليات ترحيل قاعدة البيانات
إذا واجهت أي أخطاء تتعلق بالاتصال بقاعدة البيانات، فتحقق مما إذا كانت إعدادات التطبيق (AZURE_POSTGRESQL_USERو AZURE_POSTGRESQL_PASSWORDAZURE_POSTGRESQL_HOSTو وAZURE_POSTGRESQL_NAME) قد تم تغييرها أو حذفها. بدون هذا سلسلة الاتصال، لا يمكن لأمر الترحيل الاتصال بقاعدة البيانات.
الأسئلة الشائعة
- ما تكلفة هذا الإعداد؟
- كيف يمكنني الاتصال بخادم PostgreSQL المؤمن خلف الشبكة الظاهرية باستخدام أدوات أخرى؟
- كيف يعمل تطوير التطبيقات المحلية مع GitHub Actions؟
- كيف يمكنني تصحيح الأخطاء أثناء نشر إجراءات GitHub؟
- ليس لدي أذونات لإنشاء هوية معينة من قبل المستخدم
- ماذا يمكنني أن أفعل مع GitHub Copilot في مساحة التعليمات البرمجية الخاصة بي؟
كم يكلف هذا الإعداد؟
تسعير الموارد التي تم إنشاؤها كما يلي:
- يتم إنشاء خطة App Service في المستوى الأساسي ويمكن توسيع نطاقها لأعلى أو لأسفل. راجع أسعار App Service.
- يتم إنشاء خادم PostgreSQL المرن في أدنى مستوى قابل للاندفاع Standard_B1ms، مع الحد الأدنى لحجم التخزين، والذي يمكن تحجيمه لأعلى أو لأسفل. راجع قاعدة بيانات Azure لتسعير PostgreSQL.
- لا تتحمل الشبكة الظاهرية رسوما ما لم تقم بتكوين وظائف إضافية، مثل التناظر. راجع تسعير شبكة Azure الظاهرية.
- تتحمل منطقة DNS الخاصة رسوما صغيرة. راجع تسعير Azure DNS.
كيف أعمل الاتصال بخادم PostgreSQL المؤمن خلف الشبكة الظاهرية باستخدام أدوات أخرى؟
- للوصول الأساسي من أداة سطر الأوامر، يمكنك التشغيل
psqlمن جلسة SSH للتطبيق. - للاتصال من أداة سطح المكتب، يجب أن يكون جهاز الكمبيوتر الخاص بك في الشبكة الافتراضية. على سبيل المثال، قد يكون جهاز افتراضي في Azure متصل بإحدى الشبكات الفرعية أو جهاز كمبيوتر في شبكة داخلية لديه اتصال VPN من موقع إلى موقع مع شبكة Azure الافتراضية.
- يمكنك أيضا دمج Azure Cloud Shell مع الشبكة الظاهرية.
كيف يعمل تطوير التطبيقات المحلية مع إجراءات GitHub؟
على سبيل المثال، ملف سير العمل المولد تلقائيا من App Service، كل ملف git push يبدأ عملية بناء ونشر جديدة. من نسخة محلية من مستودع GitHub، يمكنك إجراء التحديثات المطلوبة ودفعها إلى GitHub. على سبيل المثال:
git add .
git commit -m "<some-message>"
git push origin main
كيف أعمل أخطاء تصحيح الأخطاء أثناء نشر إجراءات GitHub؟
إذا فشلت خطوة في ملف سير عمل GitHub الذي تم إنشاؤه تلقائيا، فحاول تعديل الأمر الفاشل لإنشاء المزيد من الإخراج المطول. على سبيل المثال، يمكنك الحصول على إخراج مطول من الأمر python بإضافة الخيار -d . قم بتثبيت التغييرات ودفعها لتشغيل توزيع آخر إلى App Service.
ليس لدي أذونات لإنشاء هوية معينة من قبل المستخدم
راجع إعداد نشر إجراءات GitHub من مركز النشر.
ماذا يمكنني أن أفعل مع GitHub Copilot في مساحة التعليمات البرمجية الخاصة بي؟
قد تلاحظ أن طريقة عرض دردشة GitHub Copilot كانت موجودة بالفعل لك عند إنشاء مساحة التعليمات البرمجية. لراحتك، ندرج إضافة دردشة GitHub Copilot ضمن تعريف الحاوية. انظر .devcontainer/devcontainer.json. تحتاج إلى حساب GitHub Copilot. يتوفر إصدار تجريبي مجاني لمدة 30 يوما.
بعض النصائح لك عند التحدث إلى GitHub Copilot:
- في جلسة دردشة واحدة، تتراكم الأسئلة والأجوبة على بعضها البعض. يمكنك تعديل أسئلتك لضبط الإجابة التي تحصل عليها.
- بشكل افتراضي، لا يملك GitHub Copilot حق الوصول إلى أي ملف في المستودع الخاص بك. لطرح أسئلة حول ملف، افتح الملف في المحرر أولا.
- للسماح ل GitHub Copilot بالوصول إلى جميع الملفات في المستودع عند إعداد إجاباته، ابدأ سؤالك ب
@workspace. لمزيد من المعلومات، انظر Use the @workspace agent. - في جلسة الدردشة، يمكن ل GitHub Copilot اقتراح تغييرات، وحتى
@workspaceمكان إجراء التغييرات، لكنه غير مسموح له بإجراء التغييرات نيابة عنك. الأمر متروك لك لإضافة التغييرات المقترحة واختبارها.
المحتويات ذات الصلة
تقدم إلى البرنامج التعليمي التالي لمعرفة كيفية تأمين تطبيقك باستخدام مجال وشهادة مخصصين.
تعرف على كيفية تشغيل خدمة التطبيقات لتطبيق Python: