capistrano3でらくらくdeploy
AmazonLinux (CentOS6系) におけるcapistrano3の超基本的な構築手順です。
[ 前提条件 ]
phpアプリケーションサーバーを新規で構築します。
フレームワークはfuelphp1.6です。
webサーバーはapacheを利用します。
ソース管理はgitで行っています。
rubyは最新の2.1.0を利用します。
$ ruby -v ruby 1.8.7 (2012-10-12 patchlevel 371) [x86_64-linux]
ruby 1.8.7がインストールされているところからスタート!
- 必要なライブラリをインストールする
# wget http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm # yum install php php-common php-mbstring php-pdo php-cli php-devel php-fpm php-mysqln php-devel php-mcrypt php-xml mod_ssl php-ldap php-odbc curl-devel php-pear pcre-devel gcc-c++ zlib-devel autoconf automake libtool bison readline-devel curl-devel libxslt-devel libxml2-devel libffi-devel openssl-devel httpd-devel ncurses-devel tk-devel bzip2 sqlite sqlite-devel make git libxslt-devel sqlite-devel httpd mod_ssl httpd-devel # chkconfig httpd on # exit
- ruby最新版 2.1.0 を rvmでインストール
# curl -L https://get.rvm.io | bash -s stable # rvm install 2.1.0 ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
- 一般ユーザーのrubyの向き先を変更
# rm /usr/bin/ruby # rm /usr/bin/gem # ln -s /usr/local/rvm/rubies/ruby-2.1.0/bin/ruby /usr/bin/ruby # ln -s /usr/local/rvm/rubies/ruby-2.1.0/bin/gem /usr/bin/gem # ln -s /usr/local/rvm/gems/ruby-2.1.0/bin/ruby_executable_hooks /usr/bin/ruby_executable_hooks
- capistrano インストール
# gem install capistrano # gem install capistrano-rvm
- capistrano 実行・設定ファイル用意
# cap install STAGES=development,staging,production
※デフォルトでは stagingとproductionの2環境の設定が自動生成されます。カスタムする場合は以下のように 環境変数にSTAGESで指定してあげればOKです。
- capistranoの設定をいじる
-
- Capfile
require 'capistrano/setup' require 'capistrano/deploy' require 'capistrano/rvm' Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }
-
- config/deploy.rb
set :repo_url, 'git@github.com:XXXXXXX/YYYYYYY.git' set :deploy_to, '/home/httpd/ZZZZZZZZ/' set :scm, :git set :rvm_ruby_version, "ruby-2.1.0-p0" set :linked_files, %w{aaaaaa/public/.htaccess} set :linked_dirs, %w{aaaaaa/fuel/app/logs aaaaaa/public/wordpress} namespace :deploy do desc 'Restart application' task :restart do on roles(:app), in: :sequence, wait: 5 do execute :touch, "#{fetch :deploy_to}/tmp/restart.txt" end end end
-
- config/deploy/development.rb
set :stage, :development set :branch, 'development' set :deploy_to, '/home/httpd/XXXXXXXXX/' role :web, 'localhost' server 'localhost', user: 'user', roles: %w{web}
※今回はローカルに反映させるまでをゴールにした設定です。