DHHのシンプルなRails 5チャットの例を、AWSの単独のEC2インスタンスに展開しようとしています。コードはこちらです:https://github.com/HectorPerez/chat-in-rails5AWSのActionCable:WebSocketハンドシェイク中のエラー:予期しない応答コード:404
私たちは、このように単一のインスタンスをスピンアップするElastic Beanstalkでの使用:
eb create dev-env -p “64bit Amazon Linux 2015.09 v2.0.4 running Ruby
2.2 (Puma)” –single -i t2.micro --envvars
SECRET_KEY_BASE=g5dh9cg614a37d4bdece9126b42d50d0ab8b2fc785daa1e0dac0383d6387f36b
は、これは最小インストールであるため、無負荷分散装置は、そこにはElasticacheはありません、と。 EC2インスタンスにredisをインストールするには、次のような.ebextensions設定ファイルを追加しました:https://gist.github.com/KeithP/08b38189372b7fd241e5#file-ebextensions-redis-config; Gitはコミットしてデプロイします。
しかし、WebSocketをdoesntの仕事:
application-a57354de3399cd895ca366df9bd7316ab69e81d266b63be7d7be563ebc78ab9d.js:27
WebSocket connection to ‘ws://dev-env-y2e5dcrxqk.elasticbeanstalk.com/cable’ failed:
Error during WebSocket handshake: Unexpected response code: 404
サーバproduction.logが2のための "/ケーブルをGET開始" を示しています。ブラウザのコンソールの検査では、我々は以上の繰り返しとの上にこのエラーが表示すべての "Finished/cable"コール。 はActiveCableから何もDEBUGメッセージはありません。
/var/app/containerfiles/logs/production.log
-------------------------------------
INFO -- : Processing by RoomsController#show as HTML
DEBUG -- : [1m[36mMessage Load (0.1ms)[0m [1m[34mSELECT "messages".* FROM "messages"[0m INFO -- : Rendered collection (0.0ms)
INFO -- : Rendered rooms/show.html.erb within layouts/application (0.5ms)
INFO -- : Completed 200 OK in 2ms (Views: 1.2ms | ActiveRecord: 0.1ms)
INFO -- : Started GET "/cable" for <ip_address> at 2016-01-01 17:28:26 +0000
INFO -- : Started GET "/cable/" for <ip_address> at 2016-01-01 17:28:26 +0000
INFO -- : Finished "/cable/" for <ip_address> at 2016-01-01 17:28:26 +0000
redisがインストールされ、正常に起動したことが確認されました。 production.rbで 'ActionCable.server.config.disable_request_forgery_protection = true'を試した – KeithP
nginxのようなリバースプロキシを使用しているのですか、ポート80で動作するレールアプリに直接接続していますか? – tpbowden
https://gist.github.com/KeithP/f8534c04d20c2b4e4b1d – KeithP