Desenvolvimento com tecnologia Microsoft e Interoperabilidade
Twitter: @vbs_br
Facebook: vbatistadesouza
LinkedIn: viniciusbatista

PHP no Windows Azure utilizando o Windows

Olá amigos, nesse post trago os passos para utilizar o PHP no Windows Azure utilizando o Cloud Service – PaaS (Plataforma como serviço) utilizando o Windows como máquina de desenvolvimento.

Existe diferentes maneiras de utilizar o PHP no Windows Azure.

PaaS (Plataforma como serviço)

Web Sites – A maneira mais rápida de trabalhar com Projetos Web Open Source, como WordPress, Drupal e etc.

Cloud Services – Serviço de nuvem para aplicações com maior complexidade, normalmente em múltiplas camadas ou que requer uma configuração mais específica. Ao criar um projeto, podemos definir dois tipos de serviço WebRole e WorkerRole.

IaaS (Infraestrutura como serviço)

Na infraestrutura como serviço temos controle total da máquina virtual, não mudando a forma de trabalhar e configurar a nossa aplicação.

 

Experimente o Windows Azure, utilizando a versão trial e coloque em práticas o que estou apresentando nesse artigo http://www.windowsazure.com/pt-br/pricing/free-trial/

Nesse artigo apresento um passo-a-passo como fazer a instalação (ou deploy) de uma aplicação em PHP no Cloud Services.

O primeiro passo, é instalar o SDK do para o PHP.

Acesse o http://www.windowsazure.com/pt-br/downloads/?sdk=php e faça download e a instalação do SDK.

Se quiser verificar e participar do projeto do SDK do PHP para o Windows Azure veja esse projeto https://github.com/WindowsAzure/azure-sdk-for-php.

Ou utilize o Web Platform Installer o (WebPI), e instale todos os componentes necessários para desenvolver a sua aplicação PHP no Windows Azure em um único lugar.

Ao escolher o Windows Azure SDK para PHP, por exemplo, será listados todos os pré-requisitos necessários para instalação em sua máquina e todo o processo de download e instalação acontecerá automaticamente.

Após realizada a instalação teremos instalado o pacote de comandos do Powershell (cmdlet) para o Windows Azure.

Os comandos fazem parte de um projeto Open Source disponibilizado no GitHub https://github.com/WindowsAzure/azure-sdk-tools. Com ele conseguimos gerenciar a nossa subscrição no Windows Azure, criando máquinas virtuais, Website, Cloud Services, Storage, SQL Azure e etc.

*importante: Alguns scripts necessitam ser executados com o usuário administrador, por isso é importante que o Power Shell seja executado com o usuário Administrator da máquina. Clique com o botão direito no ícone do PowerShell e selecione “execute como administrador”.

Iniciando nosso projeto

A primeira etapa para publicar nossa aplicação no Windows Azure é criando um projeto, para tanto vamos executar o comando

New-AzureServiceProject <Project Name>

Onde <Project Name> será o nome do nosso projeto, ao executar o comando o PowerShell vai criar uma Pasta no diretório atual e criar os arquivos de definição do serviço e configuração do serviço na nuvem.

O próximo passa é incluir uma Role, a role pode ser uma Web Role para a camada da aplicação que faz uso do IIS e Worker Role quando o IIS não for necessário.

No exemplo que irei realizar, vamos utilizar um Web Role, execute o comando abaixo no Power Shell.

Add-NewAzurePHPWebRole <Nome da Role>

O Nome da Role é o nome utilizado para identificar essa camada da aplicação ou serviço na nuvem, um serviço pode conter várias roles de diferentes tipos (não há limite para quantidade de roles em um serviço na nuvem).

Após executar o comando acima, uma nova pasta será adicionada a estrutura mínima necessária para incluir os arquivo de seu projeto.

Na raiz da pasta você vai encontrar os arquivos index.php, e os arquivos de configuração do IIS web.config e web.cloud.config, esse último é utilizado para configurar o ambiente da máquina virtual na nuvem, quando for publicar o serviço ele será renomeado para web.config. Essa é apenas uma maneira de trabalhar com configurações diferentes Local e Cloud para uma mesma aplicação.

A pasta Bin possui uma série de scripts utilizado para fazer o setup do ambiente, como download de runtime necessário e sua devida instalação.

 

Qual versão do PHP minha aplicação vai utilizar?

Por padrão o Windows Azure utiliza a versão 5.3.17, mas podemos alterar a versão para uma das versões suportadas pela plataforma. Você pode utilizar a versão que desejar em sua aplicação, mas o Windows Azure conta com duas versões atualmente cujo os binários de instalação estão disponíveis no próprio ambiente do Windows Azure, diminuindo o tempo de deploy de uma nova instância quando necessário.

Para ter a lista de runtime suportados pelo Windows Azure, exeute o comando abaixo

Get-AzureServiceProjectRoleRuntime

Esse comando lista os runtimes mostrando aqueles que é configurado como padrão.

Exemplo de retorno do comando.

Runtime    : Node Version    : 0.6.17 PackageUri : http://az413943.vo.msecnd.net/node/0.6.17.exe IsDefault  : False

Runtime    : Node Version    : 0.6.20 PackageUri : http://az413943.vo.msecnd.net/node/0.6.20.exe IsDefault  : True

Runtime    : Node Version    : 0.8.4 PackageUri : http://az413943.vo.msecnd.net/node/0.8.4.exe IsDefault  : False

Runtime    : IISNode Version    : 0.1.21 PackageUri : http://az413943.vo.msecnd.net/iisnode/0.1.21.exe IsDefault  : True

Runtime    : Cache Version    : 1.8.0 PackageUri : http://az413943.vo.msecnd.net/cache/1.8.0.exe IsDefault  : True

Runtime    : PHP Version    : 5.3.17 PackageUri : http://az413943.vo.msecnd.net/php/5.3.17.exe IsDefault  : True

Runtime    : PHP Version    : 5.4.0 PackageUri : http://az413943.vo.msecnd.net/php/5.4.0.exe IsDefault  : False

A lista pode variar de acordo com o tempo.

Para alterar a versão do PHP instalado, execute o comando abaixo.

Set-AzureServiceProjectRole <roleName> php 5.4.0

O RoleName é o nome da role que foi adicionada no projeto, se alguma vez ficar em dúvida sobre o nome utilizado veja o arquivo de configuração do serviço. Cada serviço possui um nó <Role> detro da tag <ServiceConfiguration> com a definição do nome, ou ainda veja o nome da pasta que foi criada.

Após executar o comando abra o arquivo ServiceDefinition.csdef e veja as alterações realizadas para a Role que definimos, foi incluído uma tag Startup com uma tarefa para a instalação do ambiente com a versão do php definida.

Com esse comando podemos ainda alterar a quantidade de instâncias que teremos em execução.

Set-AzureServiceProjectRole <roleName> Instances 2

O comando acima altera a quantidade de máquinas virtuais para duas, quando realizarmos o deploy de nossa aplicação.

Podemos definir também o tamanho da máquina virtual que estamos criando.

Sempre que tiver alguma dúvida quanto a utilização de um comando em específico utilize o comando help.

help <comando> -full

Esse comando retorna a lista com todos os parâmetros e uma explicação para cada um deles.

Para ter acesso a todos os comandos Cmdlets de gerenciamento utilize essa url:

Documentação dos Cmdlets para o gerenciamento da subscrição do Windows Azure

http://msdn.microsoft.com/en-us/library/windowsazure/jj152841.aspx

No Windows contamos com o emulador do Azure para testar a aplicação, para testá-la simplesmente digite.

Start-AzureEmulador

Será iniciado o ambiente de virtualização computacional e de armazenamento (blogs, tables (noSQL) e queue).

Para parar o ambiente execute.

Stop-AzureEmulator.

Realizando o deploy.

Antes de realizar o deploy precisamos configurar o arquivo de configuração de publicação.  Realizando o comando abaixo:

Get-AzurePublishSettingsFile

Será apresentada a página de acesso ao portal do Windows Azure, entre com o usuário e senha e em seguida salve o arquivo de configuração.

Depois de salvar o arquivo de configuração temos que importar a configuração, esse processo é realizado uma única vez até que a configuração seja renovada. Para importar utilize o comando a seguir.

Import-AzurePublishSettingsFile <local do arquivo credentials.publishsettings>

Somente depois de realizar esse processo conseguiremos enviar comandos para a nossa subscrição no Windows Azure.

Para publicar nosso projeto, vamos executar o comando.

 Publish-AzureServiceProject  -Location <data center utilizado> -StorageAccountName <Nome da conta utilizada> -ServiceName <Nome do Serviço>

Onde o nome do serviço será utilizado para criar a URL para o seu serviço, esse nome desse ser único caso o nome já esteja em uso receberemos uma mensagem de erro.

Todas as Web Roles existentes no serviço serão acessadas utilizando a mesma URL o que vai mudar é o número da porta (End Point) definidos no arquivo de definição do serviço.

Outro parâmetro importante é o Location, ele defini em qual datacenter do Windows Azure o serviço será publicado. Lembrando que, a utilização de múltiplos datacenters implica em cobrança adicional de transferência, utilize esse recurso com cuidado.

 Se todos os parâmetros estiverem corretos, você vai receber o seguinte resultado.

Name             : p2013-07-08-15-26-28-1849

DeploymentSlot   : Production

PrivateID        : f84c77df78914802adb11842122ba55a

Status           : Running

Url              : http://<service name>.cloudapp.net/

RoleInstanceList : {<Role names>}

UpgradeStatus    :

RoleList         : {Hello}

SdkVersion       : 1.8.31351.1533

Locked           : False

RollbackAllowed  : False

CreatedTime      : 7/8/2013 3:27:31 PM

LastModifiedTime : 7/8/2013 3:34:45 PM

Espero ter ajudado a  escolher a plataforma que irá hospedar seu próximo serviço de sucesso, seja utilizando o Paas, ou o IaaS.

Veja a apresentação que fiz no TDC sobre esse material.

No comments

Trackbacks/Pingbacks

  1. Passo a passo para rodar PHP no Windows Azure | Porta 25 - [...] um novo post publicado em seu blog, Vinicius Souza, especialista em desenvolvimento da Microsoft Brasil, explica [...]

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>