/laradep

Deploy com deployer + laravel em VM`s na digital ocean e google cloud utilizando gitlab-ci

Primary LanguagePHP

Estudo prático deploy app Laravel com Deployer

Resumo

Estrutura de VM's em cloud:

  • VM deploy
  • Gerado ssh-keys (comunicação com server's de app (DO / GCP))
  • php7.0-cli (execução deployer)
  • GIT
  • Deployer
  • Gitlab runner
  • Clonado cópia do Laradep (/home/gitlab-runner/deploy) que irá executar o deploy
  • VM aplicação
  • Add user deployer
  • Gerado ssh-keys (comunicação com servidor do repositório (gitlab))
  • Add permissão server deploy (authorized_keys)
  • Composer
  • GIT
  • Nginx
  • PHPfpm
  • http://159.89.184.227/info.php

Fluxo de execução

  • Gitlab runner dispara a execução no servidor de deploy (hospedado na DO)
  • Acessa o diretório de deploy, atualiza a cópia da app referente a sua versão
  • Executa o deployer no ambiente desejado (DO / GCP ou qualquer outro test / staging / prod)
  • O deployer acessa via ssh o servidor de aplição com o usuário de deploy
  • Clona o repositório correspondente a versão do deploy dentro de suas releases (/var/www/html/laradep/releases) no path configurado no nginx
  • Executa os comandos do arquivo deploy.php da raiz do projeto
  • Faz o apontamento da current para a última release deployada
graph TD;
  A(Deploy)-->B(Digital ocean);
  A(Deploy)-->C(Google Cloud Plataform);
  B-->D(Repositório - Gitlab);
  D-->B
  C-->E(Repositório - Gitlab);
  E-->C;
Loading

Pipeline

Estrutura de diretórios da APP na VM

├── current -> releases/9
├── releases
│   ├── 7
│   │   ├── ...
│   ├── 8
│   │   ├── ...
│   └── 9
│       ├── app
│       ├── artisan
│       ├── bootstrap
│       ├── composer.json
│       ├── composer.lock
│       ├── ...
└── shared
    └── .env
    └── storage
        ├── app
        ├── framework
        └── logs

VM's DO

VM GCP

Rodando

Force host laradep.com para o IP da VM da DO 159.89.184.227

Force host laradep-gcp.com para o IP da VM GCP 35.231.28.88

Links