sudo yum install -y git gcc gcc-c+ openssl-devel readline-devel
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
rbenv --verison
git clone https://github.com/sstepehenson/ruby-build.git ~/.rbenv/plugins/ruby-build
rbenv install 2.3.0
rbenv local 2.3.0
# SSH設定
ssh-keygen
ssh-copy-id [email protected]
gem install capistrano
mkdir capistrano_practice && cd capistrano_practice
cap install
Capistranoデフォルトタスク削除。 以下を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
config/deploy/ステージ名.rbを編集
server 'xxx.xx.xx.xx', user: 'vagrant', roles: %w{web}
↑xxx.xx.xx.xxサーバを対象にする。そのユーザはvagrantでログインする。そのサーバにはwebサーバというロールを与える。
config/deploy.rbを編集
task :タスク名 do
on roles(:web) do
output = capture "sudo cat /etc/passwd | grep ○○"
info output
end
end
↑
taskでタスク名と、do~endでこのタスクで何をするのかを記述。
on roles で、どのロールに対する処理かを記述。
captureは、コマンド実行結果を保存する。
それをoutputに代入して、info outputで出力するようにしている。
ちなみに、on rolesをrun_locally doにすると、自分に対して処理。
タスク実行
cap test タスク名
capコマンドの第一引数が、/config/deploy/○○.rbの○○に対応。
第二引数が、deploy.rb内の、task :タスク名に反応。