ActionCable、Nginx、Redis的配置
首先
最近我正在SPA中开发名为“Fetch”的匹配应用程序。说到匹配应用程序就是聊天。因此,我添加了聊天功能。
因为贸然涉足SPA,所以在正式环境中使用WebSocket,Redis变得必不可少。
我为了部署ActionCable而写了一篇备忘录。
假设了统一
Ruby 2.5.1
Puma
Nginx
Vue
Amazon Linux AMI release 2018.03
Ruby 2.5.1、Puma、Nginx、Vue、Amazon Linux AMI发布2018.03
解释
-
- Redisのインストール、実行
-
- Rails側の設定
Production.rb
cable.yml
Nginxの設定
/etc/nginx/conf.d/*.conf
安装和运行Redis。
在服务器上执行命令,安装Redis。
sudo yum install redis --enablerepo=epel
在服务器上执行命令,并运行Redis。
sudo service redis start
Rails的配置设置
我会设定请求的来源。
config.action_cable.allowed_request_origins = [ 'http://ドメイン', /http:\/\/ドメイン.*/]
设置WebSocket通信时的适配器
development:
adapter: async
test:
adapter: async
production:
adapter: redis
url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
channel_prefix: example_production
由于Redis的默认端口是6379,因此在启动Redis时URL为redis://localhost:6379。如果更改了端口,这里也需要相应更改。
据说channel_prefix是为了在多个应用程序中使用Redis而需要的。如果只在一个应用程序中使用Redis,则不需要。
以下是Nginx的配置
upstream puma-example-api {
server unix:///home/user/htdocs/example/tmp/sockets/puma.sock;
}
location /cable {
proxy_pass http://puma-example-api;
proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection Upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
请参考
通过Capistrano在Rails 5中部署Action Cable
将Rails 5中的Action Cable部署到Nginx和Puma环境中