株式会社 科学技術研究所
ホーム > かぎけんブログ > 備忘録 > [Rails] Capistrano3.xでデプロイする (後編)
[Rails] Capistrano3.xでデプロイする (後編)
投稿日:2017/04/26
カテゴリ:備忘録

Capistrano3.x系でリモートサーバーにRuby on Railsアプリケーションをデプロイする設定の備忘録(後編)です。
前篇は以下のURLよりアクセスして下さい。
[Rails] Capistrano3.xでデプロイする (前編)

3. Unicornの設定
Unicornの設定ファイルをconfig/unicorn以下に作成します。
環境別に二通りのファイルを作成します。
config/unicorn/production.rb


    @app_path = [デプロイ先のパス]
    working_directory @app_path + "/current"

    worker_processes 5
    preload_app true
    timeout 30
    listen "#{@app_path}/shared/tmp/sockets/unicorn-prod.sock", :backlog => 1024
    pid "#{@app_path}/shared/tmp/pids/unicorn.pid"

    stderr_path "#{@app_path}/log/unicorn.stderr.log"
    stdout_path "#{@app_path}/log/unicorn.stdout.log"

    before_exec do |server|
      ENV['BUNDLE_GEMFILE'] = "#{@app_path}/current/Gemfile"
    end

    before_fork do |server, worker|
      if defined?(ActiveRecord::Base)
        ActiveRecord::Base.connection.disconnect!
      end

      old_pid = "#{server.config[:pid]}.oldbin"
      if File.exists?(old_pid) && server.pid != old_pid
        begin
          Process.kill("QUIT", File.read(old_pid).to_i)
        rescue Errno::ENOENT, Errno::ESRCH
        end
      end
    end

    after_fork do |server, worker|
      if defined?(ActiveRecord::Base)
        ActiveRecord::Base.establish_connection
      end
    end
  

 

4. デプロイ
以下コマンドで設定が正常にできているかの確認が行なえます。


    $ cap staging deploy:check
    $ cap production deploy:check
  

設定が正常に出来ているようであれば、以下コマンドでデプロイを実行します。


    $ cap staging deploy
    $ cap production deploy
  

デプロイ完了後、デプロイ先サーバーにUnicornプロセスが動いていると思います。


    $ ps aux | grep unicorn
  

 

手動でcapコマンドを実行することで、リモートサーバーにデプロイすることが出来ました。
CIとの連携はまた別の記事にまとめます。

参考
https://github.com/capistrano/capistrano
http://capistranorb.com/