Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Olá pessoal,
Ouvi de muitas pessoas um mito que o Windows Azure somente consegue rodar aplicações desenvolvidas em .NET Framework e que não seria compatível com outras tecnologias. Como disse, isso é um mito, no Windows Azure a sua aplicação roda em um sistema operacional compatível com o Windows Server 2008 ou Windows Server 2008 R2, ou seja, praticamente tudo que é possível instalar e rodar nesses sistemas operacionais é possível fazer rodar no Windows Azure.
Tanto que a página sobre desenvolvimento do portal do Windows Azure, traz uma série de links e documentações sobre o assunto:
Existem várias maneiras de configurar um ambiente PHP no Windows Azure, nos passos abaixo vou utilizar o Visual Studio 2010 para isso. Apenas notem que não utilizarei o Visual Studio 2010 para desenvolver nem depurar PHP, vou utilizá-lo apenas para deploy de uma aplicação web no Windows Azure.
O primeiro passo é criar um projeto de de Windows Azure e adicionar uma Web Role:
Depois remova os arquivos criados por padrão pelo Visual Studio até que seu projeto fique com uma estrutura similar à estrutura abaixo:
Em seguida adicione os arquivos da aplicação PHP no projeto da Web Role, no meu caso adicionei o arquivo index.php, que somente traz informações do ambiente PHP através da chamada phpinfo().
![]() |
O próximo passo é instalar o PHP no Windows Azure. Lembre-se, estamos utilizando uma Web Role no nosso projeto que na prática instala nossa aplicação para rodar no IIS, o que precisamos fazer é configurar o PHP para rodar em conjunto com o IIS. Além dessa configuração básica de execução do PHP também pode ser interessante instalar drivers de comunicação com o SQL Azure e um acelerador, como o caso do WinCache.
Para realizar essas configurações, vou utilizar uma startup task responsável por disparar as instalações utilizando o WebPICmd, que é a versão linha de comando do Web Plataform Installer, facilitando bastante a automação da instalação de ambientes web.
O primeiro passo da startup task é adicioná-la no projeto da web application, no meu caso, criei uma pasta chamada startup e adicionei a WebPICmd descompactada e um arquivo batch, o setup.cmd. Neste ponto é importante definir a propriedade “Copy to Output Directory” de todos os arquivos com o valor “Copy always”. No print abaixo é possível ver a estrutura de pastas e arquivos:
O conteúdo do arquivo setup.cmd contém as chamadas para o WebPICmd realizar as instalações necessárias dos componentes do PHP no IIS
cd "%~dp0"
md appdata
reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d "%~dp0appdata" /f
WebPICmdLine.exe /accepteula /Products:PHP53
WebPICmdLine.exe /accepteula /Products:SQLDriverPHP53IIS
WebPICmdLine.exe /accepteula /Products:WinCache53
reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d %%USERPROFILE%%\AppData\Local /f
net start w3svc
iisreset /start
exit /b 0
Já a sua indicação como startup task fica no arquivo ServiceDefinition.csdef, conforme trecho abaixo (notem que o arquivo e nem todas as tags estão completas por economia de espaço)
<ServiceDefinition name="WindowsAzurePHP" …>
<WebRole name="PHPApp" vmsize="Small">
<Startup>
<Task commandLine="startup\setup.cmd >> %Public%\Documents\setup.log"
executionContext="elevated"
taskType="simple" />
</Startup>…
Na definição da startup task digo que ela deverá executar de maneira elevada, ou seja, com permissões de administrador para poder realizar as instalações no ambiente e que também todos o texto que normalmente seria exibido na tela será redirecionado para o arquivo setup.log, podendo ser utilizado posteriormente em um diagnóstico em caso de problema.
Depois disso é só fazer o deploy e testar a aplicação
O código fonte deste projeto pode ser encontrado aqui.
RG