Skapa PHP webb- och arbetsroller

Översikt

Viktigt!

Cloud Services (klassisk) är nu inaktuellt för nya kunder och kommer att dras tillbaka den 31 augusti 2024 för alla kunder. Nya distributioner bör använda den nya Azure Resource Manager-baserade distributionsmodellen Azure Cloud Services (utökad support).

Den här guiden visar hur du skapar PHP-webb- eller arbetsroller i en Windows-utvecklingsmiljö, väljer en specifik version av PHP från de "inbyggda" versioner som är tillgängliga, ändrar PHP-konfigurationen, aktiverar tillägg och slutligen distribuerar till Azure. Den beskriver också hur du konfigurerar en webb- eller arbetsroll för att använda en PHP-körning (med anpassad konfiguration och tillägg) som du anger.

Azure tillhandahåller tre beräkningsmodeller för program som körs: Azure App Service, Azure Virtual Machines och Azure Cloud Services. Alla tre modellerna stöder PHP. Cloud Services, som innehåller webb- och arbetsroller, tillhandahåller paaS (platform as a service). I en molntjänst tillhandahåller en webbroll en dedikerad IIS-webbserver (Internet Information Services) som värd för klientwebbprogram. En arbetsroll kan köra asynkrona, långvariga eller eviga uppgifter oberoende av användarinteraktion eller indata.

Mer information om de här alternativen finns i Beräkningsvärdalternativ som tillhandahålls av Azure.

Ladda ner Azure SDK för PHP

Azure SDK för PHP består av flera komponenter. Den här artikeln använder två av dem: Azure PowerShell och Azure-emulatorerna. Dessa två komponenter kan installeras via Installationsprogrammet för Microsoft Web Platform. Mer information finns i Installera och konfigurera Azure PowerShell.

Skapa ett Cloud Services-projekt

Det första steget i att skapa en PHP-webb- eller arbetsroll är att skapa ett Azure Service-projekt. ett Azure Service-projekt fungerar som en logisk container för webb- och arbetsroller och innehåller projektets tjänstdefinitionsfiler (.csdef) och tjänstkonfiguration (.cscfg ).

Om du vill skapa ett nytt Azure Service-projekt kör du Azure PowerShell som administratör och kör följande kommando:

PS C:\>New-AzureServiceProject myProject

Det här kommandot skapar en ny katalog (myProject) som du kan lägga till webb- och arbetsroller i.

Lägga till PHP-webb- eller arbetsroller

Om du vill lägga till en PHP-webbroll i ett projekt kör du följande kommando inifrån projektets rotkatalog:

PS C:\myProject> Add-AzurePHPWebRole roleName

Använd det här kommandot för en arbetsroll:

PS C:\myProject> Add-AzurePHPWorkerRole roleName

Kommentar

Parametern roleName är valfri. Om det utelämnas genereras rollnamnet automatiskt. Den första webbrollen som skapas blir WebRole1, den andra blir WebRole2, och så vidare. Den första arbetsrollen som skapas blir WorkerRole1, den andra blir WorkerRole2och så vidare.

Använda din egen PHP-körning

I vissa fall kanske du vill tillhandahålla din egen PHP-körning i stället för att välja en inbyggd PHP-körning och konfigurera den enligt beskrivningen ovan. Du kan till exempel använda samma PHP-körning i en webb- eller arbetsroll som du använder i utvecklingsmiljön. Det gör det enklare att se till att programmet inte ändrar beteendet i produktionsmiljön.

Konfigurera en webbroll så att den använder din egen PHP-körning

Följ dessa steg för att konfigurera en webbroll att använda en PHP-körning som du anger:

  1. Skapa ett Azure Service-projekt och lägg till en PHP-webbroll enligt beskrivningen tidigare i det här avsnittet.

  2. Skapa en php mapp i bin mappen som finns i webbrollens rotkatalog och lägg sedan till PHP-körningen (alla binärfiler, konfigurationsfiler, undermappar osv.) i php mappen.

  3. (VALFRITT) Om PHP-körningen använder Microsoft-drivrutiner för PHP för SQL Server måste du konfigurera webbrollen för att installera SQL Server Native Client 2012 när den etableras. Det gör du genom att lägga till installationsprogrammetbin sqlncli.msi x64 i mappen i webbrollens rotkatalog. Startskriptet som beskrivs i nästa steg kör installationsprogrammet tyst när rollen etableras. Om PHP-körningen inte använder Microsoft-drivrutiner för PHP för SQL Server kan du ta bort följande rad från skriptet som visas i nästa steg:

    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
  4. Definiera en startuppgift som konfigurerar IIS (Internet Information Services) för att använda PHP-körningen för att hantera begäranden för .php sidor. Det gör du genom att öppna setup_web.cmd filen (i filen i webbrollens bin rotkatalog) i en textredigerare och ersätta dess innehåll med följande skript:

    @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. Lägg till dina programfiler i webbrollens rotkatalog. Det här är webbserverns rotkatalog.

  6. Publicera ditt program enligt beskrivningen i avsnittet Publicera ditt program nedan.

Kommentar

Skriptet download.ps1 (i mappen för bin webbrollens rotkatalog) kan tas bort när du har följt stegen ovan för att använda din egen PHP-körning.

Konfigurera en arbetsroll för att använda din egen PHP-körning

Så här konfigurerar du en arbetsroll för att använda en PHP-körning som du anger:

  1. Skapa ett Azure Service-projekt och lägg till en PHP-arbetsroll enligt beskrivningen tidigare i det här avsnittet.

  2. Skapa en php mapp i arbetsrollens rotkatalog och lägg sedan till PHP-körningen (alla binärfiler, konfigurationsfiler, undermappar osv.) i php mappen.

  3. (VALFRITT) Om PHP-körningen använder Microsoft-drivrutiner för PHP för SQL Server måste du konfigurera arbetsrollen för att installera SQL Server Native Client 2012 när den etableras. Det gör du genom att lägga till installationsprogrammet sqlncli.msi x64 i arbetsrollens rotkatalog. Startskriptet som beskrivs i nästa steg kör installationsprogrammet tyst när rollen etableras. Om PHP-körningen inte använder Microsoft-drivrutiner för PHP för SQL Server kan du ta bort följande rad från skriptet som visas i nästa steg:

    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
  4. Definiera en startuppgift som lägger till den php.exe körbara filen i arbetsrollens PATH-miljövariabel när rollen etableras. Det gör du genom att öppna setup_worker.cmd filen (i arbetsrollens rotkatalog) i en textredigerare och ersätta dess innehåll med följande skript:

    @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. Lägg till dina programfiler i arbetsrollens rotkatalog.

  6. Publicera ditt program enligt beskrivningen i avsnittet Publicera ditt program nedan.

Kör ditt program i beräknings- och lagringsemulatorerna

Azure-emulatorerna tillhandahåller en lokal miljö där du kan testa ditt Azure-program innan du distribuerar det till molnet. Det finns vissa skillnader mellan emulatorerna och Azure-miljön. Mer information om detta finns i Använda Azure Storage-emulatorn för utveckling och testning.

Observera att du måste ha PHP installerat lokalt för att kunna använda beräkningsemulatorn. Beräkningsemulatorn använder din lokala PHP-installation för att köra programmet.

Kör följande kommando från projektets rotkatalog för att köra projektet i emulatorerna:

PS C:\MyProject> Start-AzureEmulator

Utdata ser ut ungefär så här:

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

Du kan se att programmet körs i emulatorn genom att öppna en webbläsare och bläddra till den lokala adressen som visas i utdata (http://127.0.0.1:81 i exemplet ovan).

Om du vill stoppa emulatorerna kör du det här kommandot:

PS C:\MyProject> Stop-AzureEmulator

Publicera programmet

Om du vill publicera programmet måste du först importera publiceringsinställningarna med hjälp av cmdleten Import-AzurePublish Inställningar File. Sedan kan du publicera ditt program med hjälp av cmdleten Publish-AzureServiceProject . Information om hur du loggar in finns i Installera och konfigurera Azure PowerShell.

Nästa steg

Mer information finns i PHP Developer Center.