توزيع تطبيق ويب Python (Django أو Flask) باستخدام PostgreSQL في Azure

في هذا البرنامج التعليمي، ستقوم بنشر تطبيق ويب Python يستند إلى البيانات (Django أو Flask) إلى Azure App Service مع قاعدة بيانات Azure لخدمة قاعدة بيانات PostgreSQL الارتباطية. تدعم Azure App Service Python في بيئة خادم Linux.

An architecture diagram showing an App Service with a PostgreSQL database in Azure.

لإكمال هذا البرنامج التعليمي، ستحتاج إلى:

تخطي إلى النهاية

مع تثبيت Azure Developer CLI ، يمكنك نشر نموذج تطبيق مكون بالكامل يظهر في هذا البرنامج التعليمي ورؤيتها قيد التشغيل في Azure. ما عليك سوى تشغيل الأوامر التالية في دليل عمل فارغ:

azd auth login
azd init --template msdocs-flask-postgresql-sample-app
azd up

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

يتم توفير نماذج تطبيقات Python باستخدام إطار عمل Flask و Django لمُساعدتك على المتابعة مع هذا البرنامج التعليمي. لنشرها دون تشغيلها محليا، تخطي هذا الجزء.

لتشغيل التطبيق محليا، تأكد من تثبيت Python 3.7 أو أعلى وPostgreSQL محليا. ثم قم باستنساخ فرع مستودع العينة starter-no-infra والتغيير إلى جذر المستودع.

git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app

إنشاء ملف .env باستخدام مَلف .env.sample كدليل. تعيين قيمة DBNAME إلى اسم قاعدة بيانات موجودة في مثيل PostgreSQL المَحلي. قم بتعيين قيم DBHOSTو DBUSERحسب DBPASS الاقتضاء لمثيل PostgreSQL المَحلي.

DBNAME=<database name>
DBHOST=<database-hostname>
DBUSER=<db-user-name>
DBPASS=<db-password>

إنشاء بيئة ظـاهرية للتطبيق:

py -m venv .venv
.venv\scripts\activate

تثبيت تأمينات التشغيل:

pip install -r requirements.txt

تشغيل نموذج التطبيق مع الأوامر التالية:

# Run database migration
flask db upgrade
# Run the app at http://127.0.0.1:5000
flask run

1. إنشاء App Service وPostgreSQL

git clone https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app.git

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

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

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

الخطوة 1: في مدخل 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 (Flask).

الخطوة 2: في صفحة إنشاء تطبيق ويب + قاعدة بيانات ، املأ النموذج كما يلي.

  1. مجموعة الموارد → حدد إنشاء جديد واستخدم اسم msdocs-python-postgres-tutorial.
  2. المنطقة → أي منطقة Azure قريبة منك.
  3. الاسمmsdocs-python-postgres-XYZ حيث XYZ هو أي ثلاثة أحرف عشوائية. يجب أن يكون هذا الاسم فريدا عبر Azure.
  4. مكدس وقت التشغيل → Python 3.10.
  5. قاعدة البياناتPostgreSQL - يتم تحديد الخادم المرن بشكل افتراضي كمحرك قاعدة البيانات. يتم أيضا تعيين اسم الخادم واسم قاعدة البيانات بشكل افتراضي إلى القيم المناسبة.
  6. خطة الاستضافةالأساسية. عندما تكون مستعداً، يمكنك التوسع إلى مستوى أسعار الإنتاج لاحقاً.
  7. حدد "Review + create".
  8. وبعد اكتمال عملية التحقق، حدد Create.

A screenshot showing how to configure a new app and database in the Web App + Database wizard (Flask).

الخطوة 3: يستغرق النشر بضع دقائق لإكماله. بعد اكتمال التوزيع، حدد الزر انتقال إلى المورد. يتم نقلك مباشرة إلى تطبيق App Service، ولكن يتم إنشاء الموارد التالية:

  • مجموعة الموارد → الحاوية لكافة الموارد التي تم إنشاؤها.
  • خطة خدمة التطبيق → تحدد موارد الحساب لخدمة التطبيق. يتم إنشاء خطة Linux في الطبقة الأساسية.
  • تمثل خدمة التطبيقات → تطبيقك وتعمل في خطة خدمة التطبيق.
  • الشبكة الظاهرية متكاملة مع تطبيق خدمة التطبيق وتعزل نسبة استخدام الشبكة الخلفية.
  • قاعدة بيانات Azure لخادم PostgreSQL المرن → يمكن الوصول إليه فقط من داخل الشبكة الظاهرية. يتم إنشاء قاعدة بيانات ومستخدم لك على الخادم.
  • تمكن منطقة DNS الخاصة → دقة DNS لخادم PostgreSQL في الشبكة الظاهرية.

A screenshot showing the deployment process completed (Flask).

2. التحقق من إعدادات الاتصال

أنشأ معالج الإنشاء متغيرات الاتصال لك بالفعل كإعدادات التطبيق. تعد إعدادات التطبيق إحدى الطرق للحفاظ على أسرار الاتصال خارج مستودع التعليمات البرمجية. عندما تكون مستعدا لنقل بياناتك السرية إلى موقع أكثر أمانا، إليك مقالة حول التخزين في Azure Key Vault.

الخطوة 1: في صفحة App Service، في القائمة اليسرى، حدد Configuration.

A screenshot showing how to open the configuration page in App Service (Flask).

الخطوة 2: في علامة التبويب إعدادات التطبيق في صفحة التكوين ، تحقق من وجودها AZURE_POSTGRESQL_CONNECTIONSTRING . سيتم إدخال ذلك في بيئة وقت التشغيل كمتغير بيئة.

A screenshot showing how to see the autogenerated connection string (Flask).

الخطوة 3: في محطة طرفية أو موجه أوامر، قم بتشغيل البرنامج النصي Python التالي لإنشاء سر فريد: python -c 'import secrets; print(secrets.token_hex())'. انسخ قيمة الإخراج لاستخدامها في الخطوة التالية.

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

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

الخطوة 1: في نافذة مستعرض جديدة:

  1. قم بتسجيل الدخول إلى حساب GitHub الخاص بك.
  2. الانتقال إلى https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app.
  3. حدد تفريع:
  4. حدد Create fork.

A screenshot showing how to create a fork of the sample GitHub repository (Flask).

الخطوة 2: في صفحة GitHub، افتح Visual Studio Code في المتصفح بالضغط على . المفتاح.

A screenshot showing how to open the Visual Studio Code browser experience in GitHub (Flask).

الخطوة 3: في Visual Studio Code في المستعرض، افتح azureproject/production.py في المستكشف. راجع متغيرات البيئة المستخدمة في بيئة الإنتاج، بما في ذلك إعدادات التطبيق التي شاهدتها في صفحة التكوين.

A screenshot showing Visual Studio Code in the browser and an opened file (Flask).

الخطوة 4: مرة أخرى في صفحة App Service، في القائمة اليسرى، حدد Deployment Center.

A screenshot showing how to open the deployment center in App Service (Flask).

الخطوة 5: في صفحة Deployment Center:

  1. في المصدر، حدد GitHub. بشكل افتراضي، يتم تحديد إجراءات GitHub كموفر بناء.
  2. سجل الدخول إلى حساب GitHub واتبع المطالبة لتخويل Azure.
  3. في المؤسسة، حدد حسابك.
  4. في Repository، حدد msdocs-flask-postgresql-sample-app.
  5. في الفرع، حدد رئيسي.
  6. احتفظ بالخيار الافتراضي محددا لإضافة سير عمل.
  7. ضمن Authentication type، حدد User-assigned identity.
  8. في القائمة العلوية، حدد حفظ. تلتزم App Service بملف سير عمل في مستودع GitHub المختار، في الدليل .github/workflows.

A screenshot showing how to configure CI/CD using GitHub Actions (Flask).

الخطوة 6: في صفحة Deployment Center:

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

A screenshot showing how to open deployment logs in the deployment center (Flask).

الخطوة 7: يتم نقلك إلى مستودع GitHub الخاص بك وترى أن إجراء GitHub قيد التشغيل. يحدد ملف سير العمل مرحلتين منفصلتين، الإنشاء والتوزيع. انتظر حتى يتم تشغيل GitHub لإظهار حالة مكتمل. يستغرق حوالي 5 دقائق.

A screenshot showing a GitHub run in progress (Flask).

هل تواجه مشكلات؟ تحقق من دليل استكشاف الأخطاء وإصلاحها.

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

باستخدام قاعدة بيانات PostgreSQL المحمية بالشبكة الظاهرية، فإن أسهل طريقة لتشغيل عمليات ترحيل قاعدة بيانات Flask هي في جلسة SSH مع حاوية App Service.

الخطوة 1: العودة إلى صفحة App Service، في القائمة اليسرى،

  1. حدد SSH .
  2. حدد Go.

A screenshot showing how to open the SSH shell for your app from the Azure portal (Flask).

الخطوة 2: في محطة SSH الطرفية، قم بتشغيل flask db upgrade. إذا نجحت، فإن App Service تتصل بنجاح بقاعدة البيانات. يمكن أن تستمر التغييرات التي يتم إجراؤها على الملفات في /home فقط بعد عمليات إعادة تشغيل التطبيق. التغييرات خارج /home غير مستمرة.

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

5. استعرض للوصول إلى التطبيق

الخطوة 1: في صفحة App Service:

  1. من القائمة اليسرى، حدد نظرة عامة.
  2. حدد عنوان URL لتطبيقك. يمكنك أيضًا الانتقال مباشرة إلىhttps://<app-name>.azurewebsites.net.

A screenshot showing how to launch an App Service from the Azure portal (Flask).

الخطوة 2: إضافة بعض المطاعم إلى القائمة. تهانينا، أنت تقوم بتشغيل تطبيق ويب في Azure App Service، مع اتصال آمن بقاعدة بيانات Azure ل PostgreSQL.

A screenshot of the Flask web app with PostgreSQL running in Azure showing restaurants and restaurant reviews (Flask).

6. دفق سجلات التشخيص

تلتقط 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: في صفحة App Service:

  1. من القائمة اليسرى، حدد تسجيلات خدمة التطبيق.
  2. ضمن سجل التطبيقات، حدد نظام الملفات.
  3. في القائمة العلوية، حدد حفظ.

A screenshot showing how to enable native logs in App Service in the Azure portal.

الخطوة 2: من القائمة اليسرى، حدد Log stream. ترى سجلات تطبيقك، بما في ذلك سجلات النظام الأساسي والسجلات من داخل الحاوية.

A screenshot showing how to view the log stream in the Azure portal.

تعرف على المزيد حول تسجيل الدخول إلى تطبيقات Python في سلسلة إعداد Azure Monitor لتطبيق Python الخاص بك.

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

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

الخطوة 1: في شريط البحث أعلى مدخل Microsoft Azure:

  1. أدخل اسم مجموعة الموارد.
  2. حدد مجموعة الموارد.

A screenshot showing how to search for and navigate to a resource group in the Azure portal.

الخطوة 2: في صفحة مجموعة الموارد، حدد حذف مجموعة الموارد.

A screenshot showing the location of the Delete Resource Group button in the Azure portal.

الخطوة 3:

  1. أدخل اسم مجموعة الموارد لتأكيد حذفك.
  2. حدد حذف.

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

1. إنشاء موارد Azure ونشر نموذج تطبيق

في هذه الخطوة، يمكنك إنشاء موارد Azure ونشر نموذج تطبيق إلى App Service على Linux. تنشئ الخطوات المستخدمة في هذا البرنامج التعليمي مجموعة من الموارد الآمنة بشكل افتراضي التي تتضمن خدمة التطبيقات وقاعدة بيانات Azure ل PostgreSQL.

  1. إذا لم تكن قد قمت بالفعل، فانسخ فرع مستودع العينة starter-no-infra في محطة طرفية محلية.

    git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app
    cd msdocs-flask-postgresql-sample-app
    

    هذا الفرع المستنسخ هو نقطة البداية الخاصة بك. يحتوي على تطبيق Flask بسيط لمحرك البيانات.

  2. من جذر المستودع، قم بتشغيل azd init.

    azd init --template python-app-service-postgresql-infra
    
  3. عند المطالبة، قدم الإجابات التالية:

    السؤال الإجابة
    الدليل الحالي غير فارغ. هل ترغب في تهيئة مشروع هنا في "<دليلك>"؟ السنة
    ماذا تريد أن تفعل بهذه الملفات؟ الاحتفاظ بالملفات الموجودة دون تغيير
    أدخل اسم بيئة جديدة اكتب اسم فريد. يستخدم قالب azd هذا الاسم كجزء من اسم DNS لتطبيق الويب الخاص بك في Azure (<app-name>.azurewebsites.net). يسمح بالأحرف الأبجدية الرقمية والواصلات.
  4. azd up قم بتشغيل الأمر لتوفير موارد Azure الضرورية ونشر التعليمات البرمجية للتطبيق. إذا لم تكن قد سجلت الدخول بالفعل إلى Azure، فسيتم تشغيل المستعرض ويطلب منك تسجيل الدخول. azd up سيطالبك الأمر أيضا بتحديد الاشتراك والموقع المطلوبين للنشر فيه.

    azd up
    

    azd up قد يستغرق الأمر بضع دقائق لإكماله. كما أنه يقوم بتجميع ونشر التعليمات البرمجية للتطبيق الخاص بك، ولكنك ستقوم بتعديل التعليمات البرمجية الخاصة بك لاحقا للعمل مع App Service. أثناء تشغيله، يوفر الأمر رسائل حول عملية التوفير والنشر، بما في ذلك ارتباط إلى النشر في Azure. عند الانتهاء، يعرض الأمر أيضا ارتباطا إلى تطبيق التوزيع.

    يحتوي قالب azd هذا على ملفات (azure.yaml ودليل infra ) التي تنشئ بنية آمنة بشكل افتراضي مع موارد Azure التالية:

    • مجموعة الموارد → الحاوية لكافة الموارد التي تم إنشاؤها.
    • خطة خدمة التطبيق → تحدد موارد الحساب لخدمة التطبيق. يتم تحديد خطة Linux في المستوى B1 .
    • تمثل خدمة التطبيقات → تطبيقك وتعمل في خطة خدمة التطبيق.
    • الشبكة الظاهرية متكاملة مع تطبيق خدمة التطبيق وتعزل نسبة استخدام الشبكة الخلفية.
    • قاعدة بيانات Azure لخادم PostgreSQL المرن → يمكن الوصول إليه فقط من داخل الشبكة الظاهرية. يتم إنشاء قاعدة بيانات ومستخدم لك على الخادم.
    • تمكن منطقة DNS الخاصة → دقة DNS لخادم PostgreSQL في الشبكة الظاهرية.
    • تعمل مساحة عمل Log Analytics → كحاوية مستهدفة لتطبيقك لشحن سجلاته، حيث يمكنك أيضا الاستعلام عن السجلات.

2. استخدام قاعدة البيانات سلسلة الاتصال

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

  1. في إخراج azd، ابحث عن إعدادات التطبيق وابحث عن الإعدادات AZURE_POSTGRESQL_CONNECTIONSTRING و AZURE_REDIS_CONNECTIONSTRING. للحفاظ على البيانات السرية آمنة، يتم عرض أسماء الإعدادات فقط. تبدو مثل هذه في إخراج azd:

     App Service app has the following settings:
    
             - AZURE_POSTGRESQL_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
             - FLASK_DEBUG
             - SCM_DO_BUILD_DURING_DEPLOYMENT
             - SECRET_KEY
     
  2. AZURE_POSTGRESQL_CONNECTIONSTRINGيحتوي على سلسلة الاتصال إلى قاعدة بيانات Postgres في Azure، AZURE_REDIS_CONNECTIONSTRING ويحتوي على سلسلة الاتصال إلى ذاكرة التخزين المؤقت Redis في Azure. تحتاج إلى استخدامها التعليمات البرمجية الخاصة بك للاتصال بها. افتح azureproject/production.py، وألغ التعليق على الأسطر التالية، واحفظ الملف:

    conn_str = os.environ['AZURE_POSTGRESQL_CONNECTIONSTRING']
    conn_str_params = {pair.split('=')[0]: pair.split('=')[1] for pair in conn_str.split(' ')}
    DATABASE_URI = 'postgresql+psycopg2://{dbuser}:{dbpass}@{dbhost}/{dbname}'.format(
        dbuser=conn_str_params['user'],
        dbpass=conn_str_params['password'],
        dbhost=conn_str_params['host'],
        dbname=conn_str_params['dbname']
    )
    

    تم تكوين التعليمات البرمجية للتطبيق الخاص بك الآن للاتصال بقاعدة بيانات PostgreSQL في Azure. إذا أردت، افتح app.py وشاهد كيفية DATABASE_URI استخدام متغير البيئة.

  3. في المحطة الطرفية، قم بتشغيل azd deploy.

    azd deploy
    

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

باستخدام قاعدة بيانات PostgreSQL المحمية بالشبكة الظاهرية، فإن أسهل طريقة لتشغيل عمليات ترحيل قاعدة بيانات Flask هي في جلسة SSH مع حاوية App Service.

  1. في إخراج azd، ابحث عن عنوان URL لجلسة SSH وانتقل إليه في المتصفح. يبدو مثل هذا في الإخراج:

     Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
     
  2. في محطة SSH الطرفية، قم بتشغيل flask db upgrade. إذا نجحت، فإن App Service تتصل بنجاح بقاعدة البيانات.

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

    إشعار

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

5. استعرض للوصول إلى التطبيق

  1. في إخراج azd، ابحث عن عنوان URL لتطبيقك وانتقل إليه في المستعرض. يبدو عنوان URL كما يلي في إخراج AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>.azurewebsites.net/
     
  2. أضف بعض المطاعم إلى القائمة.

    تهانينا، أنت تقوم بتشغيل تطبيق ويب في Azure App Service، مع اتصال آمن بقاعدة بيانات Azure ل PostgreSQL.

6. دفق سجلات التشخيص

يمكن ل Azure App Service التقاط سجلات وحدة التحكم لمساعدتك في تشخيص المشكلات مع التطبيق الخاص بك. للراحة، قام قالب azd بالفعل بتمكين التسجيل إلى نظام الملفات المحلي بالإضافة إلى شحنها إلى مساحة عمل Log Analytics.

يتضمن 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 وانتقل إليه في المتصفح. يبدو الارتباط كما يلي في إخراج azd:

Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

تعرف على المزيد حول تسجيل الدخول إلى تطبيقات Python في سلسلة إعداد Azure Monitor لتطبيق Python الخاص بك.

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

لحذف كافة موارد Azure في بيئة النشر الحالية، قم بتشغيل azd down.

azd down

استكشاف الأخطاء وإصلاحها

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

لا يمكنني الاتصال بجلسة SSH

إذا لم تتمكن من الاتصال بجلسة SSH، فقد فشل التطبيق نفسه في البدء. تحقق من سجلات التشخيص للحصول على التفاصيل. على سبيل المثال، إذا رأيت خطأ مثل KeyError: 'AZURE_POSTGRESQL_CONNECTIONSTRING'، فقد يعني ذلك أن متغير البيئة مفقود (ربما قمت بإزالة إعداد التطبيق).

أتلقى خطأ عند تشغيل عمليات ترحيل قاعدة البيانات

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

الأسئلة المتداولة

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

تسعير الموارد التي تم إنشاؤها كما يلي:

  • يتم إنشاء خطة 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

كيف تم تكوين نموذج Django لتشغيله على Azure App Service؟

إشعار

إذا كنت تتابع هذا البرنامج التعليمي مع تطبيقك الخاص، فانظر إلى وصف ملف requirements.txt في ملف README.md لكل مشروع (Flask، Django) لمعرفة الحزم التي سوف تحتاجها.

يقوم نموذج تطبيق Django بتكوين الإعدادات في ملف azureproject/production.py بحيث يمكن تشغيله في Azure App Service. هذه التغييرات شائعة لنشر Django في الإنتاج، وليست خاصة بخدمة التطبيقات.

  • يتحقق Django من صحة عنوان HTTP_HOST في الطلبات الواردة. يستخدم نموذج التعليمات البرمجية WEBSITE_HOSTNAME متغير البيئة في App Service لإضافة اسم مجال التطبيق إلى إعداد ALLOWED_HOSTS Django.

    # Configure the domain name using the environment variable
    # that Azure automatically creates for us.
    ALLOWED_HOSTS = [os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else []
    
  • لا يدعم Django خدمة الملفات الثابتة في الإنتاج. لهذا البرنامج التعليمي، يمكنك استخدام WhiteNoise لتمكين خدمة الملفات. تم تثبيت حزمة WhiteNoise بالفعل مع requirements.txt، ويتم إضافة برنامجها الوسيط إلى القائمة.

    
    # WhiteNoise configuration
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        # Add whitenoise middleware after the security middleware
        'whitenoise.middleware.WhiteNoiseMiddleware',
    

    ثم يتم تكوين إعدادات الملف الثابت وفقا لوثائق Django.

    SESSION_ENGINE = "django.contrib.sessions.backends.cache"
    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
    

لمزيد من المعلومات، راجع إعدادات الإنتاج لتطبيقات Django.

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

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

تعرف على كيفية تشغيل خدمة التطبيقات لتطبيق Python: