إنشاء تطبيق ويب PHP في خدمات تطبيق Azure

توفر خدمة تطبيقات Azure خدمة استضافة ويب قابلة للتطوير بدرجة كبيرة وذاتية التصحيح. يوضح هذا البرنامج التعليمي للتشغيل السريعة كيفية نشر تطبيق PHP لخدمة تطبيقات Azure على Windows.

يمكنك إنشاء التطبيق على شبكة الإنترنت باستخدام Azure CLI في سحابة Shell واستخدام Git لنشر نموذج التعليمات البرمجية لتطبيق PHP إلى تطبيق ويب.

Sample app running in Azure

يمكنك اتباع الخطوات هنا باستخدام جهاز ماك أو Windows أو لينكس. بمجرد تثبيت المتطلبات الأساسية، يستغرق الأمر حوالي خمس دقائق لإكمال الخطوات.

إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

المتطلبات الأساسية

لإكمال التشغيل السريع:

تنزيل النموذج محلياً

  1. في نافذة محطة طرفية، شغِّل الأوامر التالية. سيؤدي ذلك إلى نسخ عينة التطبيق إلى جهازك المحلي، والانتقال إلى الدليل الذي يحتوي على عينة التعليمات البرمجية.

    git clone https://github.com/Azure-Samples/php-docs-hello-world
    cd php-docs-hello-world
    
  2. تأكد من أن الفرع الافتراضي هو main.

    git branch -m main
    

    تلميح

    لا تتطلب App Service تغيير اسم الفرع. ورغم ذلك، ونظراً إلى أن العديد من المستودعات تقوم بتغيير فرعها الافتراضي إلى main، يوضح لك هذا البرنامج التعليمي أيضاً كيفية توزيع مستودع من main.

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

  1. شغل التطبيق محلياً لمعرفة كيف يبدو التطبيق عند نشره إلى Azure. افتح نافذة الوحدة الطرفية واستخدام php الأمر لإطلاق خادم ويب PHP المدمج.

    php -S localhost:8080
    
  2. افتح متصفح ويب، وانتقل إلى التطبيق على http://localhost:8080.

    ستظهر لك رسالة مرحبًا بالعالم! من عينة التطبيق المعروض في الصفحة.

    Sample app running locally

  3. اضغط، في نافذة الوحدة الطرفية، علىCtrl+C للخروج من خادم الويب.

Azure Cloud Shell

Azure يستضيف Azure Cloud Shell، بيئة تفاعلية يمكن استخدامها من خلال المستعرض. يمكنك استخدام Bash أو PowerShell مع Cloud Shell للعمل مع خدمات Azure. يمكنك استخدام أوامر Cloud Shell المثبتة مسبقًا لتشغيل التعليمات البرمجية في هذه المقالة دون الحاجة إلى تثبيت أي شيء على البيئة المحلية.

لبدء Azure Cloud Shell:

خيار مثال/ رابط
انقر فوق ⁧⁩جربه⁧⁩ في الزاوية العلوية اليسرى من التعليمة البرمجية أو كتلة الأمر. تحديد ⁧⁩جربه⁧⁩ لا يقوم بنسخ التعليمة البرمجية أو الأمر تلقائيًا إلى Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
انتقل إلى ⁧⁩⁧ https://shell.azure.com⁩⁧⁩، أو حدد زر ⁩تشغيل Cloud Shell لفتح Cloud Shell في المتصفح لديك. Button to launch Azure Cloud Shell.
حدد زر Cloud Shell على شريط القوائم في أعلى اليمين في مدخل Microsoft Azure. Screenshot that shows the Cloud Shell button in the Azure portal

لاستخدام Azure Cloud Shell:

  1. ابدأ تشغيل Cloud Shell.

  2. حدد الزر نسخ على كتلة التعليمات البرمجية (أو كتلة الأوامر) لنسخ التعليمات البرمجية أو الأمر.

  3. ألصق التعليمة البرمجية أو الأمر في جلسة Cloud Shell بتحديد Ctrl+Shift+Vعلى Windows وLunix، أو بتحديد Cmd+Shift+Vعلى macOS.

  4. حدد Enter لتشغيل التعليمات البرمجية أو الأمر.

تكوين مستخدم توزيع

يمكن لـ FTP وGit النشر على تطبيق موقع Azure باستخدام مستخدم نشر. بمجرد تكوين مستخدم النشر الخاص بك، يمكنك استخدامه لكافة عمليات نشر Azure الخاصة بك. يختلف اسم مستخدم وكلمة مرور التوزيع على مستوى الحساب عن بيانات اعتماد اشتراك Azure الخاصة بك.

لتكوين مستخدم التوزيع، قم بتشغيل مجموعة مستخدم توزيع az webapp باستخدام الأمر في Azure Cloud Shell. استبدل <اسم المستخدم> و< كلمة المرور> باسم مستخدم التوزيع وكلمة مروره.

  • يجب أن يكون اسم المستخدم فريدًا في Azure، ولا يجب أن يحتوي دفع Git المحلي على رمز ’@‘.
  • يجب أن يكون طول كلمة المرور ثمانية أحرف على الأقل، مع اثنين من العناصر الثلاثة التالية: الأحرف والأرقام والرموز.
az webapp deployment user set --user-name <username> --password <password>

يظهر إخراج JSON كلمة المرور كـ null. إذا واجهت خطأ، قم بتغيير 'Conflict'. Details: 409 اسم المستخدم. إذا واجهت خطأ 'Bad Request'. Details: 400، فاستخدم كلمة مرور أقوى.

سجل اسم المستخدم وكلمة المرور لاستخدامها لتوزيع تطبيقات الويب الخاصة بك.

إنشاء مجموعة موارد

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

في Cloud Shell، أنشئ مجموعة موارد باستخدام الأمر az group create. ينشئ المثال التالي مجموعة موارد باسم myResourceGroup في موقع West Europe. لرؤية جميع المواقع المدعومة لخدمة التطبيقات في المستوى المجاني، قم بتشغيل az appservice list-locations --sku FREE الأمر.

az group create --name myResourceGroup --location "West Europe"

يمكنك بشكل عام إنشاء مجموعة مواردك والموارد في منطقة قريبة منك.

عند انتهاء الأمر، يظهر لك إخراج JSON خصائص مجموعة الموارد.

إنشاء خطة خدمة تطبيق Azure

في Cloud Shell، أنشئ خطة خدمة التطبيق باستخدام الأمر az appservice plan create.

ينشئ المثال التالي خطة App ServicemyAppServicePlan المسماة في طبقة التسعيرالمجاني:

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE --is-linux

عند إنشاء خطة خدمة التطبيق، يعرض Azure CLI معلومات مشابهة للمثال التالي:

{ 
  "freeOfferExpirationTime": null,
  "geoRegion": "West Europe",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "linux",
  "location": "West Europe",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
} 

أنشئ تطبيق ويب

  1. أنشأ في Cloud Shell، تطبيق الويب في خطة خدمة التطبيق myAppServicePlanباستخدام الأمر az webapp create.

    في المثال التالي، استبدل <app-name> باسم تطبيق مميز عالمي (الأحرف الصالحة هيa-z و0-9 و-). تم تحديد وقت التشغيل إلى PHP|7.4. لمعرفة جميع أوقات التشغيل المعتمدة، قم بتشغيل az webapp list-runtimes.

    az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime 'PHP|8.1' --deployment-local-git
    

    عند إنشاء تطبيق ويب، يعرض Azure CLI الإخراج مشابهًا للمثال التالي:

     Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git'
     {
       "availabilityState": "Normal",
       "clientAffinityEnabled": true,
       "clientCertEnabled": false,
       "cloningInfo": null,
       "containerSize": 0,
       "dailyMemoryTimeQuota": 0,
       "defaultHostName": "<app-name>.azurewebsites.net",
       "enabled": true,
       < JSON data removed for brevity. >
     }
     

    لقد أنشأت تطبيق ويب جديد فارغ، مع تمكين نشر git.

    إشعار

    يظهر عنوان URL الخاص ببرنامج Git عن بعد في الخاصية deploymentLocalGitUrl، مع التنسيق https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. احفظ عنوان URL هذا حيث تحتاج إليه لاحقًا.

  2. تصفح للوصول إلى تطبيق الويب الذي تم إنشاؤه حديثا. استبدل <app-name> باسم تطبيقك المميز المُنشأ في الخطوة السابقة.

    http://<app-name>.azurewebsites.net
    

    فيما يلي الشكل الذي يُفترض أن يبدو عليه تطبيق الويب الجديد:

    Empty web app page

انتقال إلى Azure من Git

  1. نظرًا لأنك تقوم بنشرmain الفرع، فأنت بحاجة إلى تعيين فرع النشر الافتراضي لتطبيقي App Servicemain(انظر تغيير فرع النشر). في Cloud Shell، اضبطDEPLOYMENT_BRANCH إعداد التطبيق باستخدامaz webapp config appsettings setالأمر.

    az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'
    
  2. سابقاً في النافذة النهائية، أضف جهاز تحكم عن بعد لـ Azure إلى مستودع Git المحلي. استبدل <deploymentLocalGitUrl-from-create-step> بعنوان URL من جهاز Git للتحكم عن بعد الذي حفظته من إنشاء تطبيق ويب.

    git remote add azure <deploymentLocalGitUrl-from-create-step>
    
  3. اضغط على جهاز التحكم عن بعد Azure لنشر التطبيق الخاص بك مع الأمر التالي. عندما تطالبك "Git Credential Manager" ببيانات الاعتماد، تأكد من إدخال بيانات الاعتماد التي قمت بإنشائها في تكوين مستخدم نشر، وليس بيانات الاعتماد التي تستخدمها لتسجيل الدخول إلى مدخل Azure.

    git push azure main
    

    قد يستغرق الأمر بضع دقائق لتشغيله. أثناء التشغيل، يعرض معلومات مُشابهة للمثال التالي:

  Counting objects: 2, done.
  Delta compression using up to 4 threads.
  Compressing objects: 100% (2/2), done.
  Writing objects: 100% (2/2), 352 bytes | 0 bytes/s, done.
  Total 2 (delta 1), reused 0 (delta 0)
  remote: Updating branch 'main'.
  remote: Updating submodules.
  remote: Preparing deployment for commit id '25f18051e9'.
  remote: Generating deployment script.
  remote: Running deployment command...
  remote: Handling Basic Web Site deployment.
  remote: Kudu sync from: '/home/site/repository' to: '/home/site/wwwroot'
  remote: Copying file: '.gitignore'
  remote: Copying file: 'LICENSE'
  remote: Copying file: 'README.md'
  remote: Copying file: 'index.php'
  remote: Ignoring: .git
  remote: Finished successfully.
  remote: Running post deployment command(s)...
  remote: Deployment successful.
  To https://<app-name>.scm.azurewebsites.net/<app-name>.git
      cc39b1e..25f1805  main -> main
  

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

تصفح إلى التطبيق المنشور باستخدام متصفح الويب الخاص بك.

http://<app-name>.azurewebsites.net

يتم تشغيل التعليمات البرمجية لنموذج PHP في تطبيق ويب لخدمة تطبيقات Azure.

Sample app running in Azure

تهانينا! لقد نشرت أول تطبيق HTML على خدمة التطبيقات.

إجراء تحديث محلي وإعادة نشر التعليمات البرمجية

  1. افتح الملف، باستخدام محرر نص محليindex.phpداخل تطبيق PHP، وأجري تغييراً بسيطاً للنص داخل السلسلة المجاورة:echo

    echo "Hello Azure!";
    
  2. في نافذة الوحدة الطرفية المحلية، قم بإجراء التغييرات في Git، ثم انقل تغييرات التعليمات البرمجية إلى Azure.

    git commit -am "updated output"
    git push azure main
    
  3. بمجرد الانتهاء من النشر، عد مرة أخرى إلى نافذة المتصفح التي تم فتحها في خطوة التصفح إلى التطبيق، ثم حدث الصفحة.

    Updated sample app running in Azure

إدارة تطبيق Azure الجديد

  1. انتقل إلى مدخل Microsoft Azure لإدارة التطبيق الذي أنشأته. ابحث وحدد خدمات التطبيق.

    Search for App Services, Azure portal, create PHP web app

  2. حدد اسم تطبيق Azure الخاص بك.

    Portal navigation to Azure app

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

    App Service page in Azure portal

    توفر قائمة تطبيق الويب خيارات مختلفة لتهيئة التطبيق.

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

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

az group delete --name myResourceGroup

ربما يستغرق الأمر بضع دقائق للتشغيل.

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

Screenshot of the sample app running in Azure.

يمكنك اتباع الخطوات هنا باستخدام جهاز ماك أو Windows أو لينكس. بمجرد تثبيت المتطلبات الأساسية، يستغرق الأمر حوالي خمس دقائق لإكمال الخطوات.

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

1 - الحصول على عينة المستودع

يمكنك إنشاء تطبيق الويب باستخدام واجهة سطر الأوامر في Azure في Cloud Shell، واستخدام Git لتوزيع عينة تعليمة PHP البرمجية لتطبيق الويب.

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

    git clone https://github.com/Azure-Samples/php-docs-hello-world
    cd php-docs-hello-world
    
  2. لتشغيل التطبيق محلياً، استخدم الأمر php لتشغيل خادم ويب PHP المضمن.

    php -S localhost:8080
    
  3. استعرض للوصول إلى نموذج التطبيق في http://localhost:8080 في مستعرض ويب.

    Screenshot of the sample app running locally.

  4. اضغط، في نافذة الوحدة الطرفية، علىCtrl+C للخروج من خادم الويب.

2 - توزيع كود تطبيقك إلى Azure

يحتوي Azure CLI على أمر az webapp up يقوم بإنشاء الموارد الضرورية ونشر التطبيق الخاص بك في خطوة واحدة.

في المحطة الطرفية، وزّع الكود في مجلدك المحلي باستخدام الأمر az webapp up:

az webapp up --runtime "PHP:8.2" --os-type=linux
  • إذا لم يتم التعرف على الأمر az، فتأكد من تثبيت واجهة سطر الأوامر في Azure.
  • تنشئ --runtime "PHP:8.2" الوسيطة تطبيق الويب مع إصدار PHP 8.2.
  • تنشئ الوسيطة --os-type=linux تطبيق الويب على خدمة التطبيق على نظام التشغيل Linux.
  • يمكنك اختياريًا تحديد اسم باستخدام الوسيطة --name <app-name>. إذا لم تقدم اسما، فسيتم إنشاء اسم تلقائيا.
  • يمكنك تضمين اختياريا حجة --location <location-name>حيث<location_name> هو المنطقة Azure المتاحة. يمكنك استرداد قائمة المناطق المسموح بها لحساب Azure الخاص بك عن طريق تشغيل الأمر az account list-locations.
  • إذا ظهر لك الخطأ القائل "تعذر الكشف التلقائي عن مكدس وقت التشغيل لتطبيقك"، فتأكد من تشغيل الأمر في دليل التعليمة البرمجية (راجع استكشاف مشكلات الكشف التلقائي وإصلاحها مع تشغيل az webapp).

يمكن أن يستغرق هذا الأمر بضع دقائق للانتهاء. أثناء تشغيله، يوفر رسائل حول إنشاء مجموعة الموارد وخطة App Service ومورد التطبيق وتكوين التسجيل والقيام بنشر ZIP. ثم يعطي الرسالة، "يمكنك تشغيل التطبيق على http://<app-name>.azurewebsites.net"، وهو عنوان URL للتطبيق على Azure.

The webapp '<app-name>' doesn't exist
Creating Resource group '<group-name>' ...
Resource group creation complete
Creating AppServicePlan '<app-service-plan-name>' ...
Creating webapp '<app-name>' ...
Configuring default logging for the app, if not already enabled
Creating zip with contents of dir /home/msangapu/myPhpApp ...
Getting scm site credentials for zip deployment
Starting zip deployment. This operation can take a while to complete ...
Deployment endpoint responded with status code 202
You can launch the app at http://<app-name>.azurewebsites.net
{
  "URL": "http://<app-name>.azurewebsites.net",
  "appserviceplan": "<app-service-plan-name>",
  "location": "centralus",
  "name": "<app-name>",
  "os": "linux",
  "resourcegroup": "<group-name>",
  "runtime_version": "php|8.2",
  "runtime_version_detected": "0.0",
  "sku": "FREE",
  "src_path": "//home//msangapu//myPhpApp"
}

إشعار

يقومaz webapp upالأمر بالإجراءات التالية:

  • إنشاء مجموعة موارد⁩ افتراضية.

  • إنشاء خطة App Service افتراضية.

  • إنشاء تطبيق بالاسم المحدد.

  • توزيع كل الملفات مضغوطة من دليل المشغّل الحالي، مع تمكين أتمتة الإصدار.

  • قم بتخزين المعلمات مؤقتًا محليًا في ملف .azure/config بحيث لا تحتاج إلى تحديدها مرة أخرى عند النشر لاحقًا باستخدام az webapp up أو أوامر az webapp الأخرى من مجلد المشروع. يتم استخدام القيم المخزنة مؤقتاً تلقائياً بشكل افتراضي.

استعرض للوصول إلى تطبيق المنتشرة في متصفح الويب الخاص بك في URL⁦http://<app-name>.azurewebsites.net ⁩.

يتم تشغيل التعليمات البرمجية عينة تعليمة PHP البرمجية في إحدى خدمات التطبيقات في Azure.

Screenshot of the sample app running in Azure, showing 'Hello World!'.

تهانينا! قمت بنشر تطبيق PHP الأول إلى App Service باستخدام مدخل Microsoft Azure.

3 - تحديث التطبيق وإعادة توزيعه

  1. افتح الملف، باستخدام محرر نص محليindex.phpداخل تطبيق PHP، وأجري تغييراً بسيطاً للنص داخل السلسلة المجاورة:echo

    echo "Hello Azure!";
    
  2. احفظ التغييرات التي أجريتها، ثم أعِد توزيع التطبيق باستخدام الأمر az webapp up مرة أخرى مع هذه الوسيطات:

    az webapp up --runtime "PHP:8.2" --os-type=linux
    
  3. بمجرد اكتمال النشر، ارجع إلى نافذة المستعرض التي تم فتحها أثناء خطوة الاستعراض إلى التطبيق ، وقم بتحديث الصفحة.

    Screenshot of the updated sample app running in Azure.

4 - إدارة تطبيق Azure الجديد

  1. انتقل إلى مدخل Microsoft Azure لإدارة التطبيق الذي أنشأته. ابحث وحدد خدمات التطبيق.

    Screenshot of the Azure portal with 'app services' typed in the search text box. In the results, the App Services option under Services is highlighted.

  2. حدد اسم تطبيق Azure الخاص بك.

    Screenshot of the App Services list in Azure. The name of the demo app service is highlighted.

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

    Screenshot of the App Service overview page in Azure portal. In the action bar, the Browse, Stop, Swap (disabled), Restart, and Delete button group is highlighted.

    توفر قائمة تطبيق الويب خيارات مختلفة لتهيئة التطبيق.

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

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

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

az group delete --name myResourceGroup

يستغرق هذا الأمر دقيقة للتشغيل.

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

PHP مع MySQL