Compartilhar via


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:

  1. Crie um projeto de Serviço do Azure e adicione uma função Web do PHP, conforme descrito anteriormente neste artigo.

  2. Crie uma pasta php na pasta bin 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.) à pasta php.

  3. (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
    
  4. 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 arquivo setup_web.cmd (no arquivo bin 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"
    
  5. Adicione seus arquivos de aplicativo ao diretório raiz da função Web, que se torna o diretório raiz do servidor Web.

  6. 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:

  1. Crie um projeto de Serviço do Azure e adicione um trabalho do PHP, conforme descrito anteriormente neste artigo.

  2. 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 pasta php.

  3. (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
    
  4. 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 arquivo setup_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
    
  5. Adicione os arquivos do aplicativo ao diretório raiz da função de trabalho.

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