PHP-web- en -werkrollen maken

Overzicht

Belangrijk

Cloud Services (klassiek) is nu afgeschaft voor nieuwe klanten en wordt op 31 augustus 2024 buiten gebruik gesteld voor alle klanten. Nieuwe implementaties moeten gebruikmaken van het nieuwe op Azure Resource Manager gebaseerde implementatiemodel Azure Cloud Services (uitgebreide ondersteuning).

In deze handleiding ziet u hoe u PHP-web- of werkrollen maakt in een Windows-ontwikkelomgeving, een specifieke versie van PHP kiest op basis van de beschikbare ingebouwde versies, de PHP-configuratie wijzigt, extensies inschakelt en ten slotte implementeert in Azure. Ook wordt beschreven hoe u een web- of werkrol configureert voor het gebruik van een PHP-runtime (met aangepaste configuratie en extensies) die u opgeeft.

Azure biedt drie rekenmodellen voor het uitvoeren van toepassingen: Azure-app Service, Azure Virtual Machines en Azure Cloud Services. Alle drie de modellen ondersteunen PHP. Cloud Services, waaronder web- en werkrollen, biedt PaaS (Platform as a Service). Binnen een cloudservice biedt een webrol een toegewezen IIS-webserver (Internet Information Services) voor het hosten van front-endwebtoepassingen. Een werkrol kan asynchrone, langlopende of permanente taken uitvoeren, onafhankelijk van gebruikersinteractie of -invoer.

Zie Compute-hostingopties van Azure voor meer informatie over deze opties.

De Azure SDK voor PHP downloaden

De Azure SDK voor PHP bestaat uit verschillende onderdelen. In dit artikel worden er twee gebruikt: Azure PowerShell en de Azure-emulators. Deze twee onderdelen kunnen worden geïnstalleerd via het microsoft-webplatforminstallatieprogramma. Zie Azure PowerShell installeren en configureren voor meer informatie.

Een Cloud Services-project maken

De eerste stap bij het maken van een PHP-web- of werkrol is het maken van een Azure Service-project. een Azure Service-project fungeert als een logische container voor web- en werkrollen en bevat de servicedefinitiebestanden (.csdef) en serviceconfiguratiebestanden (.cscfg).

Als u een nieuw Azure Service-project wilt maken, voert u Azure PowerShell uit als beheerder en voert u de volgende opdracht uit:

PS C:\>New-AzureServiceProject myProject

Met deze opdracht maakt u een nieuwe map (myProject) waaraan u web- en werkrollen kunt toevoegen.

PHP-web- of werkrollen toevoegen

Als u een PHP-webrol wilt toevoegen aan een project, voert u de volgende opdracht uit vanuit de hoofdmap van het project:

PS C:\myProject> Add-AzurePHPWebRole roleName

Gebruik deze opdracht voor een werkrol:

PS C:\myProject> Add-AzurePHPWorkerRole roleName

Notitie

De roleName parameter is optioneel. Als u deze weglaat, wordt de rolnaam automatisch gegenereerd. De eerste webrol die is gemaakt, is WebRole1de tweede, WebRole2enzovoort. De eerste werkrol die is gemaakt, is WorkerRole1de tweede, WorkerRole2enzovoort.

Uw eigen PHP-runtime gebruiken

In sommige gevallen kunt u uw eigen PHP-runtime opgeven in plaats van een ingebouwde PHP-runtime te selecteren en deze te configureren zoals hierboven beschreven. U kunt bijvoorbeeld dezelfde PHP-runtime gebruiken in een web- of werkrol die u in uw ontwikkelomgeving gebruikt. Dit maakt het eenvoudiger om ervoor te zorgen dat de toepassing het gedrag in uw productieomgeving niet wijzigt.

Een webrol configureren voor het gebruik van uw eigen PHP-runtime

Voer de volgende stappen uit om een webrol te configureren voor het gebruik van een PHP-runtime die u opgeeft:

  1. Maak een Azure Service-project en voeg een PHP-webrol toe, zoals eerder in dit onderwerp is beschreven.

  2. Maak een php map in de map die zich in de bin hoofdmap van uw webrol bevindt en voeg vervolgens uw PHP-runtime (alle binaire bestanden, configuratiebestanden, submappen, enzovoort) toe aan de php map.

  3. (OPTIONEEL) Als uw PHP-runtime gebruikmaakt van de Microsoft-stuurprogramma's voor PHP voor SQL Server, moet u uw webrol configureren om SQL Server Native Client 2012 te installeren wanneer deze wordt ingericht. Hiervoor voegt u het sqlncli.msi x64-installatieprogramma toe aan de map in de bin hoofdmap van uw webrol. Het opstartscript dat in de volgende stap wordt beschreven, voert het installatieprogramma op de achtergrond uit wanneer de rol is ingericht. Als uw PHP-runtime de Microsoft-stuurprogramma's voor PHP voor SQL Server niet gebruikt, kunt u de volgende regel verwijderen uit het script dat in de volgende stap wordt weergegeven:

    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
  4. Definieer een opstarttaak waarmee IIS (Internet Information Services) wordt geconfigureerd voor het gebruik van uw PHP-runtime voor het verwerken van aanvragen voor .php pagina's. Hiervoor opent u het setup_web.cmd bestand (in het bestand van de bin hoofdmap van uw webrol) in een teksteditor en vervangt u de inhoud door het volgende script:

    @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. Voeg uw toepassingsbestanden toe aan de hoofdmap van uw webrol. Dit is de hoofdmap van de webserver.

  6. Publiceer uw toepassing zoals beschreven in de sectie Uw toepassing publiceren hieronder.

Notitie

Het download.ps1 script (in de map van de bin hoofdmap van de webrol) kan worden verwijderd nadat u de hierboven beschreven stappen hebt gevolgd voor het gebruik van uw eigen PHP-runtime.

Een werkrol configureren voor het gebruik van uw eigen PHP-runtime

Voer de volgende stappen uit om een werkrol te configureren voor het gebruik van een PHP-runtime die u opgeeft:

  1. Maak een Azure Service-project en voeg een PHP-werkrol toe, zoals eerder in dit onderwerp is beschreven.

  2. Maak een php map in de hoofdmap van de werkrol en voeg vervolgens uw PHP-runtime (alle binaire bestanden, configuratiebestanden, submappen, enzovoort) toe aan de php map.

  3. (OPTIONEEL) Als uw PHP-runtime Gebruikmaakt van Microsoft-stuurprogramma's voor PHP voor SQL Server, moet u uw werkrol configureren om SQL Server Native Client 2012 te installeren wanneer deze is ingericht. Hiervoor voegt u het sqlncli.msi x64-installatieprogramma toe aan de hoofdmap van de werkrol. Het opstartscript dat in de volgende stap wordt beschreven, voert het installatieprogramma op de achtergrond uit wanneer de rol is ingericht. Als uw PHP-runtime de Microsoft-stuurprogramma's voor PHP voor SQL Server niet gebruikt, kunt u de volgende regel verwijderen uit het script dat in de volgende stap wordt weergegeven:

    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
  4. Definieer een opstarttaak waarmee het php.exe uitvoerbare bestand wordt toegevoegd aan de omgevingsvariabele PATH van de werkrol wanneer de rol wordt ingericht. Hiervoor opent u het setup_worker.cmd bestand (in de hoofdmap van de werkrol) in een teksteditor en vervangt u de inhoud door het volgende script:

    @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. Voeg uw toepassingsbestanden toe aan de hoofdmap van uw werkrol.

  6. Publiceer uw toepassing zoals beschreven in de sectie Uw toepassing publiceren hieronder.

Uw toepassing uitvoeren in de reken- en opslagemulators

De Azure-emulators bieden een lokale omgeving waarin u uw Azure-toepassing kunt testen voordat u deze in de cloud implementeert. Er zijn enkele verschillen tussen de emulators en de Azure-omgeving. Zie De Azure Storage Emulator gebruiken voor ontwikkeling en testen om dit beter te begrijpen.

Houd er rekening mee dat PHP lokaal moet zijn geïnstalleerd om de rekenemulator te kunnen gebruiken. De rekenemulator gebruikt uw lokale PHP-installatie om uw toepassing uit te voeren.

Als u uw project in de emulators wilt uitvoeren, voert u de volgende opdracht uit vanuit de hoofdmap van uw project:

PS C:\MyProject> Start-AzureEmulator

De uitvoer ziet er ongeveer als volgt uit:

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

U kunt uw toepassing zien die wordt uitgevoerd in de emulator door een webbrowser te openen en naar het lokale adres te bladeren dat wordt weergegeven in de uitvoer (http://127.0.0.1:81 in de bovenstaande voorbeelduitvoer).

Voer deze opdracht uit om de emulators te stoppen:

PS C:\MyProject> Stop-AzureEmulator

Uw toepassing publiceren

Als u uw toepassing wilt publiceren, moet u eerst uw publicatie-instellingen importeren met behulp van de cmdlet Import-AzurePublish Instellingen File. Vervolgens kunt u uw toepassing publiceren met behulp van de cmdlet Publish-AzureServiceProject . Zie Azure PowerShell installeren en configureren voor meer informatie over aanmelden.

Volgende stappen

Zie het PHP Developer Center voor meer informatie.