自宅サーバを立ててRuby on Railsでプロジェクトを外部に公開する方法を教えてください。

環境はFedora10, Apache, Mongrel, MySQLです。Capistrano, mod_proxy, mongrel_cluster, mod_rails等は使用していません。まず最初に最も単純な構成で公開したいです。
現在行った設定は、

・アパッチの設定ファイルを変更しプロジェクトのpublicフォルダをドキュメントルートに設定
・rootユーザーでMySQLにログインしdevelopment, test, production各データベースを作成して rake db:migrate RAILS_ENV=production コマンドを実行
・config/environment.rbを変更して # ENV['RAILS_ENV'] ||= 'production' のコメントアウトを削除
・database.ymlを変更してproduction:のhost:を公開するページのホスト名に書き換え
・ruby/script server --environment=production コマンドを実行しMongrelを起動

以上です。
しかし、Webブラウザからサイトにアクセスしてもプロジェクトが表示されません。外部に公開する上で足りない設定があると思うのですが、どう設定すればよいのか分からないので教えて頂けないでしょうか。宜しくお願いします。

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:
  • 終了:2009/09/28 10:10:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:cuspos No.2

回答回数49ベストアンサー獲得回数10

ポイント35pt

こんにちは

.まず数点確認です。

・database.ymlを変更してproduction:のhost:を公開するページのホスト名に書き換え

とありますが、database.ymlのホスト名はDBの接続先のホスト名なので、別サーバでDBを動かしていなければlocalhostでも問題ないはずです。

Webブラウザからサイトにアクセスしてもプロジェクトが表示されません。

とありますが404でページが表示されていないのでしょうか?http://tyn-market.com/を見た限り、public/index.htmlのファイルは表示されているようにみえますが・・・。

それとも、作成したアプリケーションのトップ画面が表示されないということでしょうか?

http://railspress.matake.jp/rails20%E3%81%AErouting%EF%BC%88conf...

のmap.rootの項目でcontrollerを指定してあげて、public/index.htmlを削除してあげればアプリケーションのトップ画面は表示されると思います。

的確なアドバイスには、以下の情報が必要かと思います。

・サーバの構成(Apacheのrails関連の設定項目)

・作成したアプリケーションのcontrollerとaction(内容までは必要なし)

・log(場合によっては必要ないかと思います)

その他の回答1件)

id:chrono1742 No.1

回答回数91ベストアンサー獲得回数13

ポイント35pt

ブロードバンドルータに対し、自宅サーバを外部に公開するように設定しましたか?

下記を参考にして下さい。

http://www.the-hikaku.com/basic/nat.html

id:tyn

http://tyn-market.com/

外部に公開するように設定しています。以前携帯電話からアクセス出来たので、設定は大丈夫だと思います。

2009/09/21 11:15:09
id:cuspos No.2

回答回数49ベストアンサー獲得回数10ここでベストアンサー

ポイント35pt

こんにちは

.まず数点確認です。

・database.ymlを変更してproduction:のhost:を公開するページのホスト名に書き換え

とありますが、database.ymlのホスト名はDBの接続先のホスト名なので、別サーバでDBを動かしていなければlocalhostでも問題ないはずです。

Webブラウザからサイトにアクセスしてもプロジェクトが表示されません。

とありますが404でページが表示されていないのでしょうか?http://tyn-market.com/を見た限り、public/index.htmlのファイルは表示されているようにみえますが・・・。

それとも、作成したアプリケーションのトップ画面が表示されないということでしょうか?

http://railspress.matake.jp/rails20%E3%81%AErouting%EF%BC%88conf...

のmap.rootの項目でcontrollerを指定してあげて、public/index.htmlを削除してあげればアプリケーションのトップ画面は表示されると思います。

的確なアドバイスには、以下の情報が必要かと思います。

・サーバの構成(Apacheのrails関連の設定項目)

・作成したアプリケーションのcontrollerとaction(内容までは必要なし)

・log(場合によっては必要ないかと思います)

  • id:b-wind
    まず、確認すべきは内部からなら閲覧できるかじゃないの?
    それに Apache 等の設定だけじゃなくルーターや回線も絡んでくるけどその辺はどうなってるの?
  • id:tyn
    b-windさん、回答有難うございます。
    developmentモードでは表示され、データベースの登録も行われているようなので内部からなら閲覧できます。またpublicフォルダのindex.htmlは表示されるのでルーターや回線についても問題ないと思います。
  • id:khazad-Lefty
    正直、この辺り詳しいわけではないので的外れならすみません。
    >developmentモードでは表示され、データベースの登録も行われているようなので内部からなら閲覧できます。
    productionかdevelopmentかというのは内部か外部かということとイコールなんでしょうか?
    内部で動くか確認というなら、(可能であれば)この設定のままサーバーをLANに接続してそこで閲覧できるかの確認を行わないといけないと思うのですが…。
  • id:cuspos
    さきほど回答に登録してしまいましたが・・・。えーと「ruby/script server --environment=production コマンドを実行しMongrelを起動」しただけでapacheの設定は「・アパッチの設定ファイルを変更しプロジェクトのpublicフォルダをドキュメントルートに設定」とありますが、CGI関係の設定を行われましたか?もしドキュメントルートを設定しただけだと多分(apacheの設定によってはうごいてしまうかもしれませんが普通はないと思います)動きません。
    CGIでうごかすにしても、http://blog.goo.ne.jp/pie001/e/cd35f8c742adaa3281aabb756804dc7eのような設定が必要かと思います。
    次のURLが参考になるかもしれません。http://webos-goodies.jp/archives/50818102.html
    ※個人的にはpassengerかpound+mongrel_cluster、mod_proxy+mongrel_cluster等なんでもいいので設定を行ったほうがよいと思います。
  • id:chrono1742
    LAN内からは見えるのですか?
  • id:znz
    ApacheとMongrelを同時に動かしている時点で「最も単純な構成」ではないと思いますが。
    「最も単純な構成」にしたいのならApacheは使わずにMongrelを外部から直接見えるようにすれば良いのではないでしょうか?

    ApacheとMongrelを同時に動かしている状態でなんとかしたいのなら、Apacheに来たリクエストをMongrelに渡さないと動かないと思います。

    個人的にはpassengerの方がおすすめです。
  • id:tyn
    皆様回答有難うございます。何分初心者なもので理解が覚束ないままコメントしているかもしれず、また現在外出中なためすぐに確認が取れない点をご容赦願います。

    CGIについては恐らく設定を行っておらず、理解も出来ていないようなので帰宅して調べてみようと思います。
    おっしゃる通りMongrel単体の方が単純ですよね。Mongrelのことはよく分からなくて、Apacheと一緒に使ったら勝手に連携してくれるものだと思っていました。

    URLを参考にしつつPassenger, Pound, mongrel_clusterなど導入してみます。手元に「Railsデプロイ」がありCapistranoの使用を前提として設定方法が載っているのですが、Capistranoがうまく使えずmod_proxy, mongrel_cluster等の使用は躊躇しておりました。
  • id:cuspos
    id:znzさんが記述されていますが、mongrelを外部から直接見えるようにする方法に賛成です。

    ruby script/server -p 10080 ←mongrelをポート10080で起動
    とでもして、ブロードバンドルータの10080ポートを開ける。

    ブラウザでhttp://tyn-market.com:10080/ tyn-market.comのポート10080にアクセス
    でアクセス。

    これでmongrelのみで動作を確認することができると思います。

    ※どちらにしろ公開する予定があるなら、passengerなりmongrel_clusterなりが必要だと思うのでこの際に習得してしまうのも手だと思います。またCapistranoは便利には便利なんですが、複数サーバに配置する場合に力を発揮するので今回はスルーしてしまうのもありだと思います。がんばってください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません