التشغيل السريع: نشر تطبيق ويب Python (Django أو Flask أو FastAPI) على "Azure App Service"

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

للتشغيل السريع، تحتاج إلى:

إشعار

تحتوي هذه المقالة على إرشادات حالية حول نشر تطبيق ويب Python باستخدام "Azure App Service". لم يعد Python على Windows مدعومًا.

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

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

mkdir flask-quickstart
cd flask-quickstart
azd init --template https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
azd up

ولحذف الموارد:

azd down

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

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

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart

لتشغيل التطبيق محليا:

  1. انتقل إلى مجلد التطبيق:

    cd msdocs-python-flask-webapp-quickstart
    
  2. إنشاء بيئة ظـاهرية للتطبيق:

    py -m venv .venv
    .venv\scripts\activate
    
  3. تثبيت تأمينات التشغيل:

    pip install -r requirements.txt
    
  4. تشغيل التطبيق:

    flask run
    
  5. استعرض للوصول إلى نموذج التطبيق في http://localhost:5000 في مستعرض ويب.

    لقطة شاشة لتطبيق Flask الذي يعمل محليا في مستعرض

هل تواجه مشكلات؟ أخبرنا بذلك.

إنشاء تطبيق ويب في Azure

لاستضافة التطبيق الخاص بك في Azure، تحتاج إلى إنشاء تطبيق ويب "Azure App Service" في Azure. يمكنك إنشاء تطبيق ويب باستخدام Azure CLI أو VS Code أو حزمة ملحق Azure Tools أو مدخل Microsoft Azure.

يمكن تشغيل أوامر Azure CLI على كمبيوتر مع تثبيت Azure CLI.

أنشئ موارد Azure، ثم نشر تطبيقك باستخدام أوامر Azure CLI منفصلة.

إذا لزم الأمر، قم بتسجيل الدخول إلى Azure باستخدام az login.

az login

استبدلها <app-name> باسم فريد عالميا. أنشئ مجموعة موارد وخطة لخدمة التطبيقات، ثم أنشئ تطبيق الويب باستخدام az webapp create.

az group create --name myResourceGroup --location eastus
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku P0v3 --is-linux
az webapp create --name <app-name> --resource-group myResourceGroup --plan myAppServicePlan --runtime "PYTHON:3.14"
az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
  • استخدم المعلمة --runtime لتحديد إصدار Python الذي يشغله تطبيقك. يستخدم هذا المثال Python 3.14. لسرد أوقات تشغيل Python المدعومة، استخدم az webapp list-runtimes --os-type linux --runtime python --output table.
  • استخدم المعامل --sku لتحديد حجم (وحدة المعالجة المركزية والذاكرة) وتكلفة خطة خدمة التطبيقات. يستخدم هذا المثال خطة خدمة P0v3 (Premium v3)، والتي تتحمل تكلفة في اشتراكك في Azure. للحصول على القائمة الكاملة لخطط خدمة التطبيقات، راجع تسعير خدمة التطبيقات.
  • استبدلها eastus بالمنطقة التي تفضلها. لسرد المناطق المتاحة، استخدم az account list-locations--output table.
  • يتيح هذا SCM_DO_BUILD_DURING_DEPLOYMENT الإعداد بناء Oryx، بما في ذلك تثبيت التبعيات في requirements.txt، عند نشر أرشيف المصدر.

أنشئ ملف ZIP يحتوي على ملفات التطبيقات، بما في ذلك requirements.txt، في جذر الأرشيف. استبعد الملفات المحلية مثل .venv و .git و .env. للحصول على تعليمات خاصة بالمنصة، راجع إنشاء ملف ZIP لتطبيقك في قسم النشر باستخدام تبويب ملف ZIP . ثم نشر الأرشيف باستخدام az webapp deploy:

az webapp deploy --name <app-name> --resource-group myResourceGroup --src-path <zip-file-path> --type zip

قد يستغرق النشر بضع دقائق. تصفح لعرض https://<app-name>.azurewebsites.net تطبيقك. لبث السجلات، قم بتفعيلها عن طريق تشغيل az webapp log config --name <app-name> --resource-group myResourceGroup --docker-container-logging filesystem، ثم شغل az webapp log tail --name <app-name> --resource-group myResourceGroup.

هل تواجه مشكلات؟ أخبرنا بذلك.

نشر التعليمات البرمجية للتطبيق الخاص بك إلى Azure

تدعم "Azure App Service" أساليب متعددة لنشر التعليمات البرمجية للتطبيق الخاص بك إلى Azure، بما في ذلك إجراءات GitHub وجميع أدوات CI/CD الرئيسية. تركز هذه المقالة على كيفية نشر التعليمات البرمجية من محطة العمل المحلية إلى Azure.

أوامر Azure CLI في الخطوة السابقة أنشأت الموارد ونشرت تطبيقك. يمكنك الانتقال إلى الخطوة التالية.


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

تكوين البرنامج النصي لبدء التشغيل

استنادا إلى وجود ملفات معينة في عملية نشر، تكتشف App Service تلقائيا ما إذا كان التطبيق هو تطبيق Django أو Flask وتنفذ الخطوات الافتراضية لتشغيل تطبيقك. بالنسبة للتطبيقات المبنية على أطر ويب أخرى مثل FastAPI، قد تحتاج إلى تكوين سكريبت بدء التشغيل لخدمة التطبيقات لتشغيل تطبيقك. وإلا، فإن App Service يشغل تطبيقا افتراضيا للقراءة فقط يقع في مجلد opt/defaultsite .

  • Python 3.14 وما بعده: تكتشف خدمة التطبيقات تلقائيا تطبيقات FastAPI وتشغلها. لا يتطلب الأمر أمر بدء التشغيل.
  • Python 3.13 وما قبله: يجب عليك تكوين أمر بدء تشغيل مخصص.

لمعرفة المزيد حول كيفية تشغيل App Service لتطبيقات Python وكيفية تكوين سلوكها وتخصيصه مع تطبيقك، راجع تكوين تطبيق Linux Python لخدمة تطبيقات Azure.

تكتشف App Service تلقائيا وجود تطبيق Flask. لا يلزم تكوين إضافي لبدء التشغيل السريع هذا.

استعرض التطبيق

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

يقوم نموذج كود Python بتشغيل حاوية Linux في خدمة التطبيقات باستخدام صورة مضمنة.

لقطة شاشة للتطبيق قيد التشغيل في Azure

تهانينا! لقد قمت بنشر تطبيق Python الخاص بك في خدمة التطبيقات.

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

سجلات التدفق

تسجل "Azure App Service" جميع مخرجات الرسائل إلى وحدة التحكم لمساعدتك في تشخيص المشكلات المتعلقة بتطبيقك. تتضمن print() نماذج التطبيقات عبارات لإثبات هذه الإمكانية.

@app.route('/')
def index():
   print('Request for index page received')
   return render_template('index.html')

@app.route('/favicon.ico')
def favicon():
    return send_from_directory(os.path.join(app.root_path, 'static'),
                               'favicon.ico', mimetype='image/vnd.microsoft.icon')

@app.route('/hello', methods=['POST'])
def hello():
   name = request.form.get('name')

   if name:
       print('Request for hello page received with name=%s' % name)
       return render_template('hello.html', name = name)
   else:
       print('Request for hello page received with no name or blank name -- redirecting')
       return redirect(url_for('index'))

يمكنك مراجعة محتويات سجلات تشخيص App Service باستخدام Azure CLI أو VS Code أو مدخل Microsoft Azure.

أولا، تحتاج إلى تكوين "Azure App Service" لإخراج السجلات إلى نظام ملفات App Service باستخدام الأمر az webapp log config .

az webapp log config \
    --web-server-logging filesystem \
    --name $APP_SERVICE_NAME \
    --resource-group $RESOURCE_GROUP_NAME

لدفق السجلات، استخدم الأمر az webapp log tail .

az webapp log tail \
    --name $APP_SERVICE_NAME \
    --resource-group $RESOURCE_GROUP_NAME

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

Starting Live Log Stream ---

2021-12-23T02:15:52.740703322Z Request for index page received
2021-12-23T02:15:52.740740222Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET / HTTP/1.1" 200 1360 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.841043070Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.884541951Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:53.043211176Z 169.254.130.1 - - [23/Dec/2021:02:15:53 +0000] "GET /favicon.ico HTTP/1.1" 404 232 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"

2021-12-23T02:16:01.304306845Z Request for hello page received with name=David
2021-12-23T02:16:01.304335945Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "POST /hello HTTP/1.1" 200 695 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.398399251Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.430740060Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"

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

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

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

احذف مجموعة الموارد باستخدام الأمر az group delete .

az group delete \
    --name msdocs-python-webapp-quickstart \
    --no-wait

تسمح الوسيطة --no-wait للأمر بالعودة قبل اكتمال العملية.

هل تواجه مشكلات؟ أخبرنا بذلك.

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