さくらレンタルサーバは環境変数設定ができず、capistrano3のデフォルトでgitリポジトリをデプロイしようとすると、GIT_ASKPASSという環境変数を設定しようとしてエラーになります。なのでデフォルトの機能を使わずにやってみます。
やることは、デプロイするサーバにsshで入って、pull用のディレクトリに移動して、githubリポジトリをpullします。データベース設定ファイルなどを入れ替えて、tmpディレクトリ内の不要ファイルなどを削除します。最後にドキュメントルートディレクトリに、pull用ディレクトリのシンボリックリンクをはります。まあ、これだともはやpull用とドキュメントルートを分ける必要がないと思いますが、capistranoのデフォルトの仕組みをつくるのが今めんどくさいですし、あくまで開発サーバなのでいいことにします。
mkdir hoge cd hoge cap install vim config/deploy.rb
デフォルトの内容を削除して、下記だけにします。
framework_tasks = [:starting, :started, :updating, :updated, :publishing, :published, :finishing, :finished] framework_tasks.each do |t| Rake::Task["deploy:#{t}"].clear end Rake::Task[:deploy].clear set :application, 'hoge' set :repo_url, 'git@github.com:hoge/hoge.git' set :log_level, :debug
vim config/deploy/staging.rb
set :user, "hoge" set :pull_path, "/home/#{fetch :user}/cap/#{fetch :application}" set :deploy_path, "/home/#{fetch :user}/www/#{fetch :application}" server "hoge.com", user: fetch( :user), roles: %w{web} set :ssh_options, { keys: %w(/hoge/.ssh/id_rsa), forward_agent: true, } task :git_pull do on roles(:web) do execute "cd #{fetch :pull_path}; git pull" end end task :deploy => :git_pull do on roles(:web) do execute "ln -sf #{fetch :pull_path} #{fetch :deploy_path}" execute "cp -f #{fetch :pull_path}/database.php #{fetch :pull_path}/app/Config/" execute "touch #{fetch :pull_path}/app/tmp/logs/empty; rm -rf #{fetch :pull_path}/app/tmp/logs/*" execute "touch #{fetch :pull_path}/app/tmp/cache/models/empty; rm -rf #{fetch :pull_path}/app/tmp/cache/models/*" execute "touch #{fetch :pull_path}/app/tmp/cache/persistent/empty; rm -rf #{fetch :pull_path}/app/tmp/cache/persistent/*" end end
cap staging deploy
かなり色々な事前準備というか、特定の環境を前提にしたものでもあり、本番サーバとかだと絶対使えませんが、一応動きました。開発サーバにsshで入ってgit pullってやればいいことだし、githubのpushに連動もしてないので、これだけだとほぼ無意味かなと思いますが、capistrano3の使い方が大体分かってよかったです。
参考;入門 Capistrano 3 ~ 全ての手作業を生まれる前に消し去りたい超分かりやすかった。