としっぴーず

旅行やミュージカル、Wordpress等のITネタ中心のブログ

Capistranoでデプロイ環境を構築

      2015/08/25

やりたいこと

  • gitのマスターの最新のphpソースをデプロイしたい
  • でプロツールはCapistranoを使う
  • 今回はお試しなのでデプロイ元サーバとデプロイ先サーバは同じ。1台のみ
  • あとでjenkinsでCapistranoの操作も自動化したい


$ gem install capistrano
$ gem install capistrano-ext
$ gem install railsless-deploy
$ gem install capistrano_colors

capistrano-ext
デプロイ先を本番環境、ステージング環境などで切り替えられる

railsless-deploy
rails以外のアプリケーションのデプロイに必要

インストールの確認

$ cap -V
Capistrano Version: 3.1.0 (Rake Version: 10.1.1)

デプロイ用capfileの作成


$ cap install

ver.3はcopifyじゃなくinstallみたいです。
実行したディレクトリのcapfileのテンプレートができているはず。

production.rbの編集

今回はphpのソースだけなのでこんな感じ。

role :web, %w{www@localhost}
server 'localhost', user: 'xxx', password: 'xxxxxxx', roles: %w{web}
set :ssh_options, :port => "xxx"

staging.rbも適宜編集。

deploy.rbの編集


# アプリケーション名。
set :application, 'sandbox_local'
# gitリポジトリ。localなのでpathのみ。
set :repo_url, '/home/www/git/sandbox_local/'
set :branch, :master
set :scm, :git
# デプロイ先。docrootをしているのは駄目ね。。要検討。
set :deploy_to, '/home/www/sandbox/docroot/'
# ログの設定
set :format, :pretty
set :log_level, :debug
# 5世代保持する
set :keep_releases, 5

# 以下にdeploy時のtaskなどを記述。なくてもdeploy自体はできる。
# task 例)デプロイ先の再起動やキャッシュクリアなど
namespace :deploy do
# task :update do
# run_locally do
# # デプロイ元に対する処理を記述
# end
# on roles(:web) do
# # デプロイ先に対する処理を記述
# end
# end
end

deploy実行


$ cap production deploy

これで動くには動く。
でも。

  • /tmp/sandbox_localにgitのcloneができた。まぁいいけど。
  • docroot/current/xxx.phpという配置になってしまった。
  • docroot下にcapistranoのファイルがたくさんできてしまった

この辺は要調整。

 - CI