Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Drupal Camp Portugal 2012 - Deployment Drupal

Drupal Camp Portugal 2012 - Deployment Drupal

pauloamgomes

May 03, 2012
Tweet

More Decks by pauloamgomes

Other Decks in Technology

Transcript

  1. Eu: Paulo Gomes Apaixonado por tecnologia em geral mas com

    especial focus na web Experiência em diferentes áreas ensino e formação webdesign e programação web usabilidade integração e testes Unix (linux, solaris, osx, ...)
  2. Eu: Drupal 2010 - Primeiro contacto (com a versão 6)

    2011 - Evolução para versão 7, Drupal na Cloud 2012 - Reforçar e aprofundar conhecimentos, ganhar experiência 2013 - Drupal 8!!!
  3. Participar no Camp Desafio - Resposta a um desafio Evangelização

    - Sou entusiasta Drupal Qualidade - Acredito que é o melhor CMS/Framework web Partilhar - Apoiar a comunidade partilhando experiências e conhecimentos adquiridos Cidade do Porto - vale sempre a pena voltar
  4. O porquê deste tema! Encontrar uma metodologia que simplifique processos

    e minimize os erros Util tanto aos iniciados em Drupal como noutras soluções Partilhar ideias e fomentar a discussão - as vossas experiências
  5. Deployment (I) • de·ploy (d-ploi) • v. de·ployed, de·ploy·ing, de·ploys

    • v.tr. 1. • a. To position (troops) in readiness for combat, as along a front or line. • b. To bring (forces or material) into action. • C. To base (a weapons system) in the field. • 2. To distribute (persons or forces) systematically or strategically. • 3. To put into use or action
  6. Tipicamente... Não existe filosofia de testes (funcionais, end2end, regressivos, etc..)

    Muitas vezes “Testa-se” em produção Copiam-se e editam-se ficheiros remotamente (ftp, ssh, cpanel, etc..) Não se “marcam” as alterações Shared hostings...
  7. Ambientes (I) Local - Tipicamente corresponde ao computador de cada

    developer, ambiente instável e sujeito a erros Dev - Desenvolvimento, normalmente partilhado por vários developers, nem sempre idêntico a Produção Staging - Testes/Qa, deve estar idêntico a produção Produção - Acedido pelos utilizadores finais do site, não deve estar indisponível
  8. Processos de workflow Manuais morosos e repetitivos sujeitos a falhas

    humanas Automáticos mais rápidos menos sujeitos a erros
  9. Código (II) Basicamente é representado em ficheiros, pode-se: copiar normalmente

    entre máquinas ex: scp -r /www/sites/drupal/. [email protected]:/www/mysite/ sincronizar entre máquinas ex: rsync /www/sites/drupal/. [email protected]:/www/mysite/ drush rsync @dev.site1 @prod.site1 usar controlo de versão entre máquinas ex: git, mercurial, svn
  10. Drush É o canivete suiço do Drupal, expõe todo o

    potencial do Drupal na linha de comandos: Limpar as caches Criar/restaurar um site (código e dados num único ficheiro) Executar o cron Executar testes Obter status do site Instalar/activar módulos e temas Executar comandos sql Criar e obter info de utilizadores E muito mais...
  11. Drush Site Aliases (I) Drupal version : 7.12 Default theme

    : garland Administration theme : garland PHP configuration : /Applications/acquia-drupal/php/bin/php.ini Drush version : 4.5 Drush configuration : /Users/myuser/.drush/drushrc.php Drush alias files : /Users/myuser/.drush/site- 01.aliases.drushrc.php Drupal root : /www/prod/site-01/
  12. Controlo de Versão: Git (I) Cada utilizador tem o seu

    repositório Cada utilizador faz “commit” para o seu repositório e faz “push” das alterações para o respositório central Outros utilizadores podem obter as alterações através de um “pull” Diferentes linhas de código (branches) Código referente a releases (tags) Corre em diferentes plataformas (osx, linux, win) Linha de comandos ou gui (conforme o s.o.) Github (repositórios online)
  13. Controlo de Versão: Git (II) Principais operações git init --bare

    myrepo git add readme.txt git commit -m “commit inicial” git clone user@host:/path/to/project.git git status git push origin master git branch <nome-novo-branch>
  14. Dados (II) Copiar remotamente a bd é simples, mas.. Site

    deve estar offline A bd pode ter uma dimensão muito elevada (processo de dump e restore lento) Aceitável até X MB (depende processamento) Pode ser feito diretamente com os comandos mysql e mysqldump ou através do drush ex: drush sql-sync @prod.site1 @dev.site1 --result-file=/tmp/site1.dump
  15. Boas Práticas: ambientes Se a opção for um shared hosting,

    escolher um que “suporte” Drupal e acesso por ssh Planear ambientes de acordo com as necessidades Usar GIT (nem que apenas localmente) Essencial: Configurar o drush e respetivos aliases Iniciar projeto localmente: instalar drupal, efetuar configurações e depois passar para os restantes ambientes Usar o features
  16. Boas Práticas: Passagem a produção Escolher horário com menos tráfego

    Antes de iniciar processo Desligar cron ou outros processos automáticos Colocar site offline Limpar caches Efetuar backups Quando o processo terminar Correr o update.php Testes: validar áreas afectadas pelo novo código Colocar site online
  17. Soluções na Cloud Acquia Dev Cloud Desenvolvido pela acquia e

    100% Drupal Preço elevado Workflow simples (dev > stg > prod) Suporte git e svn Acesso SSH PHP Fog Multiplas aplicações Preço intermédio Suporte git GetPantheon Dedicado 100% a Drupal Preço intermédio