Engineer as a Lifestyle @tenkoma

tenkoma's testing blog

Capistranoで遊ぶ

最近まで知りませんでした。

インストール

% sudo apt-get install ruby
% sudo apt-get install rubygems
% sudo gem install capistrano --include-dependencies
% sudo find / -name cap
/var/lib/gems/1.8/bin/cap

findで探すまでに半時間くらい無駄に費やしていた。
zshrcでPATHに追加

export PATH=$PATH:/var/lib/gems/1.8/bin

デプロイしてみる

% cd www/learnphp/
% mkdir noticedate
% cd noticedate
% vim index.php
<?php
echo date('Y-m-d H:i:s');
?>

capistrano 2.0ではconfig/deploy.rb生成はcapifyというコマンドを使うぽい

% cd ..
% capify noticedate
[add] writing `noticedate/Capfile'
[add] writing `noticedate/config/deploy.rb'
[done] capified!

こんな風に。

set :application, "noticetime"
set :repository,  "file:///home/tenkoma/svn-repos/noticetime/trunk"
set :user, "tenkoma"
set :password, "********"
set :deploy_to, "/home/tenkoma/www/#{application}"

role :app, "tenkoma.sakura.ne.jp"
role :web, "tenkoma.sakura.ne.jp"

desc "make brank file"
task :touchfile do
    run "touch /home/tenkoma/www/hoge.php"
end

ローカルにsvnリポジトリを作って、転送を試みたが、できない。リモートから、直接リポジトリへアクセスできないとダメって事か。操作する側からしか見られないリポジトリから、とかファイルシステム上のファイルを直接転送みたいなことをやってみようと思ったけど。
とりあえず、capifyで生成したファイルをスクリプトと同じディレクトリにおいてリポジトリにコミットとかはしない、というか、それはアップロードされないようにするべきか。

debian% cap deploy
  * executing `deploy'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
  * executing "svn checkout -q  -r1 file:///home/tenkoma/svn-repos/noticetime/trunk /home/tenkoma/www/noticedate/releases/20070919173509 && (echo 1 > /home/tenkoma/www/noticedate/releases/20070919173509/REVISION)"
    servers: ["tenkoma.sakura.ne.jp"]
    [tenkoma.sakura.ne.jp] executing command
 ** [out] svn: not found
    command finished
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/tenkoma/www/noticedate/releases/20070919173509; true"
    servers: ["tenkoma.sakura.ne.jp"]
    [tenkoma.sakura.ne.jp] executing command
    command finished
command "svn checkout -q  -r1 file:///home/tenkoma/svn-repos/noticetime/trunk /home/tenkoma/www/noticedate/releases/20070919173509 && (echo 1 > /home/tenkoma/www/noticedate/releases/20070919173509/REVISION)" failed on tenkoma.sakura.ne.jp