Zend Server – Parte 3 – Distribuição (Deployment)

Bom dia pessoal!

Update: Existe um post atualizado com a versão 8. Pode ser encontrada neste link.

Update: Este post é para mostrar a função de deployment, um procedimento para distribuir uma versão nova da sua aplicação e não para o dia-a-dia de desenvolvimento. Para isso vou fazer um post 3.5 mostrando como usar o Zend Server no desenvolvimento sem usar o deployment.

Neste terceiro post da série sobre Zend Server, vamos ver como fazer a distribuição (ou deployment) para um servidor.

No post anterior fizemos a instalação do Zend Server Free Edition e estamos prontos para rodar nossas aplicações. Uma mudança muito bem vinda na versão 6 é a possibilidade de fazer o deployment também na versão gratuita, apesar de não poder fazer o rollback, ou seja, retornar para uma versão anterior.

Se você usa o Zend Studio, o processo de deployment é bem mais simples pois é feito pelo próprio Zend Studio, mas para quem não tem, o Zend Server vem com uma ferramenta console chamada zdpack destinada a criar pacotes prontos para o deployment.

Mas qual a diferença entre usar o deployment e copiar os arquivos para o diretório manualmente?

O deployment é um processo repetitivo e vamos ser francos, quem nunca esqueceu de copiar um arquivo, ou modificar um arquivo após a cópia do projeto? Existem várias ferramentas ótimas para este processo como o phing e Caspriano. Eu particularmente uso o phing e vou escrever um post sobre ele em breve. O zdpack só funciona para o Zend Server, e você não vê muitos provedores de hospedagem oferecendo serviços incluindo o Zend Server, então o uso fica um pouco limitado. Mas se você tem um servidor na empresa ou pessoal com o Zend Server, pode usar deste recurso.

Mas como estamos numa série sobre Zend Server, vamos falar sobre ele 🙂

Preparando o pacote

Para preparar o pacote de deployment, vamos executar o zdpack:

A parte destacada representa os arquivo e diretórios criados.

Na raiz do projeto ele cria um arquivo deployment.xml que contem toda a configuração para o deployment (arquivos, nome, campos de configuração, validações, etc) e um diretório scripts que contem vários scripts que serão executados em cada etapa. Dentro do diretório data ele inclui um arquivo LICENSE.txt com a licença a ser usada e um index.php.

Uma coisa importante é que o diretório “data” do zdpack tem a finalidade de conter todos os arquivos da sua aplicação o que entra em “conflito” com o “data” do Zend Framework. O que faço é editar o deployment.xml e mudo o diretório onde ele busca os arquivos de “data” para “build”. Vamos ver como é a estrutura deste arquivo:

Para o processo não atrapalhar o ZF2, alteramos as linhas 10-12, criamos o diretório build dentro do diretório ZFTutorial e copiamos todos os arquivos do projeto para ele (excluindo os arquivos que o zdpack criou e quaisquer outros que não queremos distribuir, como por exemplo config/autoload/*local*).

Vamos à estrutura geral do arquivo (alguns campos não são criados pelo zdpack, basta acrescentá-los):

  • type: especificamos se é uma aplicação ou biblioteca (library, que poderá ser usada por outras aplicação, como um include_pach).
  • name: Nome da aplicação
  • summary: Um resumo da aplicação
  • description: A descrição completa da aplicação
  • version: Versão da nossa aplicação. É importante usarmos este valor corretamente pois é usado nas atualizações.
  • releasedate: Data de lançamento da versão
  • eula: O arquivo EULA
  • appdir: Diretório onde estão os arquivos da aplicação
  • docroot: Diretório para onde o alias do apache irá apontar. No caso de ZF2 é o public
  • scriptsdir: Diretório onde estão os scripts do zdpack
  • healthcheck: Caminho para o Zend Server testar se a aplicação está ok. Normalmente podemos definir como index.php.
  • updateurl: Url para atualização
  • dependencies: Os requisitos que o servidor deve ter para a aplicação funcionar corretamente. Todos serão checados durante o processo de deployment.
  • parameters: Parâmetros para o processo de deployment
  • variables: Define variáveis de ambiente para os scripts do zdpack

Os scripts do zdpack são executados numa ordem específica e você pode usar para atualizar o banco de dados, criar arquivos de configuração, enviar um email após uma atualização, etc. Dentro de cada script existe um comentário dando maiores explicações e quais variáveis estão disponíveis para ele.

  • Deploy
    • pre_stage.php: Executado logo após ser feito o upload e descompactado no servidor e antes de qualquer outra coisa
    • post_stage.php: Executado após a etapa de stage, todos os arquivos já estão no lugar, mas a aplicação ainda não é acessível via página
    • pre_activate.php: Antes de ativar a aplicação
    • post_activate.php: Final do processo de deployment. Aqui a aplicação já está toda configurada e acessível via página.
  • Rollback (lembro que a versão gratuita não oferece suporte para rollback)
    • pre_rollback.php: Executado antes de iniciar um rollback
    • post_rollback.php: Alguém arrisca? 🙂
  • Remover
    • pre_deactivate.php: Executado no início do processo de desativação da aplicação
    • post_deactivate.php: Executado após o processo, aqui a página já não é mais acessada, mas os arquivos ainda estão no servidor
    • pre_unstage.php: Início do processo de remoção da aplicação
    • post_unstage.php: Término do processo

Criando o pacote

Com tudo em ordem e configurado, podemos validar e criar nosso pacote. Saia do diretório da aplicação e execute:

Com o pacote criado, podemos entrar no Zend Server e fazer o upload do pacote.

Realizando o deployment

Vá na aba “Applications” -> Apps

1

Clique em “Deploy Application” e faça o upload do ZFTutorial.zpk

2

Selecione o nome, servidor e caminho da aplicação

3

Aceite a licença

4

Aqui ele vai fazer a validação dos pré-requisitos da aplicação

5

E pedir os campos definidos no deployment.xml

6

Em seguida, irá mostrar a tela de resumo

7

E irá começar o processo de instalação

8

Se tudo correr bem, ela esta pronta

9

E acessível pelo endereço http://<servidor>/zftutorial sem precisar mexer no apache, criar  Alias, nada, o Zend Server já faz automaticamente para você.

10

Atualizando uma aplicação

Depois de trabalharmos na nossa aplicação mais um pouco, chegou a hora de atualizarmos. O processo de criação do pacote é exatamente o mesmo, mas aumente o número da versão, senão o Zend Server vai achar que se trata da mesma versão e não vai fazer nada.

Aqui ao invés de clicarmos em “Deploy”, vamos na linha da nossa aplicação e clicamos no primeiro botão que é “Update”

1 2 3

Repare que a tela dos parâmetros já vem preenchida com os valores inseridos na instalação:

4

E o número da versão atualizado:

5 6 7 8

9

Pronto! Atualização feita.

Se formos olhar o diretório onde ele salva os arquivos, vamos encontrar nosso diretório e as versões:

 

Referências:

Parte 1 – Visão Geral

Parte 2 – Instalação e Configuração

Parte 3 – Distribuição (Deployment)

Parte 3.5 – Definir uma aplicação

Parte 4 – Métrica

Parte 5 – Eventos e Code Tracing

 

 

Até a próxima!

Leandro Silva

PHP developer since 1997, loves movies, music and dogs.

5 Comentários para: “Zend Server – Parte 3 – Distribuição (Deployment)

  1. Pingback: Zend Server – Parte 1 – Visão Geral | Leandro Silva

  2. Valeu, Leandro! Vou começar a acompanhar a partir de agora e vou meter a cara. Obrigadão, amigo!

  3. Pingback: Zend Server – Parte 3.5 – Definindo uma aplicação | Leandro Silva

  4. Pingback: Zend Server – Parte 4 – Métrica | Leandro Silva

  5. Pingback: Zend Server – Parte 5 – Eventos e Code Tracing | Leandro Silva

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*