Criar funções de Web PHP e de trabalho

Descrição geral

Importante

Os Serviços de Nuvem (clássicos) agora foram preteridos para novos clientes e serão desativados em 31 de agosto de 2024 para todos os clientes. 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 mostrará como criar funções Web ou de trabalho do PHP em um ambiente de desenvolvimento do Windows, escolher uma versão específica do PHP das versões "internas" disponíveis, alterar a configuração do PHP, habilitar extensões e, finalmente, implantar no Azure. Ele também descreve como configurar uma função Web ou de trabalho para usar um tempo de execução PHP (com configuração e extensões personalizadas) que você fornece.

O Azure fornece três modelos de computação para executar aplicativos: Serviço de Aplicativo do Azure, Máquinas Virtuais do Azure e Serviços de Nuvem do Azure. Todos os três modelos suportam PHP. Os Serviços de Nuvem, que incluem funções Web e de trabalho, fornecem plataforma como serviço (PaaS). Dentro de um serviço de nuvem, uma função Web fornece um servidor Web dedicado dos Serviços de Informações da Internet (IIS) para hospedar aplicativos Web front-end. Uma função de trabalho pode executar tarefas assíncronas, de longa duração 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 computação de hospedagem fornecidas pelo Azure.

Transfira o Azure SDK para PHP

O SDK do Azure para PHP consiste em vários componentes. Este artigo usará dois deles: Azure PowerShell e os emuladores do Azure. Estes dois componentes podem ser instalados através do Microsoft Web Platform Installer. Para obter mais informações, veja How to install and configure Azure PowerShell (Como instalar e configurar o Azure PowerShell).

Criar um projeto de Serviços de Nuvem

A primeira etapa na criação de uma função Web ou de trabalho 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 de trabalho e contém os arquivos de definição de serviço (.csdef) e configuração de serviço (.cscfg) do projeto.

Para criar um novo projeto do Serviço do Azure, execute o Azure PowerShell como administrador e execute o seguinte comando:

PS C:\>New-AzureServiceProject myProject

Este comando criará um novo diretório (myProject) ao qual você pode adicionar funções Web e de trabalho.

Adicionar funções Web ou de trabalho do PHP

Para adicionar uma função Web PHP a um projeto, execute o seguinte comando de dentro do 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

Nota

O roleName parâmetro é opcional. Se for omitido, o nome da função será gerado automaticamente. A primeira função web criada será , a segunda será WebRole1WebRole2, e assim por diante. A primeira função de trabalhador criada será , a segunda será WorkerRole1WorkerRole2, e assim por diante.

Use seu próprio tempo de execução PHP

Em alguns casos, em vez de selecionar um tempo de execução PHP embutido e configurá-lo como descrito acima, você pode querer fornecer seu próprio tempo de execução PHP. Por exemplo, você pode usar o mesmo tempo de execução do PHP em uma função Web ou de trabalho que você usa em seu ambiente de desenvolvimento. Isso torna mais fácil garantir que o aplicativo não altere o comportamento em seu ambiente de produção.

Configurar uma função Web para usar seu próprio tempo de execução PHP

Para configurar uma função Web para usar um tempo de execução PHP que você fornece, execute estas etapas:

  1. Crie um projeto do Serviço do Azure e adicione uma função Web PHP conforme descrito anteriormente neste tópico.

  2. Crie uma php pasta na pasta que está no diretório raiz da sua função Web e, em bin seguida, adicione o tempo de execução do PHP (todos os binários, arquivos de configuração, subpastas, etc.) à php pasta.

  3. (OPCIONAL) Se o tempo de execução do PHP usar os Drivers da Microsoft para PHP para SQL Server, você precisará configurar sua função Web para instalar o SQL Server Native Client 2012 quando ele for provisionado. Para fazer isso, adicione o instalador sqlncli.msi x64 à bin pasta no diretório raiz da sua função Web. O script de inicialização descrito na próxima etapa executará silenciosamente o instalador quando a função for provisionada. Se o tempo de execução 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
    
  4. Defina uma tarefa de inicialização que configure o IIS (Serviços de Informações da Internet) para usar o tempo de execução do PHP para lidar com solicitações de .php páginas. Para fazer isso, abra o setup_web.cmdbin arquivo (no arquivo do diretório raiz da sua função Web) em um editor de texto e substitua seu conteúdo pelo seguinte 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. Adicione os arquivos do aplicativo ao diretório raiz da função Web. Este será o diretório raiz do servidor web.

  6. Publique seu aplicativo conforme descrito na seção Publique seu aplicativo abaixo.

Nota

O download.ps1 script (na bin pasta do diretório raiz da função Web) pode ser excluído depois de seguir as etapas descritas acima para usar seu próprio tempo de execução do PHP.

Configurar uma função de trabalho para usar seu próprio tempo de execução do PHP

Para configurar uma função de trabalho para usar um tempo de execução PHP que você fornece, execute estas etapas:

  1. Crie um projeto do Serviço do Azure e adicione uma função de trabalho PHP conforme descrito anteriormente neste tópico.

  2. Crie uma php pasta no diretório raiz da função de trabalho e, em seguida, adicione seu tempo de execução PHP (todos os binários, arquivos de configuração, subpastas, etc.) à php pasta.

  3. (OPCIONAL) Se o tempo de execução do PHP usar Drivers da Microsoft para PHP para SQL Server, você precisará configurar sua função de trabalho para instalar o SQL Server Native Client 2012 quando ele for provisionado. Para fazer isso, adicione o instalador sqlncli.msi x64 ao diretório raiz da função de trabalho. O script de inicialização descrito na próxima etapa executará silenciosamente o instalador quando a função for provisionada. Se o tempo de execução 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
    
  4. Defina uma tarefa de inicialização que adicione seu php.exe executável à variável de ambiente PATH da função de trabalho quando a função for provisionada. Para fazer isso, abra o setup_worker.cmd arquivo (no diretório raiz da função de trabalho) em um editor de texto e substitua seu conteúdo pelo seguinte 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. Adicione os arquivos do aplicativo ao diretório raiz da função de trabalho.

  6. Publique seu aplicativo conforme descrito na seção Publique seu aplicativo abaixo.

Execute seu aplicativo nos emuladores de computação e armazenamento

Os emuladores do Azure fornecem um ambiente local no qual você pode testar seu aplicativo do Azure antes de implantá-lo na nuvem. Há algumas diferenças entre os emuladores e o ambiente do Azure. Para entender isso melhor, consulte Usar o emulador de armazenamento do Azure para desenvolvimento e teste.

Observe que você deve ter o PHP instalado localmente para usar o emulador de computação. O emulador de computação usará sua instalação PHP local para executar seu aplicativo.

Para executar seu projeto nos emuladores, execute o seguinte comando a partir do diretório raiz do projeto:

PS C:\MyProject> Start-AzureEmulator

Você verá uma saída semelhante a esta:

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

Você pode ver seu 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 acima).

Para parar os emuladores, execute este comando:

PS C:\MyProject> Stop-AzureEmulator

Publicar a aplicação

Para publicar seu aplicativo, você precisa primeiro importar suas configurações de publicação usando o cmdlet Import-AzurePublishSettingsFile . Em seguida, você pode publicar seu aplicativo usando o cmdlet Publish-AzureServiceProject . Para obter informações sobre como entrar, consulte Como instalar e configurar o Azure PowerShell.

Próximos passos

Para obter mais informações, consulte o PHP Developer Center.