Condividi tramite


Creare ruoli Web e di lavoro PHP

Panoramica

Importante

Servizi cloud (versione classica) è ora deprecato per tutti i clienti a partire dal 1° settembre 2024. Tutte le distribuzioni in esecuzione esistenti verranno arrestate e arrestate da Microsoft e i dati andranno persi definitivamente a partire da ottobre 2024. Le nuove distribuzioni devono usare il nuovo modello di distribuzione basato su Azure Resource Manager Azure Servizi cloud (supporto esteso).

Questa guida illustra come creare ruoli Web o di lavoro PHP in un ambiente di sviluppo Windows, scegliere una versione specifica di PHP dalle versioni “predefinite” disponibili, modificare la configurazione PHP, abilitare le estensioni e infine eseguire una distribuzione in 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.

Azure offre tre modelli di calcolo per le applicazioni in esecuzione: Servizio App di Azure, Macchine virtuali di Azure e Servizi cloud di Azure. Tutti e tre i modelli supportano PHP. Servizi cloud, che include ruoli Web e di lavoro, fornisce la tecnologia PaaS (Platform as a Service). In un servizio cloud un ruolo Web fornisce un server Web IIS (Internet Information Services) dedicato per ospitare applicazioni Web front-end. Un ruolo di lavoro può eseguire attività asincrone, a esecuzione prolungata o perpetue indipendentemente dall’interazione o dall’input dell’utente.

Per altre informazioni su queste opzioni, vedere Opzioni di hosting di calcolo fornite da Azure.

Download di Azure SDK per PHP

Azure SDK per PHP è composto da diversi componenti. Questo articolo usa due di essi: Azure PowerShell e gli emulatori di Azure. È possibile installare questi due componenti tramite Installazione piattaforma Web Microsoft. Per altre informazioni, vedere Come installare e configurare Azure PowerShell.

Creare un progetto di servizi cloud

Il primo passaggio nella creazione di un ruolo Web o di lavoro PHP consiste nel creare un progetto di servizio di Azure, Un progetto di servizio di Azure funge da contenitore logico per i ruoli Web e di lavoro e contiene i file definizione del servizio (con estensione .csdef) e configurazione del servizio (con estensione .cscfg) del progetto.

Per creare un nuovo progetto di servizio di Azure, eseguire Azure PowerShell come amministratore e avviare il comando seguente:

PS C:\>New-AzureServiceProject myProject

Questo comando crea una nuova directory (myProject) a cui è possibile aggiungere ruoli Web e di lavoro.

Aggiungere ruoli Web o di lavoro PHP

Per aggiungere un ruolo Web PHP a un progetto, avviare il comando seguente dalla directory radice del progetto:

PS C:\myProject> Add-AzurePHPWebRole roleName

Per un ruolo di lavoro, utilizzare il comando seguente:

PS C:\myProject> Add-AzurePHPWorkerRole roleName

Nota

roleName è facoltativo. se omesso, il nome del ruolo verrà generato automaticamente. Il primo ruolo Web creato sarà WebRole1, il secondo sarà WebRole2 e così via. Il primo ruolo di lavoro creato sarà WorkerRole1, il secondo sarà WorkerRole2 e così via.

Utilizzare il proprio runtime PHP

In alcuni casi, invece di selezionare un runtime PHP predefinito e configurarlo come descritto in precedenza, è possibile fornire il proprio runtime PHP. È ad esempio possibile usare lo stesso runtime PHP in un ruolo Web o di lavoro usato nell'ambiente di sviluppo. Questo processo rende più semplice garantire che il comportamento dell’applicazione rimanga invariato nell’ambiente di produzione.

Configurare un ruolo Web per l'uso del proprio runtime PHP

Per configurare un ruolo Web per l'uso di un runtime PHP fornito dall'utente, seguire questa procedura.

  1. Creare un progetto di servizio di Azure e aggiungere un ruolo Web PHP come descritto in precedenza in questo articolo.

  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).

  3. (FACOLTATIVO) Se il runtime PHP usa i driver Microsoft per PHP per SQL Server, è necessario configurare il ruolo Web per installare SQL Server Native Client 2012 durante il provisioning. A tale scopo, aggiungere il programma di installazione sqlncli.msi x64 alla cartella bin nella directory radice del ruolo Web. Lo script di avvio descritto nel passaggio successivo eseguirà il programma di installazione senza avvisi quando viene eseguito il provisioning del ruolo. Se il runtime PHP non usa i driver Microsoft per PHP per SQL Server, è possibile rimuovere la riga seguente dallo script illustrato nel passaggio successivo:

    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. A tale scopo, aprire il file setup_web.cmd, nel file bin della directory radice del ruolo Web, in un editor di testo e sostituirlo con lo script seguente:

    @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 dell’applicazione alla directory radice del ruolo Web, che diventa la directory radice del server Web.

  6. Pubblicare l’applicazione come descritto nella sezione Pubblicare l’applicazione.

Nota

Lo script download.ps1, nella cartella bin della directory radice del ruolo Web, può essere eliminato dopo aver seguito i passaggi precedenti per l’uso del proprio runtime PHP.

Configurare un ruolo di lavoro per l'uso del proprio runtime PHP

Per configurare un ruolo di lavoro per l'uso di un runtime PHP fornito dall'utente, seguire questa procedura.

  1. Creare un progetto di servizio di Azure e aggiungere un ruolo di lavoro PHP come descritto in precedenza in questo articolo.

  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).

  3. (FACOLTATIVO) Se il runtime PHP usa driver Microsoft per PHP per SQL Server, è necessario configurare il ruolo di lavoro per installare SQL Server Native Client 2012 durante il provisioning. A tale scopo, aggiungere il programma di installazione di sqlncli.msi x64 alla directory radice del ruolo di lavoro. Lo script di avvio descritto nel passaggio successivo eseguirà il programma di installazione senza avvisi quando viene eseguito il provisioning del ruolo. Se il runtime PHP non usa i driver Microsoft per PHP per SQL Server, è possibile rimuovere la riga seguente dallo script illustrato nel passaggio successivo:

    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. A tale scopo, aprire il file setup_worker.cmd, nella directory radice del ruolo di lavoro, in un editor di testo e sostituirlo con lo script seguente:

    @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,

  6. Pubblicare l’applicazione come descritto nella sezione Pubblicare l’applicazione.

Eseguire l'applicazione negli emulatori di calcolo e archiviazione

Gli emulatori di Azure forniscono un ambiente locale in cui è possibile testare l'applicazione Azure prima di distribuirla nel cloud. Vi sono alcune differenze tra gli emulatori e l'ambiente Azure. Per comprendere meglio queste differenze, vedere Usare l’emulatore di Archiviazione di Azure per lo sviluppo e il test.

Per usare l’emulatore di calcolo, è necessario che PHP sia installato in locale. L’emulatore di calcolo usa l’installazione di PHP locale per eseguire l’applicazione.

Per eseguire il progetto negli emulatori, avviare il comando seguente dalla directory radice del progetto:

PS C:\MyProject> Start-AzureEmulator

L’output di esempio seguente è simile a quello che dovrebbe essere visualizzato:

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

È possibile visualizzare l’applicazione in esecuzione nell’emulatore aprendo un Web browser e passando all’indirizzo locale mostrato nell’output, http://127.0.0.1:81 nell’output di esempio mostrato in precedenza.

Per arrestare gli emulatori, eseguire il comando seguente:

PS C:\MyProject> Stop-AzureEmulator

Pubblicare l'applicazione

Per pubblicare l'applicazione, è necessario prima importare le impostazioni di pubblicazione usando il cmdlet Import-AzurePublishSettingsFile . Pubblicare quindi l'applicazione usando il cmdlet Publish-AzureServiceProject . Per informazioni sull'accesso, vedere Come installare e configurare Azure PowerShell.

Passaggi successivi

Per ulteriori informazioni, vedere il Centro per sviluppatori di PHP.