Erstellen von PHP-Web- und WorkerrollenCreate PHP web and worker roles

ÜbersichtOverview

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.This guide will show you how to create PHP web or worker roles in a Windows development environment, choose a specific version of PHP from the "built-in" versions available, change the PHP configuration, enable extensions, and finally, deploy to Azure. 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.It also describes how to configure a web or worker role to use a PHP runtime (with custom configuration and extensions) that you provide.

Azure bietet drei Computemodelle für das Ausführen von Anwendungen: Azure App Service, Azure Virtual Machines und Azure Cloud Services.Azure provides three compute models for running applications: Azure App Service, Azure Virtual Machines, and Azure Cloud Services. Alle drei Modell unterstützen PHP.All three models support PHP. Cloud Services enthält Web- und Workerrollen und bietet Platform as a Service (PaaS) .Cloud Services, which includes web and worker roles, provides 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.Within a cloud service, a web role provides a dedicated Internet Information Services (IIS) web server to host front-end web applications. Eine Workerrolle kann asynchrone, langfristige oder fortwährende Aufgaben ausführen, die von einer Benutzerinteraktion oder -eingabe unabhängig sind.A worker role can run asynchronous, long-running or perpetual tasks independent of user interaction or input.

Weitere Informationen zu diesen Optionen finden Sie unter Computehostingoptionen in Azure.For more information about these options, see Compute hosting options provided by Azure.

Herunterladen des Azure SDK für PHPDownload the Azure SDK for PHP

Das Azure SDK für PHP besteht aus verschiedenen Komponenten.The Azure SDK for PHP consists of several components. In diesem Artikel werden zwei Komponenten verwendet: Azure PowerShell und die Azure-Emulatoren.This article will use two of them: Azure PowerShell and the Azure emulators. Diese beiden Komponenten können über den Microsoft-Webplattform-Installer installiert werden.These two components can be installed via the Microsoft Web Platform Installer. Weitere Informationen finden Sie unter Installieren und Konfigurieren von Azure PowerShell.For more information, see How to install and configure Azure PowerShell.

Erstellen eines Cloud-Dienst-ProjektsCreate a Cloud Services project

Der erste Schritt bei der Erstellung einer PHP-Web- oder -Workerrolle ist die Erstellung eines Azure-Dienstprojekts.The first step in creating a PHP web or worker role is to create an Azure Service project. 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.an Azure Service project serves as a logical container for web and worker roles, and it contains the project's service definition (.csdef) and service configuration (.cscfg) files.

Führen Sie Azure PowerShell als Administrator sowie folgenden Befehl aus, um ein neues Azure-Dienstprojekt zu erstellen:To create a new Azure Service project, run Azure PowerShell as an administrator, and execute the following command:

PS C:\>New-AzureServiceProject myProject

Durch diesen Befehl wird ein neues Verzeichnis (myProject) erstellt, dem Sie Web- und Workerrollen hinzufügen können.This command will create a new directory (myProject) to which you can add web and worker roles.

Hinzufügen von PHP-Web- und WorkerrollenAdd PHP web or worker roles

Führen Sie folgenden Befehl im Stammverzeichnis des Projekts aus, um eine PHP-Webrolle zu einem Projekt hinzuzufügen:To add a PHP web role to a project, run the following command from within the project's root directory:

PS C:\myProject> Add-AzurePHPWebRole roleName

Für eine Workerrolle verwenden Sie diesen Befehl:For a worker role, use this command:

PS C:\myProject> Add-AzurePHPWorkerRole roleName

Hinweis

Das roleName ist optional.The roleName parameter is optional. Wenn er nicht angegeben wird, wird automatisch ein Name generiert.If it is omitted, the role name will be automatically generated. Die erste erstellte Webrolle heißt WebRole1, die zweite WebRole2 usw.The first web role created will be WebRole1, the second will be WebRole2, and so on. Die erste erstellte Workerrolle heißt WorkerRole1, die zweite WorkerRole2 usw.The first worker role created will be WorkerRole1, the second will be WorkerRole2, and so on.

Verwenden Ihrer eigenen PHP-LaufzeitUse your own PHP runtime

In einigen Fällen möchten Sie evtl. eine eigene PHP-Laufzeit angeben, anstatt eine integrierte PHP-Laufzeit auszuwählen und diese wie oben beschrieben zu konfigurieren.In some cases, instead of selecting a built-in PHP runtime and configuring it as described above, you may want to provide your own PHP runtime. Sie können beispielsweise dieselbe PHP-Laufzeit in einer Web- oder Workerrolle verwenden, die Sie auch in Ihrer Entwicklungsumgebung verwenden.For example, you can use the same PHP runtime in a web or worker role that you use in your development environment. So lässt sich leichter sicherstellen, dass die Anwendung ihr Verhalten in der Produktionsumgebung nicht ändert.This makes it easier to ensure that the application will not change behavior in your production environment.

Konfigurieren einer Webrolle für die Verwendung Ihrer eigenen PHP-LaufzeitConfigure a web role to use your own PHP runtime

Führen Sie die folgenden Schritte aus, um eine Webrolle für die Verwendung einer von Ihnen angegebenen PHP-Laufzeit zu konfigurieren.To configure a web role to use a PHP runtime that you provide, follow these steps:

  1. Erstellen Sie ein Azure-Dienstprojekt, und fügen Sie eine PHP-Webrolle hinzu, wie weiter oben in diesem Thema beschrieben.Create an Azure Service project and add a PHP web role as described previously in this topic.

  2. Erstellen Sie einen Ordner php im Ordner bin, der sich im Stammverzeichnis der Webrolle befindet, und fügen Sie dann die PHP-Laufzeit (alle Binärdateien, Konfigurationsdateien, Unterordner usw.) dem Ordner php hinzu.Create a php folder in the bin folder that is in your web role's root directory, and then add your PHP runtime (all binaries, configuration files, subfolders, etc.) to the php folder.

  3. (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.(OPTIONAL) If your PHP runtime uses the Microsoft Drivers for PHP for SQL Server, you will need to configure your web role to install SQL Server Native Client 2012 when it is provisioned. Fügen Sie dazu den sqlncli.msi x64-Installer dem Ordner bin im Stammverzeichnis der Webrolle hinzu.To do this, add the sqlncli.msi x64 installer to the bin folder in your web role's root directory. Das im nächsten Schritt beschriebene Startskript wird das Installationsprogramm ausführen, wenn die Rolle bereitgestellt wird.The startup script described in the next step will silently run the installer when the role is provisioned. 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:If your PHP runtime does not use the Microsoft Drivers for PHP for SQL Server, you can remove the following line from the script shown in the next step:

     msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
  4. 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.Define a startup task that configures Internet Information Services (IIS) to use your PHP runtime to handle requests for .php pages. Öffnen Sie dazu die Datei setup_web.cmd (in der Datei bin des Stammverzeichnisses Ihrer Webrolle) in einem Texteditor, und ersetzen Sie den Inhalt durch folgendes Skript:To do this, open the setup_web.cmd file (in the bin file of your web role's root directory) in a text editor and replace its contents with the following 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. Fügen Sie die Anwendungsdateien zum Stammverzeichnis Ihrer Webrolle hinzu.Add your application files to your web role's root directory. Dies wird das Stammverzeichnis des Webservers sein.This will be the web server's root directory.

  6. Veröffentlichen Sie die Anwendung entsprechend der Beschreibung im Abschnitt Veröffentlichen der Anwendung weiter unten.Publish your application as described in the Publish your application section below.

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.The download.ps1 script (in the bin folder of the web role's root directory) can be deleted after you follow the steps described above for using your own PHP runtime.

Konfigurieren einer Workerrolle für die Verwendung Ihrer eigenen PHP-LaufzeitConfigure a worker role to use your own PHP runtime

Führen Sie die folgenden Schritte aus, um eine Workerrolle für die Verwendung einer von Ihnen angegebenen PHP-Laufzeit zu konfigurieren.To configure a worker role to use a PHP runtime that you provide, follow these steps:

  1. Erstellen Sie ein Azure-Dienstprojekt, und fügen Sie eine PHP-Workerrolle hinzu, wie weiter oben in diesem Thema beschrieben.Create an Azure Service project and add a PHP worker role as described previously in this topic.

  2. 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 Ordner php hinzu.Create a php folder in the worker role's root directory, and then add your PHP runtime (all binaries, configuration files, subfolders, etc.) to the php folder.

  3. (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.(OPTIONAL) If your PHP runtime uses Microsoft Drivers for PHP for SQL Server, you will need to configure your worker role to install SQL Server Native Client 2012 when it is provisioned. Fügen Sie dazu den sqlncli.msi x64-Installer dem Stammverzeichnis der Workerrolle hinzu.To do this, add the sqlncli.msi x64 installer to the worker role's root directory. Das im nächsten Schritt beschriebene Startskript wird das Installationsprogramm ausführen, wenn die Rolle bereitgestellt wird.The startup script described in the next step will silently run the installer when the role is provisioned. 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:If your PHP runtime does not use the Microsoft Drivers for PHP for SQL Server, you can remove the following line from the script shown in the next step:

     msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
  4. Definieren Sie eine Startaufgabe, die die ausführbare Datei php.exe bei der Rollenbereitstellung zur PATH-Umgebungsvariable der Workerrolle hinzufügt.Define a startup task that adds your php.exe executable to the worker role's PATH environment variable when the role is provisioned. Öffnen Sie dazu die Datei setup_worker.cmd (im Stammverzeichnis der Workerrolle) in einem Texteditor, und ersetzen Sie den Inhalt durch folgendes Skript:To do this, open the setup_worker.cmd file (in the worker role's root directory) in a text editor and replace its contents with the following 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. Fügen Sie die Anwendungsdateien zum Stammverzeichnis Ihrer Workerrolle hinzu.Add your application files to your worker role's root directory.

  6. Veröffentlichen Sie die Anwendung entsprechend der Beschreibung im Abschnitt Veröffentlichen der Anwendung weiter unten.Publish your application as described in the Publish your application section below.

Ausführen der Anwendung in den Server- und SpeicheremulatorenRun your application in the compute and storage emulators

Die Azure-Emulatoren bieten eine lokale Umgebung, in der Sie Ihre Azure-Anwendung testen können, bevor Sie sie in der Cloud bereitstellen.The Azure emulators provide a local environment in which you can test your Azure application before you deploy it to the cloud. Es gibt einige Unterschiede zwischen den Emulatoren und der Azure-Umgebung.There are some differences between the emulators and the Azure environment. Zum besseren Verständnis finden Sie weitere Informationen unter Einsatz des Azure-Speicheremulators für Entwicklung und Tests.To understand this better, see Use the Azure storage emulator for development and testing.

PHP muss lokal installiert sein, um den Serveremulator nutzen zu können.Note that you must have PHP installed locally to use the compute emulator. Der Serveremulator verwendet Ihre lokale PHP-Installation, um die Anwendung auszuführen.The compute emulator will use your local PHP installation to run your application.

Führen Sie folgenden Befehl im Stammverzeichnis des Projekts aus, um das Projekt in den Emulatoren auszuführen:To run your project in the emulators, execute the following command from your project's root directory:

PS C:\MyProject> Start-AzureEmulator

Eine Ausgabe ähnlich der folgenden wird angezeigt.You will see output similar to this:

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 Beispielausgabe oben) navigieren, können Sie im Emulator sehen, wie die Anwendung ausgeführt wird.You can see your application running in the emulator by opening a web browser and browsing to the local address shown in the output (http://127.0.0.1:81 in the example output above).

Führen Sie folgenden Befehl aus, um die Emulatoren zu stoppen:To stop the emulators, execute this command:

PS C:\MyProject> Stop-AzureEmulator

Veröffentlichen der AnwendungPublish your application

Um die Anwendung zu veröffentlichen, müssen Sie zunächst die Veröffentlichungseinstellungen mithilfe des Cmdlets Import-AzurePublishSettingsFile importieren.To publish your application, you need to first import your publish settings by using the Import-AzurePublishSettingsFile cmdlet. Anschließend können Sie die Anwendung mithilfe des Cmdlets Publish-AzureServiceProject veröffentlichen.Then you can publish your application by using the Publish-AzureServiceProject cmdlet. Informationen zum Anmelden finden Sie unter Installieren und Konfigurieren von Azure PowerShell.For information about signing in, see How to install and configure Azure PowerShell.

Nächste SchritteNext steps

Weitere Informationen finden Sie im PHP Developer Center.For more information, see the PHP Developer Center.