إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذا التشغيل السريع، يمكنك نشر تطبيق ويب Python (Django أو Flask أو FastAPI) إلى "Azure App Service". "Azure App Service" هي خدمة استضافة ويب مدارة بالكامل تدعم تطبيقات Python المستضافة في بيئة خادم Linux.
للتشغيل السريع، تحتاج إلى:
- حساب Azure مع اشتراك نشط. إنشاء حساب مجانا.
- بايثون 3.14 أو أعلى مثبت محليا.
إشعار
تحتوي هذه المقالة على إرشادات حالية حول نشر تطبيق ويب 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
لتشغيل التطبيق محليا:
انتقل إلى مجلد التطبيق:
cd msdocs-python-flask-webapp-quickstartإنشاء بيئة ظـاهرية للتطبيق:
py -m venv .venv .venv\scripts\activateتثبيت تأمينات التشغيل:
pip install -r requirements.txtتشغيل التطبيق:
flask runاستعرض للوصول إلى نموذج التطبيق في
http://localhost:5000في مستعرض ويب.
هل تواجه مشكلات؟ أخبرنا بذلك.
إنشاء تطبيق ويب في 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 في خدمة التطبيقات باستخدام صورة مضمنة.
تهانينا! لقد قمت بنشر تطبيق 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 للأمر بالعودة قبل اكتمال العملية.
هل تواجه مشكلات؟ أخبرنا بذلك.