Skip to content

Repository files navigation

WP Deployer

Boilerplate para deploy e gerenciamento de instalações WordPress com DDEV (desenvolvimento) e EasyEngine (produção/staging).

Funcionalidades

  • Inicialização automática do WordPress no ddev start
  • Deploy via Deployer com cadeia de tarefas automatizada
  • Provisionamento de ambientes EasyEngine (criação de site, shared wp-config, primeiro deploy)
  • Instalação de scripts de manutenção remotos (backup, restore)
  • Suporte a múltiplos ambientes com .env por stage

Pré-requisitos

Configuração de ambiente

O projeto usa arquivos .env por stage. Copie .env.example para .env e preencha os valores:

cp .env.example .env
ArquivoUso
.envValores locais / desenvolvimento (base)
.env.productionSobrescreve .env para produção
.env.stagingSobrescreve .env para staging

O stage é detectado automaticamente pelo argumento do dep (ex: dep deploy production) ou pela variável DEPLOY_ENV=production.

Variáveis principais

PROJECT_TYPE=native # native | bedrock
PROD_STACK=easyengine # stack do servidor de produção
PROD_IP=0.0.0.0
PROD_PORT=2232
PROD_DOMAIN=example.com
STAGING_IP=0.0.0.0
STAGING_PORT=2232
STAGING_DOMAIN=staging.example.com
MGMT_USER=infoadm # usuário SSH no host EasyEngine (porta 22)# WordPress bootstrap
WP_TITLE="Meu Site"
WP_ADMIN_USER=admin
WP_ADMIN_PASSWORD=change-me
WP_ADMIN_EMAIL=admin@example.com
WP_TIMEZONE=America/Sao_Paulo
WP_DB_PREFIX=""
WP_LOCALE=pt_BR
# Banco de dados de produção
DBNAME=""
DBUSER=doadmin
DBPASS=""
DBHOST=""
DBPREFIX=""# Backup Duplicati/B2 (opcional)
B2_APPLICATION_KEY=""
B2_APPLICATION_KEY_ID=""

Desenvolvimento local

git clone https://github.com/devmasnaodev/wp-deployer.git
cd wp-deployer
cp .env.example .env # preencha WP_ADMIN_PASSWORD no mínimo
ddev start

No ddev start, o projeto executa em sequência:

  1. composer-install-if-needed — instala dependências se necessário
  2. import-seed — importa init/data/db.sql.gz se existir
  3. install-wp-if-needed — executa wp core install se o WordPress ainda não estiver instalado
  4. import-uploads — extrai init/data/uploads.tar.gz se existir

Se init/data/db.sql.gz existir, a instalação via WP-CLI é ignorada.

Gerando dados de inicialização

Para criar o padrão de importação do projeto (banco + uploads):

ddev generate-init-data

O comando exporta e salva em init/data/:

  • db.sql e db.sql.gz
  • uploads.tar.gz
  • webp-express.tar.gz (se o diretório existir)

Deploy

O deploy é feito via Deployer. As configurações de hosts ficam em deploy/config.php.

dep deploy production
dep deploy staging

Cadeia de deploy

validate:env
backup:files → backup:db
→ deploy (upload + composer install)
→ wordpress:update-db
→ wordpress:cache
→ services:restart
→ services:clean
→ wp:config:lock

Em caso de falha, deploy:unlock é executado automaticamente. Rollback com restore opcional:

dep rollback production # rollback simples
RESTORE_ON_ROLLBACK=1 dep rollback production # rollback + restore de arquivos/banco

CI (GitHub Actions)

As variáveis de ambiente são configuradas nos segredos do repositório. O workflow .github/workflows/deploy.yml é acionado manualmente (workflow_dispatch) e roda em um runner self-hosted com a tag deployer.

Provisionamento EasyEngine

Para provisionar um novo ambiente do zero (criação do site, primeiro deploy, importação de dados):

dep ee:provision production
dep ee:provision staging

O ee:provision executa em sequência:

  1. ee:site:create — cria o site no EasyEngine com SSL, cache e banco externo
  2. ee:configure-deploy-target — adiciona volume do site ao container deploy-target
  3. ee:prepare-htdocs — salva wp-config.php gerado pelo EE e limpa current/
  4. composer:auth:upload — envia auth.json para shared/ no servidor
  5. ee:setup-shared-wp-config — move wp-config.php para shared/
  6. Primeiro dep deploy <stage>
  7. init:generate-data + init:data:import — gera e importa dados locais

Tasks de provisionamento individuais

dep ee:site:create production # só criação do site
dep ee:configure-deploy-target production
dep ee:prepare-htdocs production
dep ee:setup-shared-wp-config production
dep composer:auth:upload production

Setup de scripts de manutenção

Instala scripts de backup e restore no servidor a partir do repositório remoto:

dep setup:scripts production
dep setup:scripts staging

Scripts instalados em <base_dir>/scripts/: backup-db.sh, backup-files.sh, restore.sh e lib/common.sh. O conjunto de scripts é selecionado automaticamente pelo PROD_STACK e PROJECT_TYPE.

Tasks de manutenção

# Importação de dados
dep init:data:import production # importa banco + uploads + webp-express
dep db:import production # só banco (db.sql)
dep uploads:import production # só uploads
dep db:replace-urls production # substitui URLs do DDEV para produção# wp-config.php
dep wp:config:lock production # define DISALLOW_FILE_EDIT, DISALLOW_FILE_MODS, etc.
dep wp:config:unlock production # remove as constantes acima# Backup Duplicati
dep duplicati:register-backup-task production # registra tarefa e cron diário

Estrutura do projeto

.ddev/
commands/
host/generate-init-data # exporta banco e uploads para init/data
web/install-wp-if-needed # instala WordPress via WP-CLI no start
deploy/
bootstrap.php # carregamento de .env por stage
config.php # hosts (production, staging)
helpers.php # funções auxiliares (ee_shell, run_on_management_host, …)
tasks/
deploy-chain.php # cadeia de deploy e hooks
provisioning.php # provisionamento EasyEngine e scripts
maintenance.php # db:import, uploads:import, wp:config:lock, …
init/data/ # seeds de banco e uploads (não versionados)
scripts/ # install-wp-core.php (bootstrap local)
web/ # instalação WordPress
deploy.php # entrypoint do Deployer

Contribuição

Pull requests são bem-vindos. Para grandes mudanças, abra uma issue primeiro.

Licença

Consulte o arquivo LICENSE para mais informações.

About

WP Deployer é uma boilerplate para facilitar o deploy e gerenciamento de instalações WordPress em ambientes de desenvolvimento com DDEV e produção.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages