Criar funções de trabalho e funções Web de PHP
Visão geral
Importante
Os Serviços de Nuvem (clássicos) estão obsoletos para todos os clientes desde 1º de setembro de 2024. Todas as implantações em execução existentes serão interrompidas e encerradas pela Microsoft e os dados serão perdidos permanentemente a partir de outubro de 2024. As novas implantações devem usar o novo modelo de implantação baseado no Azure Resource Manager Serviços de Nuvem do Azure (suporte estendido) .
Este guia mostra como criar funções Web ou trabalho do PHP em um ambiente de desenvolvimento Windows, como escolher uma versão específica do PHP nas versões “internas” disponíveis, alterar a configuração do PHP, habilitar extensões e, por fim, como implantar no Azure. Também descreve como configurar uma função Web ou de trabalho para usar um runtime do PHP (com configuração e extensões personalizadas) que você fornece.
O Azure fornece três modelos de computação para a execução de aplicativos: Serviço de Aplicativo do Azure, Máquinas Virtuais do Azure e Serviços de Nuvem do Azure. Todos os três modelos oferecem suporte ao PHP. Os Serviços de Nuvem, que incluem as funções Web e de trabalho, fornecem a PaaS (plataforma como serviço). Dentro de um serviço de nuvem, uma função web fornece um servidor Web de IIS (Serviços de Informações da Internet) dedicado, usado para hospedar aplicativos Web de front-end. Um trabalho pode executar tarefas assíncronas, de execução longa ou perpétuas, independentemente da interação ou entrada do usuário.
Para obter mais informações sobre essas opções, consulte Opções de hospedagem de computação fornecidas pelo Azure.
Baixar o SDK do Azure para PHP
O SDK do Azure para PHP consiste em vários componentes. Este artigo usa dois deles: Azure PowerShell e os emuladores do Azure. Esses dois componentes podem ser instalados pelo Microsoft Web Platform Installer. Para obter mais informações, confira Como instalar e configurar o Azure PowerShell.
Criar um projeto de Serviço de Nuvem
A primeira etapa na criação de uma função Web ou de trabalho do PHP é criar um projeto de Serviço do Azure. Um projeto de Serviço do Azure serve como um contêiner lógico para funções Web e trabalho e contém os arquivos de definição do serviço (.csdef) e configuração do serviço (.cscfg) do projeto.
Para criar um novo projeto de Serviço do Azure, execute o Azure PowerShell como administrador e execute o seguinte comando:
PS C:\>New-AzureServiceProject myProject
Esse comando cria um novo diretório (myProject
) ao qual você pode adicionar funções Web e trabalho.
Adicionar funções de trabalho ou Web PHP
Para adicionar uma função Web do PHP a um projeto, execute o seguinte comando no diretório raiz do projeto:
PS C:\myProject> Add-AzurePHPWebRole roleName
Para uma função de trabalho, use este comando:
PS C:\myProject> Add-AzurePHPWorkerRole roleName
Observação
O roleName
é opcional. Se for omitido, o nome da função será gerado automaticamente. A primeira função web criada será WebRole1
, a segunda será WebRole2
e assim por diante. A primeira função de trabalho criada será WorkerRole1
, a segunda será WorkerRole2
e assim por diante.
Usar seu próprio runtime PHP
Em alguns casos, em vez de selecionar um runtime do PHP interno e configurá-lo conforme descrito anteriormente, talvez você queira fornecer seu próprio runtime do PHP. Por exemplo, você pode usar o mesmo runtime do PHP em uma função Web ou de trabalho que você usa no seu ambiente de desenvolvimento. Esse processo facilita a garantia de que o comportamento do aplicativo permaneça o mesmo no ambiente de produção.
Configurar uma função web para usar o seu próprio runtime do PHP
Para configurar uma função web para usar um runtime do PHP fornecido por você, siga as etapas a seguir:
Crie um projeto de Serviço do Azure e adicione uma função Web do PHP, conforme descrito anteriormente neste artigo.
Crie uma pasta
php
na pastabin
que está no diretório raiz de sua função web e adicione o runtime do PHP (todos os binários, arquivos de configuração, subpastas etc.) à pastaphp
.(OPCIONAL) Se o runtime do PHP usar os Drivers da Microsoft para PHP para SQL Server, será necessário configurar a função Web para instalar o SQL Server Native Client 2012 quando ela for provisionada. Para fazer isso, adicione o instalador sqlncli.msi x64 à pasta
bin
no diretório raiz da função Web. O script de inicialização descrito na próxima etapa executará o instalador silenciosamente quando a função for provisionada. Se o runtime do PHP não usar os Drivers da Microsoft para PHP para SQL Server, você poderá remover a seguinte linha do script mostrado na próxima etapa:msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
Defina uma tarefa de inicialização que configura os Serviços de Informações da Internet (IIS) para usar o runtime do PHP para manipular solicitações de páginas
.php
. Para fazer isso, abra o arquivosetup_web.cmd
(no arquivobin
do diretório raiz da função Web) em um editor de texto e substitua seu conteúdo pelo script a seguir:@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"
Adicione seus arquivos de aplicativo ao diretório raiz da função Web, que se torna o diretório raiz do servidor Web.
Publique seu aplicativo conforme descrito na seção Publicar seu aplicativo.
Observação
O script download.ps1
(na pasta bin
do diretório raiz da função Web) pode ser excluído após a realização das etapas descritas anteriormente para usar seu próprio runtime do PHP.
Configurar uma função de trabalho para usar o seu próprio runtime do PHP
Para configurar uma função de trabalho para usar um runtime do PHP fornecido por você, siga as etapas a seguir:
Crie um projeto de Serviço do Azure e adicione um trabalho do PHP, conforme descrito anteriormente neste artigo.
Crie uma pasta
php
no diretório raiz de sua função de trabalho e adicione o runtime do PHP (todos os binários, arquivos de configuração, subpastas etc.) para a pastaphp
.(OPCIONAL) Se o runtime do PHP usar Drivers da Microsoft para PHP para SQL Server, será necessário configurar o trabalho para instalar o SQL Server Native Client 2012 quando ela for provisionada. Para fazer isso, adicione o instalador sqlncli.msi x64 ao diretório raiz do trabalho. O script de inicialização descrito na próxima etapa executará o instalador silenciosamente quando a função for provisionada. Se o runtime do PHP não usar os Drivers da Microsoft para PHP para SQL Server, você poderá remover a seguinte linha do script mostrado na próxima etapa:
msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
Defina uma tarefa de inicialização que adiciona o executável
php.exe
à variável de ambiente PATH da função de trabalho quando a função é configurada. Para fazer isso, abra o arquivosetup_worker.cmd
(no diretório raiz do trabalho) em um editor de texto e substitua seu conteúdo pelo script a seguir:@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
Adicione os arquivos do aplicativo ao diretório raiz da função de trabalho.
Publique seu aplicativo conforme descrito na seção Publicar seu aplicativo.
Executar seu aplicativo nos emuladores de computação e de armazenamento
Os emuladores do Azure fornecem um ambiente local no qual você pode testar seu aplicativo do Azure antes de implantá-lo na nuvem. Existem algumas diferenças entre os emuladores e o ambiente do Azure. Para entender melhor essas diferenças, consulte Usar o emulador do Armazenamento do Microsoft Azure para desenvolvimento e teste.
Você deve ter instalado o PHP localmente para usar o emulador de computação. O emulador de computação usa sua instalação local do PHP para executar o aplicativo.
Para executar seu projeto nos emuladores, execute o seguinte comando no diretório raiz do projeto:
PS C:\MyProject> Start-AzureEmulator
A saída de exemplo a seguir é semelhante ao que você deve ver:
Creating local package...
Starting Emulator...
Role is running at http://127.0.0.1:81
Started
Você pode ver o aplicativo em execução no emulador abrindo um navegador da Web e navegando até o endereço local mostrado na saída (http://127.0.0.1:81
na saída de exemplo mostrada anteriormente).
Para parar os emuladores, execute este comando:
PS C:\MyProject> Stop-AzureEmulator
Publicar seu aplicativo
Para publicar seu aplicativo, você precisa primeiro importar suas configurações de publicação usando o cmdlet Import-AzurePublishSettingsFile . Em seguida, você pode publicar o aplicativo usando o cmdlet Publish-AzureServiceProject . Para obter informações sobre como entrar, confira Como instalar e configurar o Azure PowerShell.
Próximas etapas
Para obter mais informações, consulte o Centro de Desenvolvimento PHP.