詳細検索

Capistrano3와 함께 워드프레스를 배포해 보세요

아바타
글쓴이 maeno

Capistrano3와 함께 워드프레스를 배포해 보세요
日本語에서 번역 • 원문 보기

저는 Capistrano3를 사용해 최신 버전의 워드프레스를 제 호스트에 배포해 보았기에, 이 단계를 기록으로 남기고 배포 도구 "Capistrano"에 대한 이해를 쌓을 예정입니다. 예비 준비 단계로, 배포 환경을 Amazon EC2에서 t2.micro 인스턴스로 실행하고, WordPress가 실행되는 환경(Apache + MySQL + PHP), Rubygem(및 RVM), 그리고 설치된 Capistrano 3를 나열했습니다(이 부분의 준비 단계는 나중에 TIPS로 요약하고 싶지만 이번에는 생략하겠습니다).

이제 단계로 들어가 보겠습니다. 시작하려면 배포 프로젝트용 디렉터리를 만들고 Capistrano를 설치하세요.

$ CD ~
$ mkdir test-project
$ CD 테스트-프로젝트
$ cap install STAGES=test
mkdir -p config/deploy
create config/deploy.rb
config 생성/배포/test.rb
MKDIR -p lib/capistrano/taskss
선장

Capistrano3는 기본적으로 멀티 스테이지 배포 기능이 켜져 있어서, 단순히 'cap install'만 하면 프로덕션과 스테이징 스테이지가 생성됩니다. 이번에는 테스트용으로만 로컬 호스트에 배포하려고 해서, 환경 변수 'STAGES'1에 테스트 스테이지만 있는 프로젝트를 인수로 지정할 예정입니다.

다음으로 Capistrano의 초기 설정을 하세요. 필요하다면 프로젝트 디렉터리 바로 아래에 생성된 'Capfile'을 편집하세요.

$ vim Capfile

배포에 RVM이나 RBENV를 사용하지 않기 때문에 편집 작업이 없습니다.

다음으로 'config/deploy/test.rb'를 편집해 배포 환경(서버)을 설정하세요.

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

set :ssh_options, { 
  키: %w(/home/deploy/.ssh/id_rsa), 
  forward_agent: 맞아요, 
}

그 다음, 'config/deploy.rb'에서 배포 내용을 설정하세요.

$ vim config/deploy.rb
---- 
# config capistrano 3.1에만 유효
락 '3.2.1' 

# 배포할 애플리케이션 이름
Set :application, 'wordpress' 

# 배포자 URL 및 최신 버전의 워드프레스 핵심 파일 파일
세트 :wget_url, 'http://ja.wordpress.org/' 
세트 :wget_file, 'latest-ja.tar.gz' 

# 테마 파일 GitHub URL 배포 (선택 사항)
#set :repo_url, 'git@example.com:me/my_repo.git' 

# 배포할 GitHub 저장소의 분기명 (선택 사항)
#set :branch, '마스터' 

# 데이터베이스 관리 계정(사용자 및 데이터베이스 생성 권한이 있는 사용자)
set :d b_user, 'root' 
set :d b_user_passwd, 'password' 

# 워드프레스 데이터베이스 정보 (없으면 생성하세요)
정해진 wp_db_name, 'wp_test_db' 
세트 :wp_db_user, 'wp_user' 
세트 :wp_db_user_passwd, 'wp_user_pass' 
세트 :wp_db_prefix, 'test_' 

# 문서 루트로 배포
Set :d eploy_to, '/var/www/html' 

# git의 버전 관리
#set :scm, :git

# :format의 기본 값은 :p retty입니다
Set :format, :p retty

# 디버그 모드의 로그 출력 레벨을 지정하세요
셋 :log_level, :d ebug

# :p ty의 기본 값은 거짓입니다
# :p 세팅, 진짜

# 기본 값은 :linked_files []
Set :linked_files, %w{config/database.yml}

# linked_dirs의 기본 값은 []
Set :linked_dirs, %w{bin log TMP/PIDS TMP/캐시 TMP/소켓 벤더/bundle public/system public/assets}

# default_env의 기본 값은 {}
# set :d efault_env, { path: "/opt/ruby/bin:$PATH" }

# 세대 경영 횟수. 이번에는 2세대 경영이 될 거야
정해 :keep_releases, 2

# Capistrano 기본 작업 삭제
framework_tasks = [:시작, :시작, :업데이트 중, :업데이트, :p유전, :p완성, :마무리, :완료]
framework_tasks.각 두 |t|
  Rake::Task["deploy:#{t}"].clear
끝
레이크::과제[:d에플로이].완료


desc 'WordPress 사이트 배포' 
Task :d eploy do
  On roles(:web) do
    # 공식 워드프레스 웹사이트에서 최신 버전의 워드프레스를 다운로드하고 아카이브를 집 디렉터리로 확장하세요
    deploy_log = capture "wget #{fetch(:wget_url)}#{fetch(:wget_file)}; tar -zxvf #{fetch(:wget_file)}" 
    archive_dirname = fetch(:wget_file).gsub(/.tar.gz/, '')

    # 다운로드한 모든 WordPress 소스를 문서 루트에 복사하세요
    # * 배포 사용자가 문서 루트에 쓰기 위해 필요한 권한
    deploy_log = capture "cp -fpr #{fetch(:application)}/* #{fetch(:d eploy_to)}" 

    # 워드프레스 설정 파일이 없다면 만들어 주세요
    wp_config = fetch(:d eploy_to)+"/wp-config.php" 
    테스트 "[ -f #{{wp_config} ]" 
      execute "MV #{fetch(:d Eploy_to)}/wp-config-sample.php #{wp_config}" 
    끝
    # 영구 링크 리라이트를 위해 .htaccess를 만들고, 작성 권한이 없으면 작성 권한을 주세요
    htaccess = fetch(:d eploy_to)+"/.htaccess" 
    테스트 "[ -f #{htaccess} ]가 아니면 
      execute "touch #{htaccess}; chmod a+w #{htaccess}" 
    끝

    # 홈 디렉토리에 남은 아카이브 디렉터리를 삭제하세요
    deploy_log = capture "rm -rf #{fetch(:application)}" 
    정보 deploy_log
  끝
끝

실제로 활용해 보세요.

DEBUG[a7ae646a] /usr/bin/env wget http://ja.wordpress.org/latest-ja.tar.gz 실행 중; tar -zxvf latest-ja.tar.gz localhost에서
DEBUG[a7ae646a] 명령어: wget http://ja.wordpress.org/latest-ja.tar.gz; tar -zxvf latest-ja.tar.gz
~ (생략됨) ~
DEBUG[a7ae646a] 종료 시간은 3.837초, 종료 상태 0(성공). 
DEBUG[d19f20d5] localhost에서 /usr/bin/env cp -fpr wordpress/* /var/www/html 실행 중
DEBUG[d19f20d5] 명령어: cp -fpr wordpress/* /var/www/html
DEBUG[d19f20d5] 종료 0.150초 동안 종료 상태가 0(성공). 
DEBUG[dd0f38a4] localhost에서 /usr/bin/env [ -f /var/www/html/wp-config.php ] 실행 중
DEBUG[dd0f38a4] 명령어: [ -f /var/www/html/wp-config.php ]
DEBUG[dd0f38a4] 종료 시간은 0.102초였고, 종료 상태 1(실패). 
INFO[35f0bcff] localhost에서 /usr/bin/env mv /var/www/html/wp-config-sample.php /var/www/html/wp-config.php 실행 중입니다
DEBUG[35f0bcff] 명령어: mv /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
INFO[35f0bcff] 0.102초에 완주했고, 출구 상태 0(성공). 
DEBUG[822f4fb0] localhost에서 /usr/bin/env [ -f /var/www/html/.htaccess ] 실행 중
DEBUG[822f4fb0] 명령어: [ -f /var/www/html/.htaccess ]
DEBUG[822f4fb0] 종료 시간은 0.107초, 종료 상태 0(성공). 
DEBUG[25219b94] localhost에서 /usr/bin/env rm -rf wordpress를 실행 중입니다
DEBUG[25219b94] 명령어: rm -rf wordpress
DEBUG[25219b94] 종료 시간 0.111초 만에 종료, 종료 상태 0(성공). 
정보

위 로그가 출력되었고, 최신 버전의 WordPress 소스가 문서 루트에 성공적으로 배포되었습니다. 이번에는 여기까지입니다. 다음에는 데이터베이스를 만들고 초기 설정을 마지막 순간에 삽입해 보려고 합니다. WordPress 구성 파일을 다시 작성한 뒤, GitHub에서 WordPress 테마를 다운로드할 예정입니다.

참고 사이트


  1. 여러 단계가 필요하다면, 인수들을 쉼표로 구분하여 명시하세요.

  2. 필요하다면 배포 환경(예: rbenv, bundler)에 따라 Gemfile을 요구합니다.

Related Articles