capistrano 1日目

capistrano による rails アプリケーションのデプロイの復習。

install

Gemfile に追記して、 bundle install

# Gemfile
group :development do
  gem 'capistrano-rails'
end
$ bundle install

$ bundle exec cap -h
See full documentation at http://capistranorb.com/.

Install capistrano in a project:
    bundle exec cap install [STAGES=qa,staging,production,...]

    .
    .
    .

設定ファイルの生成

$ be cap install STAGES=production

STAGES は必要に応じてカンマ区切りで列挙する。

Ex) STAGES=qa,staging,production

上記コマンドの場合、以下のファイルが作成される。

  • Capfile
  • config/deploy.rb
  • config/deploy/production.rb

Git から引っ張ってくる

application, repo_url を適宜設定。

# config/deploy.rb
set :application, 'my_app_name'
set :repo_url, 'git@example.com:me/my_repo.git'

環境別のファイルに server もしくは role に deploy 先サーバを記載。

my-instance.ssh/config に定義済みとする。

# config/deploy/production.rb
# server based syntax の場合
server 'my-instance', roles: %w[app]

# role based syntax の場合
# role :app, %w[my-instance]
$ bundle exec cap production deploy

これだけ指定したサーバに revision 管理されて配置されるようになる。

※デフォルトは /var/www/

$ ls -l /var/www/my_app_name/releases
total 12
drwxr-xr-x 12 kawakubox kawakubox 4096 Dec 22 18:44 20171222184454
drwxr-xr-x 12 kawakubox kawakubox 4096 Dec 23 14:58 20171223145839
drwxr-xr-x 12 kawakubox kawakubox 4096 Dec 24 23:17 20171224231710

capistrano/rbenv

rbenv に関する設定をいくつか記述する。

今回 rbenvanyenv を介して、 home directory に入れたので、 rbenv_custom_path を設定。

# config/deploy.rb
set :rbenv_type, :user
set :rbenv_ruby, '2.4.2'
set :rbenv_custom_path, '/home/kawakubox/.anyenv/envs/rbenv'

---

今日はここまで。