Erstellen von PHP-Web- und Workerrollen
Überblick
Wichtig
Cloud Services (klassisch) ist jetzt ab dem 1. September 2024 für alle Kunden veraltet. Alle vorhandenen ausgeführten Bereitstellungen werden beendet und von Microsoft heruntergefahren, und die Daten gehen ab Oktober 2024 dauerhaft verloren. In neuen Bereitstellungen sollte das neue auf Azure Resource Manager basierende Bereitstellungsmodell für Azure Cloud Services (erweiterter Support) verwendet werden.
In diesem Leitfaden erfahren Sie, wie Sie PHP-Web- oder Workerrollen in einer Windows-Entwicklungsumgebung erstellen, eine bestimmte Version von PHP aus den "integrierten" verfügbaren Versionen auswählen, die PHP-Konfiguration ändern, Erweiterungen aktivieren und diese schließlich in Azure bereitstellen. Es wird zudem beschrieben, wie Sie eine Web- oder Workerrolle für die Nutzung einer PHP-Laufzeit konfigurieren (mit benutzerdefinierter Konfiguration und Erweiterungen), die Sie bereitstellen.
Azure bietet drei Computemodelle für das Ausführen von Anwendungen: Azure App Service, Azure Virtual Machines und Azure Cloud Services. Alle drei Modell unterstützen PHP. Cloud Services enthält Web- und Workerrollen und bietet Platform as a Service (PaaS). In einem Clouddienst stellt eine Webrolle einen dedizierten Internet Information Services (IIS)-Webserver zum Hosten von Front-End-Webanwendungen bereit. Eine Workerrolle kann asynchrone, langfristige oder fortwährende Aufgaben ausführen, die von einer Benutzerinteraktion oder -eingabe unabhängig sind.
Weitere Informationen zu diesen Optionen finden Sie unter Computehostingoptionen in Azure.
Herunterladen des Azure SDK für PHP
Das Azure SDK für PHP besteht aus verschiedenen Komponenten. In diesem Artikel werden zwei Komponenten verwendet: Azure PowerShell und die Azure-Emulatoren. Diese beiden Komponenten können über den Microsoft-Webplattform-Installer installiert werden. Weitere Informationen finden Sie unter Installieren und Konfigurieren von Azure PowerShell.
Erstellen eines Cloud-Dienst-Projekts
Der erste Schritt bei der Erstellung einer PHP-Web- oder -Workerrolle ist die Erstellung eines Azure-Dienstprojekts. Ein Azure-Dienstprojekt dient als logischer Container für Web- und Workerrollen und enthält das Azure-Dienstdefinitionsschema (CSDEF-Datei) und das Azure-Dienstkonfigurationsschema (CSCFG-Datei) des Projekts.
Führen Sie Azure PowerShell als Administrator sowie folgenden Befehl aus, um ein neues Azure-Dienstprojekt zu erstellen:
PS C:\>New-AzureServiceProject myProject
Durch diesen Befehl wird ein neues Verzeichnis (myProject
) erstellt, dem Sie Web- und Workerrollen hinzufügen können.
Hinzufügen von PHP-Web- und Workerrollen
Führen Sie folgenden Befehl im Stammverzeichnis des Projekts aus, um eine PHP-Webrolle zu einem Projekt hinzuzufügen:
PS C:\myProject> Add-AzurePHPWebRole roleName
Für eine Workerrolle verwenden Sie diesen Befehl:
PS C:\myProject> Add-AzurePHPWorkerRole roleName
Hinweis
Das roleName
ist optional. Wenn er nicht angegeben wird, wird automatisch ein Name generiert. Die erste erstellte Webrolle heißt WebRole1
, die zweite WebRole2
usw. Die erste erstellte Workerrolle heißt WorkerRole1
, die zweite WorkerRole2
usw.
Verwenden Ihrer eigenen PHP-Laufzeit
In einigen Fällen möchten Sie evtl. eine eigene PHP-Laufzeit angeben, anstatt eine integrierte PHP-Laufzeit auszuwählen und diese wie vorher beschrieben zu konfigurieren. Sie können beispielsweise dieselbe PHP-Laufzeit in einer Web- oder Workerrolle verwenden, die Sie auch in Ihrer Entwicklungsumgebung verwenden. Dieser Prozess erleichtert die Sicherstellung, dass das Anwendungsverhalten in Ihrer Produktionsumgebung gleich bleibt.
Konfigurieren einer Webrolle für die Verwendung Ihrer eigenen PHP-Laufzeit
Führen Sie die folgenden Schritte aus, um eine Webrolle für die Verwendung einer von Ihnen angegebenen PHP-Laufzeit zu konfigurieren.
Erstellen Sie ein Azure-Dienstprojekt, und fügen Sie eine PHP-Webrolle hinzu, wie weiter oben in diesem Artikel beschrieben.
Erstellen Sie einen Ordner
php
im Ordnerbin
, der sich im Stammverzeichnis der Webrolle befindet, und fügen Sie dann die PHP-Laufzeit (alle Binärdateien, Konfigurationsdateien, Unterordner usw.) dem Ordnerphp
hinzu.(OPTIONAL) Wenn Ihre PHP-Runtime Microsoft-Treiber für PHP für SQL Server verwendet, müssen Sie die Webrolle bei der Bereitstellung für die Installation von SQL Server Native Client 2012 konfigurieren. Fügen Sie hierzu den sqlncli.msi x64-Installer dem Ordner
bin
im Stammverzeichnis der Webrolle hinzu. Das im nächsten Schritt beschriebene Startskript wird das Installationsprogramm ausführen, wenn die Rolle bereitgestellt wird. Wenn Ihre PHP-Laufzeit nicht Microsoft-Treiber für PHP für SQL Server verwendet, können Sie folgende Zeile aus dem im nächsten Schritt gezeigten Skript entfernen:msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
Definieren Sie eine Startaufgabe, die Internet Information Services (IIS) für die Verwendung Ihrer PHP-Runtime konfiguriert, um Anforderungen für
.php
-Seiten zu behandeln. Öffnen Sie hierzu die Dateisetup_web.cmd
(in der Dateibin
des Stammverzeichnisses Ihrer Webrolle) in einem Texteditor, und ersetzen Sie den Inhalt durch folgendes 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"
Fügen Sie Ihre Anwendungsdateien zum Stammverzeichnis Ihrer Webrolle hinzu, das zum Stammverzeichnis des Webservers wird.
Veröffentlichen Sie die Anwendung entsprechend der Beschreibung im Abschnitt Veröffentlichen der Anwendung.
Hinweis
Das Skript download.ps1
(im Ordner bin
des Stammverzeichnisses der Webrolle) kann gelöscht werden, nachdem Sie die oben beschriebenen Schritte für die Verwendung Ihrer eigenen PHP-Laufzeit ausgeführt haben.
Konfigurieren einer Workerrolle für die Verwendung Ihrer eigenen PHP-Laufzeit
Führen Sie die folgenden Schritte aus, um eine Workerrolle für die Verwendung einer von Ihnen angegebenen PHP-Laufzeit zu konfigurieren.
Erstellen Sie ein Azure-Dienstprojekt, und fügen Sie eine PHP-Workerrolle hinzu, wie weiter oben in diesem Artikel beschrieben.
Erstellen Sie einen Ordner namens
php
im Stammverzeichnis der Workerrolle, und fügen Sie dann Ihre PHP-Laufzeit (alle Binärdateien, Konfigurationsdateien, Unterordner usw.) dem Ordnerphp
hinzu.(OPTIONAL) Wenn Ihre PHP-Runtime Microsoft-Treiber für PHP für SQL Server verwendet, müssen Sie die Workerrolle bei der Bereitstellung für die Installation von SQL Server Native Client 2012 konfigurieren. Fügen Sie dazu den sqlncli.msi x64-Installer dem Stammverzeichnis der Workerrolle hinzu. Das im nächsten Schritt beschriebene Startskript wird das Installationsprogramm ausführen, wenn die Rolle bereitgestellt wird. Wenn Ihre PHP-Laufzeit nicht Microsoft-Treiber für PHP für SQL Server verwendet, können Sie folgende Zeile aus dem im nächsten Schritt gezeigten Skript entfernen:
msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
Definieren Sie eine Startaufgabe, die die ausführbare Datei
php.exe
bei der Rollenbereitstellung zur PATH-Umgebungsvariable der Workerrolle hinzufügt. Öffnen Sie dazu die Dateisetup_worker.cmd
(im Stammverzeichnis der Workerrolle) in einem Texteditor, und ersetzen Sie den Inhalt durch folgendes 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
Fügen Sie die Anwendungsdateien zum Stammverzeichnis Ihrer Workerrolle hinzu.
Veröffentlichen Sie die Anwendung entsprechend der Beschreibung im Abschnitt Veröffentlichen der Anwendung.
Ausführen der Anwendung in den Server- und Speicheremulatoren
Die Azure-Emulatoren bieten eine lokale Umgebung, in der Sie Ihre Azure-Anwendung testen können, bevor Sie sie in der Cloud bereitstellen. Es gibt einige Unterschiede zwischen den Emulatoren und der Azure-Umgebung. Zum besseren Verständnis dieser Unterschiede finden Sie weitere Informationen unter Einsatz des Azure-Speicheremulators für Entwicklung und Tests.
PHP muss lokal installiert sein, um den Serveremulator nutzen zu können. Der Serveremulator verwendet Ihre lokale PHP-Installation, um die Anwendung auszuführen.
Führen Sie folgenden Befehl im Stammverzeichnis des Projekts aus, um das Projekt in den Emulatoren auszuführen:
PS C:\MyProject> Start-AzureEmulator
Die folgende Beispielausgabe ähnelt dem, was Sie sehen sollten:
Creating local package...
Starting Emulator...
Role is running at http://127.0.0.1:81
Started
Wenn Sie einen Webbrowser öffnen und zur lokalen Adresse in der Ausgabe (http://127.0.0.1:81
in der vorher gezeigten Beispielausgabe) navigieren, können Sie im Emulator sehen, wie die Anwendung ausgeführt wird.
Führen Sie folgenden Befehl aus, um die Emulatoren zu stoppen:
PS C:\MyProject> Stop-AzureEmulator
Veröffentlichen der Anwendung
Um die Anwendung zu veröffentlichen, müssen Sie zunächst die Veröffentlichungseinstellungen mithilfe des Cmdlets Import-AzurePublishSettingsFile importieren. Anschließend können Sie die Anwendung mithilfe des Cmdlets Publish-AzureServiceProject veröffentlichen. Informationen zum Anmelden finden Sie unter Installieren und Konfigurieren von Azure PowerShell.
Nächste Schritte
Weitere Informationen finden Sie im PHP Developer Center.