Come creare ruoli Web e di lavoro PHPHow to create PHP web and worker roles

OverviewOverview

Questa guida illustrerà come creare ruoli Web o di lavoro PHP in un ambiente di sviluppo Windows, scegliere una versione specifica di PHP tra le versioni incorporate disponibili, modificare la configurazione di PHP, abilitare le estensioni e, infine, eseguire la distribuzione in Azure.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. Verrà inoltre descritto come configurare un ruolo Web o di lavoro per l'uso del runtime PHP (con configurazione ed estensioni personalizzate) fornito dall'utente.It also describes how to configure a web or worker role to use a PHP runtime (with custom configuration and extensions) that you provide.

Cosa sono i ruoli Web e di lavoro PHP?What are PHP web and worker roles?

Azure offre tre modelli di calcolo per le applicazioni in esecuzione: Servizio App di Azure, Macchine virtuali di Azure e Servizi cloud di Azure.Azure provides three compute models for running applications: Azure App Service, Azure Virtual Machines, and Azure Cloud Services. Tutti e tre i modelli supportano PHP.All three models support PHP. Servizi cloud, che include ruoli Web e di lavoro, fornisce la tecnologia PaaS (Platform as a Service).Cloud Services, which includes web and worker roles, provides platform as a service (PaaS). In un servizio cloud un ruolo Web fornisce un server Web IIS (Internet Information Services) dedicato per ospitare applicazioni Web front-end.Within a cloud service, a web role provides a dedicated Internet Information Services (IIS) web server to host front-end web applications. Un ruolo di lavoro può eseguire attività asincrone, con esecuzione prolungata o perpetue indipendenti dall'interazione o dall'input dell'utente.A worker role can run asynchronous, long-running or perpetual tasks independent of user interaction or input.

Per altre informazioni su queste opzioni, vedere Opzioni di hosting di calcolo fornite da Azure.For more information about these options, see Compute hosting options provided by Azure.

Download di Azure SDK per PHPDownload the Azure SDK for PHP

Azure SDK per PHP è composto da diversi componenti.The [Azure SDK for PHP] consists of several components. Questo articolo ne userà due: Azure PowerShell e gli emulatori di Azure.This article will use two of them: Azure PowerShell and the Azure emulators. È possibile installare questi due componenti tramite Installazione piattaforma Web Microsoft.These two components can be installed via the Microsoft Web Platform Installer. Per altre informazioni, vedere Come installare e configurare Azure PowerShell.For more information, see How to install and configure Azure PowerShell.

Creare un progetto di servizi cloudCreate a Cloud Services project

Il primo passaggio nella creazione di un ruolo Web o di lavoro PHP consiste nel creare un progetto di servizio di Azure,The first step in creating a PHP web or worker role is to create an Azure Service project. che funge da contenitore logico per i ruoli Web e di lavoro e contiene la definizione del servizio (.csdef) e i file di configurazione del servizio (.cscfg) del progetto.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.

Per creare un nuovo progetto di servizio di Azure, eseguire Azure PowerShell come amministratore e avviare il comando seguente:To create a new Azure Service project, run Azure PowerShell as an administrator, and execute the following command:

PS C:\>New-AzureServiceProject myProject

Questo comando permette di creare una nuova directory (myProject) a cui è possibile aggiungere ruoli Web e di lavoro.This command will create a new directory (myProject) to which you can add web and worker roles.

Aggiungere ruoli Web o di lavoro PHPAdd PHP web or worker roles

Per aggiungere un ruolo Web PHP a un progetto, avviare il comando seguente dalla directory radice del progetto: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

Per un ruolo di lavoro, utilizzare il comando seguente:For a worker role, use this command:

PS C:\myProject> Add-AzurePHPWorkerRole roleName

Nota

roleName è facoltativo.The roleName parameter is optional. se omesso, il nome del ruolo verrà generato automaticamente.If it is omitted, the role name will be automatically generated. Il primo ruolo Web creato sarà WebRole1, il secondo sarà WebRole2 e così via.The first web role created will be WebRole1, the second will be WebRole2, and so on. Il primo ruolo di lavoro creato sarà WorkerRole1, il secondo sarà WorkerRole2 e così via.The first worker role created will be WorkerRole1, the second will be WorkerRole2, and so on.

Specificare la versione PHP incorporataSpecify the built-in PHP version

Quando si aggiunge un ruolo Web o di lavoro PHO a un progetto, i file di configurazione del progetto verranno modificati in modo che PHP venga installato su ciascuna istanza Web o di lavoro dell'applicazione alla sua distribuzione.When you add a PHP web or worker role to a project, the project's configuration files are modified so that PHP will be installed on each web or worker instance of your application when it is deployed. Per visualizzare la versione di PHP che verrà installata per impostazione predefinita, eseguire il comando seguente:To see the version of PHP that will be installed by default, run the following command:

PS C:\myProject> Get-AzureServiceProjectRoleRuntime

Il risultato del comando sopra riportato sarà simile al seguente.The output from the command above will look similar to what is shown below. In questo esempio, il flag IsDefault è impostato su true per PHP 5.3.17, a indicare che questa sarà la versione di PHP installata per impostazione predefinita.In this example, the IsDefault flag is set to true for PHP 5.3.17, indicating that it will be the default PHP version installed.

Runtime Version     PackageUri                      IsDefault
------- -------     ----------                      ---------
Node 0.6.17         http://nodertncu.blob.core...   False
Node 0.6.20         http://nodertncu.blob.core...   True
Node 0.8.4          http://nodertncu.blob.core...   False
IISNode 0.1.21      http://nodertncu.blob.core...   True
Cache 1.8.0         http://nodertncu.blob.core...   True
PHP 5.3.17          http://nodertncu.blob.core...   True
PHP 5.4.0           http://nodertncu.blob.core...   False

È possibile impostare la versione del runtime PHP su una qualsiasi delle versioni PHP elencate.You can set the PHP runtime version to any of the PHP versions that are listed. Per impostare ad esempio la versione PHP (per un ruolo denominato roleName) su 5.4.0, usare il comando seguente:For example, to set the PHP version (for a role with the name roleName) to 5.4.0, use the following command:

PS C:\myProject> Set-AzureServiceProjectRole roleName php 5.4.0

Nota

Le versioni PHP disponibili possono cambiare in futuro.Available PHP versions may change in the future.

Personalizzare il runtime PHP incorporatoCustomize the built-in PHP runtime

L'utente dispone del controllo completo sulla configurazione del runtime PHP che viene installato eseguendo la procedura sopra illustrata, incluse le modifiche delle impostazioni php.ini e l'abilitazione delle estensioni.You have complete control over the configuration of the PHP runtime that is installed when you follow the steps above, including modification of php.ini settings and enabling of extensions.

Per personalizzare il runtime PHP incorporato, eseguire la procedura seguente:To customize the built-in PHP runtime, follow these steps:

  1. Aggiungere una nuova cartella denominata php alla directory bin del ruolo Web in uso.Add a new folder, named php, to the bin directory of your web role. Per un ruolo di lavoro, aggiungerlo alla directory radice del ruolo.For a worker role, add it to the role's root directory.
  2. Nella cartella php creare un'altra cartella denominata ext.In the php folder, create another folder called ext. Inserire tutti i file con estensione .dll (ad esempio php_mongo.dll) da abilitare in questa cartella.Put any .dll extension files (e.g., php_mongo.dll) that you want to enable in this folder.
  3. Aggiungere un file php.ini alla cartella php.Add a php.ini file to the php folder. Abilitare eventuali estensioni personalizzate e impostare qualsiasi direttiva PHP in questo file.Enable any custom extensions and set any PHP directives in this file. Ad esempio, se si desidera attivare display_errors e abilitare l'estensione php_mongo.dll il contenuto del file php.ini sarà il seguente:For example, if you wanted to turn display_errors on and enable the php_mongo.dll extension, the contents of your php.ini file would be as follows:

     display_errors=On
     extension=php_mongo.dll
    

Nota

Qualsiasi impostazione non esplicitamente impostata nel file php.ini fornito verrà automaticamente impostata sui valori predefiniti.Any settings that you don't explicitly set in the php.ini file that you provide will automatically be set to their default values. Si tenga tuttavia presente che è possibile aggiungere un file php.ini completo.However, keep in mind that you can add a complete php.ini file.

Utilizzare il proprio runtime PHPUse your own PHP runtime

In alcuni casi, invece di selezionare un runtime PHP incorporato e configurarlo come sopra descritto, può essere consigliabile fornire un proprio runtime PHP.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. È ad esempio possibile usare lo stesso runtime PHP in un ruolo Web o di lavoro usato nell'ambiente di sviluppo.For example, you can use the same PHP runtime in a web or worker role that you use in your development environment. In questo modo sarà più semplice garantire che il comportamento dell'applicazione non cambi nell'ambiente di produzione.This makes it easier to ensure that the application will not change behavior in your production environment.

Configurare un ruolo Web per l'uso del proprio runtime PHPConfigure a web role to use your own PHP runtime

Per configurare un ruolo Web per l'uso di un runtime PHP fornito dall'utente, seguire questa procedura.To configure a web role to use a PHP runtime that you provide, follow these steps:

  1. Creare un progetto di servizio Azure e aggiungere un ruolo Web PHP come descritto precedentemente in questo argomento.Create an Azure Service project and add a PHP web role as described previously in this topic.
  2. Creare una cartella php nella cartella bin che si trova nella directory radice del proprio ruolo Web e quindi aggiungere nella cartella php il proprio runtime PHP (tutti i file binari, i file di configurazione, le sottocartelle e così via).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. (FACOLTATIVO) Se il runtime PHP usa i driver Microsoft per PHP per SQL Server, sarà necessario configurare il ruolo Web per installare SQL Server Native Client 2012 quando viene effettuato il provisioning.(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. A tale scopo, aggiungere il programma di installazione sqlncli.msi x64 nella cartella bin nella directory radice del ruolo Web.To do this, add the [sqlncli.msi x64 installer] to the bin folder in your web role's root directory. Lo script di avvio descritto nel passaggio successivo eseguirà il programma di installazione senza avvisi quando viene eseguito il provisioning del ruolo.The startup script described in the next step will silently run the installer when the role is provisioned. Se il proprio runtime PHP non usa i Driver Microsoft per PHP per SQL Server è possibile rimuovere la seguente riga dallo script illustrato nel passaggio successivo: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. Definire un'attività di avvio per configurare Internet Information Services (IIS) per l'uso del runtime PHP nella gestione delle richieste di pagine .php.Define a startup task that configures Internet Information Services (IIS) to use your PHP runtime to handle requests for .php pages. A tale scopo, aprire il file setup_web.cmd (nel file bin della directory radice del proprio ruolo Web) in un editor di testo e sostituirne il contenuto con lo script seguente: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. Aggiungere i file applicazione alla directory radice del proprio ruolo Web,Add your application files to your web role's root directory. che sarà la directory radice del server Web.This will be the web server's root directory.
  6. Pubblicare l'applicazione come descritto nella sezione Pubblicare l'applicazione più avanti.Publish your application as described in the Publish your application section below.

Nota

Lo script download.ps1 (nella cartella bin della directory radice del proprio ruolo Web) può essere eliminato dopo aver eseguito i passaggi sopra descritti per l'uso del proprio runtime PHP.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.

Configurare un ruolo di lavoro per l'uso del proprio runtime PHPConfigure a worker role to use your own PHP runtime

Per configurare un ruolo di lavoro per l'uso di un runtime PHP fornito dall'utente, seguire questa procedura.To configure a worker role to use a PHP runtime that you provide, follow these steps:

  1. Creare un progetto di servizio Azure e aggiungere un ruolo di lavoro PHP come descritto precedentemente in questo argomento.Create an Azure Service project and add a PHP worker role as described previously in this topic.
  2. Creare una cartella php nella directory radice del proprio ruolo di lavoro e quindi aggiungere il proprio runtime PHP nella cartella php (tutti i file binari, i file di configurazione, le sottocartelle e così via).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. (FACOLTATIVO) Se il runtime PHP usa i driver Microsoft per PHP per SQL Server, sarà necessario configurare il ruolo di lavoro per installare SQL Server Native Client 2012 quando viene effettuato il provisioning.(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. A tale scopo, aggiungere il programma di installazione sqlncli.msi x64 nella directory radice del proprio ruolo di lavoro.To do this, add the [sqlncli.msi x64 installer] to the worker role's root directory. Lo script di avvio descritto nel passaggio successivo eseguirà il programma di installazione senza avvisi quando viene eseguito il provisioning del ruolo.The startup script described in the next step will silently run the installer when the role is provisioned. Se il proprio runtime PHP non usa i Driver Microsoft per PHP per SQL Server è possibile rimuovere la seguente riga dallo script illustrato nel passaggio successivo: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. Definire un'attività di avvio per l'aggiunta dell'eseguibile php.exe alla variabile di ambiente PATH del ruolo di lavoro durante il provisioning del ruolo.Define a startup task that adds your php.exe executable to the worker role's PATH environment variable when the role is provisioned. A tale scopo, aprire il file setup_worker.cmd (nella directory radice del proprio ruolo di lavoro) in un editor di testo e sostituirne il contenuto con lo script seguente: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. Aggiungere i file applicazione alla directory radice del proprio ruolo di lavoro,Add your application files to your worker role's root directory.
  6. Pubblicare l'applicazione come descritto nella sezione Pubblicare l'applicazione più avanti.Publish your application as described in the Publish your application section below.

Eseguire l'applicazione negli emulatori di calcolo e archiviazioneRun your application in the compute and storage emulators

Gli emulatori di Azure forniscono un ambiente locale in cui è possibile testare l'applicazione Azure prima di distribuirla nel cloud.The Azure emulators provide a local environment in which you can test your Azure application before you deploy it to the cloud. Vi sono alcune differenze tra gli emulatori e l'ambiente Azure.There are some differences between the emulators and the Azure environment. Per una migliore comprensione, vedere Usare l'emulatore di archiviazione di Azure per sviluppo e test.To understand this better, see Use the Azure storage emulator for development and testing.

Si noti che per usare l'emulatore di calcolo è necessario aver installato PHP in locale.Note that you must have PHP installed locally to use the compute emulator. L'emulatore di calcolo userà l'installazione locale di PHP per eseguire l'applicazione.The compute emulator will use your local PHP installation to run your application.

Per eseguire il progetto negli emulatori, avviare il comando seguente dalla directory radice del progetto:To run your project in the emulators, execute the following command from your project's root directory:

PS C:\MyProject> Start-AzureEmulator

L'output sarà simile al seguente:You will see output similar to this:

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

Per visualizzare l'applicazione in esecuzione nell'emulatore, aprire un Web browser e immettere l'indirizzo locale indicato nell'output (http://127.0.0.1:81 nell'output di esempio sopra riportato).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).

Per arrestare gli emulatori, eseguire il comando seguente:To stop the emulators, execute this command:

PS C:\MyProject> Stop-AzureEmulator

Pubblicare l'applicazionePublish your application

Per pubblicare l'applicazione, è necessario prima importare le impostazioni di pubblicazione usando il cmdlet Import-AzurePublishSettingsFile .To publish your application, you need to first import your publish settings by using the Import-AzurePublishSettingsFile cmdlet. Pubblicare quindi l'applicazione usando il cmdlet Publish-AzureServiceProject .Then you can publish your application by using the Publish-AzureServiceProject cmdlet. Per informazioni sull'accesso, vedere Come installare e configurare Azure PowerShell.For information about signing in, see How to install and configure Azure PowerShell.

Passaggi successiviNext steps

Per ulteriori informazioni, vedere il Centro per sviluppatori di PHP.For more information, see the PHP Developer Center.