إنشاء أدوار PHP للعمال والويب

نظرة عامة

هام

تم الآن إهمال Cloud Services (كلاسيكي) للعملاء الجدد وسيتم استبعادها في 31 أغسطس 2024 لجميع العملاء. ينبغي أن تستخدم عمليات النشر الجديدة نموذج النشر الجديد القائم على Azure Resource Manager ‏‏Azure Cloud Services (الدعم الموسع).

سيوضح لك هذا الدليل كيفية إنشاء أدوار ويب PHP أو العامل في بيئة تطوير Windows، واختيار إصدار معين من PHP من الإصدارات "المضمنة" المتوفرة، وتغيير تكوين PHP، وتمكين الملحقات، وأخيرا، النشر إلى Azure. كما يصف كيفية تكوين دور ويب أو عامل لاستخدام وقت تشغيل PHP (مع التكوين المخصص والملحقات) التي توفرها.

يوفر Azure ثلاثة نماذج حساب لتشغيل التطبيقات: Azure App Service وAzure Virtual Machines وAzure Cloud Services. تدعم جميع النماذج الثلاثة PHP. توفر الخدمات السحابية، التي تتضمن أدوار الويب والعاملين، النظام الأساسي كخدمة (PaaS). ضمن خدمة سحابية، يوفر دور الويب خادم ويب مخصصا خدمات معلومات الإنترنت (IIS) لاستضافة تطبيقات الويب الأمامية. يمكن أن يقوم دور العامل بتشغيل مهام غير متزامنة أو طويلة الأمد أو دائمة بغض النظر عن تفاعل المستخدم أو إدخاله.

لمزيد من المعلومات حول هذه الخيارات، راجع حساب خيارات الاستضافة التي يوفرها Azure.

تنزيل Azure SDK ل PHP

يتكون Azure SDK ل PHP من عدة مكونات. ستستخدم هذه المقالة اثنين منها: Azure PowerShell ومحاكيات Azure. يمكن تثبيت هذين المكونين عبر Microsoft Web Platform Installer. ولمزيد من المعلومات، اطلع على كيفية تثبيت Azure PowerShell وتكوينه.

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

الخطوة الأولى في إنشاء دور ويب أو عامل PHP هي إنشاء مشروع خدمة Azure. يعمل مشروع خدمة Azure كحاوية منطقية لأدوار الويب والعاملين، ويحتوي على تعريف خدمة المشروع (.csdef) وملفات تكوين الخدمة (.cscfg).

لإنشاء مشروع خدمة Azure جديد، قم بتشغيل Azure PowerShell كمسؤول، وقم بتنفيذ الأمر التالي:

PS C:\>New-AzureServiceProject myProject

سيقوم هذا الأمر بإنشاء دليل جديد (myProject) يمكنك إضافة أدوار الويب والعاملين إليه.

إضافة أدوار ويب أو عامل PHP

لإضافة دور ويب PHP إلى مشروع، قم بتشغيل الأمر التالي من داخل الدليل الجذر للمشروع:

PS C:\myProject> Add-AzurePHPWebRole roleName

بالنسبة لدور عامل، استخدم هذا الأمر:

PS C:\myProject> Add-AzurePHPWorkerRole roleName

إشعار

المعلمة roleName اختيارية. إذا تم حذفه، فسيتم إنشاء اسم الدور تلقائيا. سيكون دور الويب الأول الذي تم إنشاؤه هو WebRole1، والثاني سيكون WebRole2، وهكذا. سيكون دور العامل الأول الذي تم إنشاؤه هو WorkerRole1، والثاني سيكون WorkerRole2، وهكذا.

استخدام وقت تشغيل PHP الخاص بك

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

تكوين دور ويب لاستخدام وقت تشغيل PHP الخاص بك

لتكوين دور ويب لاستخدام وقت تشغيل PHP الذي توفره، اتبع الخطوات التالية:

  1. إنشاء مشروع خدمة Azure وإضافة دور ويب PHP كما هو موضح سابقا في هذا الموضوع.

  2. أنشئ مجلدا php في bin المجلد الموجود في الدليل الجذر لدور الويب الخاص بك، ثم أضف وقت تشغيل PHP (جميع الثنائيات وملفات التكوين والمجلدات الفرعية وما إلى ذلك) إلى php المجلد.

  3. (اختياري) إذا كان وقت تشغيل PHP يستخدم برامج تشغيل Microsoft ل PHP ل SQL Server، فستحتاج إلى تكوين دور الويب الخاص بك لتثبيت SQL Server Native Client 2012 عند توفيره. للقيام بذلك، أضف المثبت sqlncli.msi x64 إلى bin المجلد في الدليل الجذر لدور الويب الخاص بك. سيقوم البرنامج النصي لبدء التشغيل الموضح في الخطوة التالية بتشغيل المثبت بصمت عند توفير الدور. إذا لم يستخدم وقت تشغيل PHP برامج تشغيل Microsoft ل PHP ل SQL Server، يمكنك إزالة السطر التالي من البرنامج النصي الموضح في الخطوة التالية:

    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
  4. حدد مهمة بدء تشغيل تقوم بتكوين خدمات معلومات الإنترنت (IIS) لاستخدام وقت تشغيل PHP لمعالجة طلبات .php الصفحات. للقيام بذلك، افتح setup_web.cmd الملف (في bin ملف الدليل الجذر لدور الويب الخاص بك) في محرر نص واستبدل محتوياته بالبرنامج النصي التالي:

    @ECHO ON
    cd "%~dp0"
    
    if "%EMULATED%"=="true" exit /b 0
    
    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
    SET PHP_FULL_PATH=%~dp0php\php-cgi.exe
    SET NEW_PATH=%PATH%;%RoleRoot%\base\x86
    
    %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%PHP_FULL_PATH%',maxInstances='12',idleTimeout='60000',activityTimeout='3600',requestTimeout='60000',instanceMaxRequests='10000',protocol='NamedPipe',flushNamedPipe='False']" /commit:apphost
    %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%PHP_FULL_PATH%'].environmentVariables.[name='PATH',value='%NEW_PATH%']" /commit:apphost
    %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%PHP_FULL_PATH%'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']" /commit:apphost
    %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/handlers /+"[name='PHP',path='*.php',verb='GET,HEAD,POST',modules='FastCgiModule',scriptProcessor='%PHP_FULL_PATH%',resourceType='Either',requireAccess='Script']" /commit:apphost
    %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /"[fullPath='%PHP_FULL_PATH%'].queueLength:50000"
    
  5. أضف ملفات التطبيق إلى الدليل الجذر لدور الويب الخاص بك. سيكون هذا الدليل الجذر لخادم الويب.

  6. نشر التطبيق الخاص بك كما هو موضح في قسم نشر التطبيق الخاص بك أدناه.

إشعار

download.ps1 يمكن حذف البرنامج النصي (في bin مجلد الدليل الجذر لدور الويب) بعد اتباع الخطوات الموضحة أعلاه لاستخدام وقت تشغيل PHP الخاص بك.

تكوين دور عامل لاستخدام وقت تشغيل PHP الخاص بك

لتكوين دور عامل لاستخدام وقت تشغيل PHP الذي توفره، اتبع الخطوات التالية:

  1. إنشاء مشروع خدمة Azure وإضافة دور عامل PHP كما هو موضح سابقا في هذا الموضوع.

  2. أنشئ مجلدا php في الدليل الجذر لدور العامل، ثم أضف وقت تشغيل PHP (جميع الثنائيات وملفات التكوين والمجلدات الفرعية وما إلى ذلك) إلى php المجلد.

  3. (اختياري) إذا كان وقت تشغيل PHP يستخدم برامج تشغيل Microsoft ل PHP ل SQL Server، فستحتاج إلى تكوين دور العامل لتثبيت SQL Server Native Client 2012 عند توفيره. للقيام بذلك، أضف المثبت sqlncli.msi x64 إلى الدليل الجذر لدور العامل. سيقوم البرنامج النصي لبدء التشغيل الموضح في الخطوة التالية بتشغيل المثبت بصمت عند توفير الدور. إذا لم يستخدم وقت تشغيل PHP برامج تشغيل Microsoft ل PHP ل SQL Server، يمكنك إزالة السطر التالي من البرنامج النصي الموضح في الخطوة التالية:

    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
  4. حدد مهمة بدء تشغيل تضيف php.exe القابل للتنفيذ إلى متغير بيئة PATH لدور العامل عند توفير الدور. للقيام بذلك، افتح setup_worker.cmd الملف (في الدليل الجذر لدور العامل) في محرر نص واستبدل محتوياته بالبرنامج النصي التالي:

    @echo on
    
    cd "%~dp0"
    
    echo Granting permissions for Network Service to the web root directory...
    icacls ..\ /grant "Network Service":(OI)(CI)W
    if %ERRORLEVEL% neq 0 goto error
    echo OK
    
    if "%EMULATED%"=="true" exit /b 0
    
    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
    setx Path "%PATH%;%~dp0php" /M
    
    if %ERRORLEVEL% neq 0 goto error
    
    echo SUCCESS
    exit /b 0
    
    :error
    
    echo FAILED
    exit /b -1
    
  5. أضف ملفات التطبيق إلى الدليل الجذر لدور العامل الخاص بك.

  6. نشر التطبيق الخاص بك كما هو موضح في قسم نشر التطبيق الخاص بك أدناه.

تشغيل التطبيق الخاص بك في محاكيات الحوسبة والتخزين

توفر محاكيات Azure بيئة محلية يمكنك من خلالها اختبار تطبيق Azure قبل نشره على السحابة. هناك بعض الاختلافات بين المحاكيات وبيئة Azure. لفهم هذا بشكل أفضل، راجع استخدام Azure Storage Emulator للتطوير والاختبار.

لاحظ أنه يجب أن يكون لديك PHP مثبتا محليا لاستخدام محاكي الحوسبة. سيستخدم محاكي الحوسبة تثبيت PHP المحلي لتشغيل التطبيق الخاص بك.

لتشغيل مشروعك في المحاكيات، قم بتنفيذ الأمر التالي من الدليل الجذر لمشروعك:

PS C:\MyProject> Start-AzureEmulator

سترى مخرجات مشابهة لهذا:

Creating local package...
Starting Emulator...
Role is running at http://127.0.0.1:81
Started

يمكنك مشاهدة التطبيق الخاص بك قيد التشغيل في المحاكي عن طريق فتح مستعرض ويب والاستعراض إلى العنوان المحلي الموضح في الإخراج (http://127.0.0.1:81 في مثال الإخراج أعلاه).

لإيقاف المحاكيات، نفذ هذا الأمر:

PS C:\MyProject> Stop-AzureEmulator

نشر التطبيق الخاص بك

لنشر التطبيق الخاص بك، تحتاج أولا إلى استيراد إعدادات النشر باستخدام Import-AzurePublish الإعدادات File cmdlet. ثم يمكنك نشر التطبيق الخاص بك باستخدام Publish-AzureServiceProject cmdlet. للحصول على معلومات حول تسجيل الدخول، راجع كيفية تثبيت Azure PowerShell وتكوينه.

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

لمزيد من المعلومات، راجع مركز مطوري PHP.