Rails:Action Cable を本番にデプロイする手順

Action Cable を使った Rails アプリをデプロイする時に必要な手順を整理します。

環境

  • Ruby 2.5.1
  • rvm 1.29.7
  • Rails 5.2
  • AMS EC2
  • Ubuntu 18.04 LTS 20180814

サーバのセットアップ

Nginx + Passenger

「Passenger + Apache」でウェブサーバを組んでいる場合、Action Cable を利用できません!

「Nginx + Passenger」環境のサーバを使うか、Passenger スタンドアローンのリバースプロキシーサーバを組む必要があります。

「Nginx + Passenger」での新規サーバのセットアップは手順こちら:

▶︎ Rails5:EC2 + Ubuntu + Nginx + Passenger でデプロイ

Redis のインストール

サーバに Redis をインストールします。

$ sudo apt-get install redis-server

Nginx の設定

Nginx の設定ファイルに「location /cable」のコードを追加します。

server {
    listen 80;
    server_name www.example.com;
    root /var/www/YOUR_APP_NAME_HERE/public;
    passenger_enabled on;

    ### INSERT THIS!!! ###
    location /cable {
        passenger_app_group_name YOUR_APP_NAME_HERE_action_cable;
        passenger_force_max_concurrent_requests_per_process 0;
    }
}

Rails アプリのセットアップ

config/cable.yml

config/cable.yml の「production」を以下のように変更します。


# 本番ドメインが example.com の場合
production:
  adapter: redis
  url: redis://redis.example.com:6379

local: &local
  adapter: redis
  url: redis://localhost:6379

development: *local
test: *local

config/environments/production.rb

production.rb に以下のコードを追加します。


config.action_cable.allowed_request_origins = ["http://example.com"]

サーバ再起動

変更を反映させた後、サーバを再起動します。

$ sudo service nginx restart

必要な手順はこれだけ。

本番で Action Cable が正常に動いていればOKです!

Sources

兵庫県西宮市生まれのフリーランスRailsエンジニア。案件によってWordPressの作業も請け負ったりしてます。2014年から2016年にかけてオーストラリアで生活。 現在は東京を拠点に活動。/ 前職・資格:公認会計士 / プログラミング言語:Ruby, JavaScript, HTML, CSS / 日本語・英語
コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です