質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • Ruby on Rails

    7277questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • VPS

    347questions

    VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

  • Capistrano

    114questions

    Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

  • Redis

    97questions

    Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

Redis::ProtocolErrorを解決できません。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 475

s.k

score 247

前提・実現したいこと

さくらのVPSにデプロイしたRailsアプリを動かしたいです。

発生している問題・エラーメッセージ

I, [2017-02-25T19:20:47.772654 #17510]  INFO -- : [df16f97e-a2de-4d64-a3f4-50a810953097] Completed 500 Internal Server Error in 7ms (ActiveRecord: 0.3ms)
F, [2017-02-25T19:20:47.773943 #17510] FATAL -- : [df16f97e-a2de-4d64-a3f4-50a810953097]   
F, [2017-02-25T19:20:47.774007 #17510] FATAL -- : [df16f97e-a2de-4d64-a3f4-50a810953097] Redis::ProtocolError ( Got 'H' as initial reply byte. If you're in a forking environment, such as Unicorn, you need to connect to Redis after forking. ):
F, [2017-02-25T19:20:47.774051 #17510] FATAL -- : [df16f97e-a2de-4d64-a3f4-50a810953097]   
F, [2017-02-25T19:20:47.774113 #17510] FATAL -- : [df16f97e-a2de-4d64-a3f4-50a810953097] app/controllers/works_controller.rb:22:in `show'

開発環境ではRedisを動かせたのですが、
本番環境で動かすことができません。

該当のソースコード

【config/production.rb】

・・・省略・・・
  ENV["REDIS"] = "http://candate.tk/:6379"
・・・省略・・・


candate.tkは私のサイトURLです。

おそらく、このポート番号が間違っているのが原因かと思うのですが、、、
ご経験ある方御指南お願いします。

confファイルのlistenは80番ポートを使用しています。

追加

$ ps -ef | grep redis
redis    17247     1  0 Feb25 ?        00:01:06 /usr/sbin/redis-server /etc/redis.conf
cat /etc/redis.conf | grep -v "#" | grep port
port 6379
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • IPU

    2017/02/27 14:25

    ENV["REDIS"] = "http://candate.tk/:6379" これは、何のために設定しているのですか?すでにあるRedisを共有して使うため?

    キャンセル

  • s.k

    2017/02/27 14:30

    Redisを使うにはhostとそのポート番号の指定をしなければならないと思っていました!

    キャンセル

回答 2

checkベストアンサー

+2

Railsサーバ(さくらのVPS)と Radisサーバ(candate.tk が動作している)は、同一筐体(同一サーバ)でしょうか?

Yes
ENV["REDIS"] = "localhost:6379"

No なら
Redisサーバで、
・ネットワークレベルで ポート6379の解放
iptables コマンドで 6379 ポートを開ける必要があります

・Redis 設定(redis.conf)で接続するIPアドレスを  bind で設定
接続元を受け側で許可してあげる必要があります

同筐体では無い(=No)の場合は、IP固定で解放してあげる必要があります。
そうしないと、どのサーバからもRedisに接続できてしまうので攻撃対象とされる可能性があります。

こちらを参考にしてください。
http://qiita.com/KurosawaTsuyoshi/items/f8719bf7c3a10d22a921#crackitcrackredisio

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/27 15:55

    kurosawaさん
    ありがとうございます!

    試します!

    キャンセル

  • 2017/02/27 17:53

    Yesだと思っていたのですが、繋がらないので、Noで試してみます!

    キャンセル

  • 2017/02/27 21:30

    Noだとしても

     ENV["REDIS"] = "candate.tk:6379"

    のように、ドメインとポート指定は必要です。
    ※ 先頭に "http://" は不要なのでご注意ください

    下記が参考になるかもしれませんね
    http://qiita.com/u651601f/items/a0624601047db4f02808

    キャンセル

  • 2017/02/27 22:44

    ありがとうございます!!
    ドメインの調子がおかしくなったので修正し次第取り組みます!

    キャンセル

  • 2017/02/28 22:59

    yesで解決しました!
    ありがとうございます!

    キャンセル

+1

もしかして、ただのタイプミスかな?

ENV["REDIS"] = "http://candate.tk:6379"

ポートの前に/が余計に入ってるだけかも。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/27 14:39

    試してみます!

    キャンセル

  • 2017/02/27 14:46

    変わりませんでした。。。
    ポート番号が間違えてる可能性がありますね。

    http://candate.tk/works/1

    キャンセル

  • 2017/02/27 14:48

    redisの設定を特にかえてないのだとしたら、「6379」であってますよ。

    キャンセル

  • 2017/02/27 14:52

    candate.tkにログインして、
    ps -ef | grep redis
    打ってみましょう。
    そしたら、ポート何使っているかわかるはず。

    キャンセル

  • 2017/02/27 14:57

    こっちでも、一応わかりますよ。
    cat /etc/redis.conf | grep -v "#" | grep port

    あと、自分はredis一緒のところでたててたので、意識してなかったけど、redis側で接続許可設定が必要みたいですね。
    http://qiita.com/LowSE01/items/328cd598c0b7d8f325b2

    キャンセル

  • 2017/02/27 14:57

    あ、そうなんですね!

    キャンセル

  • 2017/02/27 14:59

    redisの情報を追加しました!

    キャンセル

  • 2017/02/27 15:00

    ポート番号あってますね!

    キャンセル

  • 2017/02/27 15:02

    すみません。貼っていただいたリンクですがnot foundと出てきます!

    キャンセル

  • 2017/02/27 15:16

    http://symfoware.blog68.fc2.com/blog-entry-1439.html
    では、ほとんど同じ内容が書かれている、こっちで。

    キャンセル

  • 2017/02/27 15:55

    確認します!ありがとうございます!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    CentOS7でsystemctl start postgresがエラー

    環境 Virtualbox + vagrant ホストOS: Windows7 64bit ゲストOS: Linux version 3.10.0-327.18.2.el7.

  • 解決済

    Rails5へアップグレード後の (URI::InvalidURIError)を解決できません。

    前提・実現したいこと ローカルサーバーを起動したいです。 発生している問題・エラーメッセージ cloud9でローカルサーバーを起動すると、以下のようなエラーが発生します。

  • 解決済

    redis つながらない

    前提・実現したいこと 初心者どころか入門者です 参考書を使いWebアプリの勉強をしている途中なのですがデータを保存するためのredisがエラーを出すようになりました、先週ぐらい

  • 解決済

    【Redis】EC2インスタンスからElastiCacheにアクセスできない

    AWSを利用して、ブログのようなサービスを公開しました。 その中で、記事のランキングを作成したいと思い、ElastiCacheを利用し、redisで記事のpvのカウントをとったり

  • 解決済

    GCDAsyncUdpSocketの送信元IPを知りたい

    GCDAsyncUdpSocketを利用してUDPパケットの送受信を行っています。 GCDAsyncUdpSocket *udpSocket = [[GCDAsyncUdpS

  • 解決済

    Apacheの設定が反映されない

    Apacheの設定ファイル /etc/httpd/conf にエラーログを吐き出す場所を指定する項目がありますが、下記のようにエラーログを作成して、試しにさ、くらVPSのCentO

  • 解決済

    vagrant port8000は使用中というエラーが

    下記サイトを参考に進めております。 現在Ansibleの学習を進めており、環境構築の導入の部分でつまづいています。 長文でもうしわけないでエラー内容とVagrantfileを記載い

  • 解決済

    Nginx+gitlabの設定について

    前提・実現したいこと Hyper-v上のCentOSにgitlab+Nginxの環境を構築したいと考えています。 Nginxについては内臓のものを無効化してインストールしたNgin

同じタグがついた質問を見る

  • Ruby on Rails

    7277questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • VPS

    347questions

    VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

  • Capistrano

    114questions

    Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

  • Redis

    97questions

    Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。