「capistrano インストール」でガッツリでてきます
以下いろいろと使ってみた結果です
コマンドのとこだけ実行していくと基本的な設定と動作はできるようになります
mkdir /usr/local/cap
cd /usr/local/cap
capify .
(不思議なおまじないです)cap -T
(capで実行できる命令が一覧で表示されます)emacs config/deploy.rb
set :application, "stu"
set :repository, "git://github.com/kakakikikeke/shorten_the_URL.git"
set :scm, :git
role :web, "yoshi3"
role :app, "yoshi3"
role :db, "yoshi3", :primary => true
role :db, "yoshi3"
# if you want to clean up old releases on each deploy uncomment this:
# after "deploy:restart", "deploy:cleanup"
# if you're still using the script/reaper helper you will need
# these http://github.com/rails/irs_process_scripts
# If you are using Passenger mod_rails uncomment this:
# namespace :deploy do
# task :start do ; end
# task :stop do ; end
# task :restart, :roles => :app, :except => { :no_release => true } do
# run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
# end
# end
http://d.hatena.ne.jp/officel/20120228/p1
でCapifileをちょっと設定変更
cap deploy:setup
で以下が作成された[root@yoshi3 u]# cd /u [root@yoshi3 u]# ls -lR .: 合計 4 drwxr-xr-x 3 root root 4096 6月 22 21:29 apps ./apps: 合計 4 drwxrwxr-x 4 root root 4096 6月 22 21:29 stu ./apps/stu: 合計 8 drwxrwxr-x 2 root root 4096 6月 22 21:29 releases drwxrwxr-x 5 root root 4096 6月 22 21:29 shared ./apps/stu/shared: 合計 12 drwxrwxr-x 2 root root 4096 6月 22 21:29 log drwxrwxr-x 2 root root 4096 6月 22 21:29 pids drwxrwxr-x 2 root root 4096 6月 22 21:29 system
cap deploy:check
ちゃんとdeploy:setupが実行されたかをチェックしますと基本的なコマンドは以上かと思います
あとはその他のコマンドについて何ができるのかメモっておきます
cap deploy:cold
gitからソースコードをデプロイしてくれますRackfileがないプロジェクトなので警告が表示されますが、デプロイはされました
cap deploy:web:disable
/u/apps/stu/shared/system/maintenance.htmlを作ってくれます
このパスをApacheとかのメンテ画面に設定しておくとこれを実行するだけでメンテ画面になる
cap deploy:web:enable
/u/apps/stu/shared/system/maintenance.htmlを削除してくれます。メンテ画面解除ができます
cap deploy:cleanup
/u/apps/stu/releases/配下の日付フォルダの古い順から5件削除してくれるみたいcap deploy:create_symlink
/u/apps/stu/currentを/u/apps/stu/releases/配下で一番新しいフォルダに切り替えてくれます
cap deploy:migrate
current配下に対してrakeを実行します(ビルド実行みたいな感じか)ローカルビルド的な
cap deploy:migrations
途中で失敗gitに対して何かしようとしてる感じからおそらくリモートコミットかなーと
鍵とかの設定ができていればcapからgitコミットもできそう
かなり不確定でかつ途中ですが、まぁ参考程度にw
やっぱりいちばんイイのは自分で.rbファイルのレシピを作ることですかね
あとは「deploy:cold」の中でいろいろと実行しているのでとりあえずdeploy:coldができれば問題ないですね
deploy:coldの中身
------------------------
cap deploy:update_code
cap deploy:finalize_update
cap deploy:create_symlink
------------------------
Jenkinsからコマンドキックするときはdeploy:coldではなくて上記3つのコマンドを並べたほうがよさそうですね
っていうかなんでRubyは「レシピ」って呼び方をするのだろうか?
P.S 20130513
■Tips
- deploy.rb内に「:user」「:password」を設定するとcapコマンド実行時にパスワードを聞かれなくなる
- capコマンドを実行するとまずCapifileが読まれ、その中でdeploy.rbをloadしているため「:user」「:password」の設定はcap shellなどを実行時にも読み込まれる
- sshが秘密鍵認証の場合は以下2つを指定するとできるようになる
ssh_options[:keys] = %w(/path/to/private_key) ssh_options[:passphrase] = "private_key_password"■サンプルレシピ
以下をconfig/deploy.rbに記載する
cap sample:hostname でrolesに設定したサーバのホスト名が表示される
cap -T にも表示されるようになる
desc の宣言がない場合は cap -vT をしないとタスク一覧には表示されない
namespace :sample do
desc <<-DESC
This is a sample capistrano recipe.
DESC
task :hostname, :roles => :app do
run "hostname"
end
end:appにrolesが設定してあればcap sample:hostname でrolesに設定したサーバのホスト名が表示される
cap -T にも表示されるようになる
desc の宣言がない場合は cap -vT をしないとタスク一覧には表示されない
0 件のコメント:
コメントを投稿