詳細検索

Tente implantar WordPress com Capistrano3

Avatar
por maeno
5 min de leitura

Tente implantar WordPress com Capistrano3
Traduzido do 日本語 • Ver original

Tentei usar o Capistrano3 para implantar a versão mais recente do WordPress no meu próprio host, então vou manter os passos como um log e avançar meu entendimento da ferramenta de implantação "Capistrano". Como preparação preliminar, lancei o ambiente de implantação como uma instância t2.micro na Amazon EC2 e listei o ambiente onde o WordPress roda (Apache + MySQL + PHP), Rubygem (e RVM) e Capistrano 3 instalados (gostaria de resumir os passos preparatórios nessa área como DICAS em data posterior, mas vou omitir).

Agora, vamos para os passos. Para começar, crie um diretório para seu projeto de implantação e instale o Capistrano.

$ CD ~
$ mkdir test-project
$ CD projeto de teste
$ cap install STAGES=test
mkdir -p config/deploy
criar config/deploy.rb
criar config/deploy/test.rb
mkdir -p lib/capistrano/tasks
Capified

O Capistrano3 tem o recurso de implantação multi-estágio ativado por padrão, então basta 'cap install' para criar uma fase de produção e de staging. Desta vez, vamos tentar implantar no meu localhost apenas para testes, então vou especificar um projeto com apenas a etapa de teste como argumento para a variável de ambiente 'STAGES'1.

Em seguida, faça a configuração inicial do Capistrano. Se necessário, edite o 'Capfile' criado diretamente no diretório do projeto.

$ vim Capfile

Como não usaremos RVM ou RBENV para implantação, não há edições2.

Em seguida, edite 'config/deploy/test.rb' para configurar o ambiente de implantação (servidor).

$ vim config/deploy/test.rb
---- 
role :app, %w{deploy@localhost}
role :web, %w{deploy@localhost}
role :d b, %w{deploy@localhost}

Set :ssh_options, { 
  chaves: %w(/home/deploy/.ssh/id_rsa), 
  forward_agent: verdade, 
}

Depois, defina o conteúdo da implantação em 'config/deploy.rb'.

$ vim config/deploy.rb
---- 
# configuração válida apenas para Capistrano 3.1
Trava '3.2.1' 

# Nome do aplicativo para implantação
Set :Application, 'WordPress' 

# URL do distribuidor e nome de arquivo da versão mais recente dos arquivos principais do WordPress
Definir :wget_url, 'http://ja.wordpress.org/' 
Set: wget_file, 'latest-ja.tar.gz' 

# Arquivo de tema URL do GitHub a partir do qual ele é distribuído (opcional)
#set :repo_url, 'git@example.com:me/my_repo.git' 

# Nome do branch do repositório GitHub a ser implantado (opcional)
#set :branch, 'mestre' 

# Conta de gerenciamento de banco de dados (usuários e usuários com permissões de criação de banco de dados)
Defina :d b_user, 'root' 
Defina :d b_user_passwd, 'senha' 

# Informações do banco de dados do WordPress (crie se você não tiver um)
Set :wp_db_name, 'wp_test_db' 
Set :wp_db_user, 'wp_user' 
Definir :wp_db_user_passwd, 'wp_user_pass' 
Set: wp_db_prefix, 'test_' 

# Implantar na raiz do documento
Defina :d eploy_to, '/var/www/html' 

# Controle de versão no git
#set :scm, :git

# Valor padrão para :format é :p retty
set: format, :p retty

# Especifique o nível de saída do log para o modo depuração
Set :log_level, :d ebug

# Valor padrão para :p ty é falso
# Preparem :p, verdade

# Valor padrão para :linked_files é []
set :linked_files, %w{config/database.yml}

# Valor padrão para linked_dirs é []
Set :linked_dirs, %w{Bin log TMP/PIDS TMP/cache TMP/Vendor/Bundle Public/System Public/Assets}

# Valor padrão para default_env é {}
# defina :d efault_env, { path: "/opt/ruby/bin:$PATH" }

# Número de gerações de gestão de geração. Desta vez, serão 2 gerações de gestão
Set :keep_releases, 2

# Exclua tarefas padrão do Capistrano
framework_tasks = [:começando, :começando, :atualizando, :atualizado, :p ublishing, :p ublished, :finalizando, :terminando]
framework_tasks.cada do |t|
  Rake::Task["deploy:#{t}"].limpar
fim
Ancinho::Tarefa[:d eploy].limpar


desc 'Implantar o site WordPress' 
tarefa :d eploy do
  Sobre papéis(:web) fazer
    # Baixe a versão mais recente do WordPress do site oficial do WordPress e expanda o arquivo para o seu diretório pessoal
    deploy_log = capturar "wget #{fetch(:wget_url)}#{fetch(:wget_file)}; tar -zxvf #{fetch(:wget_file)}" 
    archive_dirname = fetch(:wget_file).gsub(/.tar.gz/, '')

    # Copie todas as fontes do WordPress baixadas para a raiz do documento
    # * Permissão necessária para que o usuário de implantação escreva na raiz do documento
    deploy_log = capture "cp -fpr #{fetch(:application)}/* #{fetch(:d eploy_to)}" 

    # Crie um arquivo de configuração no WordPress se você não o tiver
    wp_config = buscar(:d eploy_to)+"/wp-config.php" 
    a menos que teste "[ -f #{wp_config} ]" 
      execute "MV #{Fetch(:d Eploy_to)}/wp-config-sample.php #{wp_config}" 
    fim
    # Crie um .htaccess para reescrita de permalink e dê permissão de escrita se você não tiver
    htaccess = fetch(:d eploy_to)+"/.htaccess" 
    a menos que teste "[ -f #{htaccess} ]" 
      execute "toque #{htaccess}; chmod a+w #{htaccess}" 
    fim

    # Exclua os diretórios de arquivo deixados no diretório inicial
    deploy_log = capturar "rm -rf #{fetch(:application)}" 
    Informações deploy_log
  fim
fim

Tente aplicar isso na prática.

DEBUG[a7ae646a] Rodando /usr/bin/env wget http://ja.wordpress.org/latest-ja.tar.gz; tar -zxvf latest-ja.tar.gz no localhost
DEBUG[a7ae646a] Comando: wget http://ja.wordpress.org/latest-ja.tar.gz; tar -zxvf latest-ja.tar.gz
~ (omitido) ~
DEBUG[a7ae646a] Finalizou em 3,837 segundos com status de saída 0 (bem-sucedido). 
DEBUG[d19f20d5] Rodando /usr/bin/env cp -fpr wordpress/* /var/www/html no localhost
DEBUG[d19f20d5] Comando: cp -fpr wordpress/* /var/www/html
DEBUG[d19f20d5] Finalizado em 0,150 segundos com status de saída 0 (bem-sucedido). 
DEBUG[dd0f38a4] Rodando /usr/bin/env [ -f /var/www/html/wp-config.php ] no localhost
DEBUG[dd0f38a4] Comando: [ -f /var/www/html/wp-config.php ]
DEBUG[dd0f38a4] Finalizou em 0,102 segundos com status de saída 1 (falhou). 
INFO[35f0bcff] Rodando /usr/bin/env mv /var/www/html/wp-config-sample.php /var/www/html/wp-config.php no localhost
DEBUG[35f0bcff] Comando: mv /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
INFO[35f0bcff] Terminou em 0,102 segundos com status de saída 0 (bem-sucedido). 
DEBUG[822f4fb0] Rodando /usr/bin/env [ -f /var/www/html/.htaccess ] no localhost
DEBUG[822f4fb0] Comando: [ -f /var/www/html/.htaccess ]
DEBUG[822f4fb0] Finalizado em 0,107 segundos com status de saída 0 (bem-sucedido). 
DEBUG[25219b94] Rodando /usr/bin/env rm -rf wordpress no localhost
DEBUG[25219b94] Comando: rm -rf wordpress
DEBUG[25219b94] Finalizado em 0,111 segundos com status de saída 0 (bem-sucedido). 
INFO

O log acima foi gerado, e a versão mais recente do código-fonte do WordPress foi implantada com sucesso na raiz do documento. É só isso por agora. Da próxima vez, vou tentar criar um banco de dados e inserir as configurações iniciais como uma tarefa de última hora, reescrever o arquivo de configuração do WordPress e baixar o tema do WordPress do GitHub.

Sites de Referência


  1. Se você precisar de múltiplas etapas, especifique os argumentos separados por vírgulas.

  2. Se necessário, exija o Gemfile de acordo com o ambiente em que é implantado, como rbenv ou bundler.

Related Articles