最近まで知りませんでした。
インストール
% 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