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

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

ただいまの
回答率

90.51%

  • Ruby on Rails 5

    3165questions

  • CentOS

    3134questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Apache

    2099questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

  • VPS

    458questions

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

VPSにRailsアプリを構築してもApacheの初期画面が表示されてしまいます。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 150

koume

score 136

さくらのVPSでRailsアプリを公開したいのですが、自分なりに環境を構築しました。
しかしApacheの初期画面が表示されたままなのです。
Railsアプリを表示させるにはどうしたらいいのでしょうか?
現在の設定は以下のようにしています。

CentOS7
MariaDB
Ruby2.3.1
Rails5.1.3
Apache
Passenger
鍵認証設定完了
SSH接続
SSLの使用完了
/var/www/html/myapp #Railsアプリの設置完了

以下を実行

$ sudo yum install mysql-devel
$ bundle install
$ rails db:create RAILS_ENV=production
$ rails db:migrate RAILS_ENV=production
$ rails db:seed RAILS_ENV=production
$ bundle exec whenever
S crontab -l
$ bundle exec whenever --update-crontab
$ bundle exec rake assets:precompile RAILS_ENV=production


seedデータが投入されているか確認

$ rails c -e production

#投入されていることを確認 OK


としたあとRailsサーバーを起動させます。

$ rails s -e production
=> Booting Puma
=> Rails 5.1.3 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.10.0 (ruby 2.3.1-p112), codename: Russell's Teapot
* Min threads: 5, max threads: 5
* Environment: production
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop


の状態です。
そしてブラウザでアクセスするとApacheの初期画面が表示されたままでRailsアプリが表示されないのです。
なにかが足りないのか間違っているのかが不明で困っています。
rails s のコマンドを実行で表示されるのが、http://0.0.0.0:3000 や tcp://0.0.0.0:3000 とか
表示されているのでそのあたりが原因じゃないかと思いますが、どこを修正すればいいのかわかりません。
どなたかご教示お願いいたします。

開発環境で$ rails s -e production でサーバーを起動した場合はproductionモードで動いてくれます。

追記
Apacheの設定は以下のようにしています。(コメントは削除しました)
/etc/httpd/conf/httpd.confの内容です。

ServerTokens Prod
ServerSignature off

ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
<Directory />
    AllowOverride none
    Require all denied
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>
<Directory "/var/www/html">
 Options FollowSymLinks
 AllowOverride None
 Require all granted
</Directory>
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
<Files ".ht*">
    Require all denied
</Files>
ErrorLog "logs/error_log"
LogLevel warn

<IfModule log_config_module>
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
  <IfModule logio_module>
   LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
   </IfModule>
 CustomLog "logs/access_log" combined
</IfModule>

<IfModule alias_module>
 ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

</IfModule>
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

<IfModule mime_module>
  TypesConfig /etc/mime.types
  AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
   AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>
ServerTokens Prod
ServerSignature off
ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • CHERRY

    2019/03/28 17:10

    apache の設定はどうなっていますか?

    キャンセル

  • koume

    2019/03/28 17:20

    ご連絡ありがとうございます。以下のように設定しております。
    # yum install httpd
    #systemctl enable httpd.service
    # vim /etc/httpd/conf/httpd.conf で開き以下の2行を追記
      ServerTokens Prod
    ServerSignature off
    # server httpd configtest でOKだったので
    #systemctl start httpd
    # certbot certonly --webroot -w /var/www/html -d www.XXX-XXX.com
    で設定しました。

    キャンセル

  • koume

    2019/03/28 17:42

    /etc/httpd/conf/httpd.confの内容を追記しました。
    宜しくお願いします。

    キャンセル

  • koume

    2019/03/28 23:22

    回答ありがとうございます。passengerのインストールは済んでいます。
    $ passenger-install-apache2-moduleのコマンドを実行して その中のコード3行を
    /etc/httpd/conf.d/passenger.conf にコピーした所まで設定は完了しています。
    その後 $ rails s -e production としてもなにもかわりませんでした。
    ApacheとRailsを接続する設定をどこで設定すればいいのでしょうか?

    キャンセル

回答 2

0

Rails が http://0.0.0.0:3000 で、起動していて、apache は、80 で待ち受けているですが、Apache と Rails の間がつながっていないですね。

Apache の mod_proxy をインストールして ProxyPass  や ProxyPassReverse  を設定をして、リバースプロキシで接続するか Passenger を入れる等の方法で、 Apache と Rails を接続する必要があります。

Apache モジュール mod_proxy


回答ありがとうございます。passengerのインストールは済んでいます。
$ passenger-install-apache2-moduleのコマンドを実行して その中のコード3行を /etc/httpd/conf.d/passenger.conf にコピーした所まで設定は完了しています。
その後 $ rails s -e production としてもなにもかわりませんでした。
ApacheとRailsを接続する設定をどこで設定すればいいのでしょうか?

Passenger をインストール済みなんですね。

Passenger を使うのであれば、 rails s -e production は、実行する必要ありません。
Rails のファイルをディレクトリにデプロイして、Passenger の設定をした apache を再起動するだけで、OKです。

Apacheの設定ですが、3行のコードというのは、下記の Load_Module 等のことだと思いますが、

LoadModule passenger_module /usr/local/gems/passenger-5.1.8/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/gems/passenger-5.1.8
PassengerDefaultRuby /usr/local/bin/ruby


それ以外に Rails アプリに対応するドメインの設定で、下記の設定が必要です。

DocumentRoot "/var/www/rails-app/public"
<IfModule mod_passenger.c>
    PassengerEnabled    on
    RailsEnv            production
    RailsBaseURI        /
</IfModule>


特に PassengerEnabled  on を記載しないと Passenger は動きません。

また、設定の状況によっては、

RemoveHandler       .cgi .php


も必要かもしれません。


Apache を起動する際に ログファイルで、Passenger の起動メッセージが出ていることを確認して、Passenger が有効になっているか確認してください。(日付等省略)

Starting Passenger core...
Passenger core running in multi-application mode.
Passenger core online, PID 13300
Starting Passenger UstRouter...
Passenger UstRouter online, PID 13311
[pid 13216] AH00163: Apache/2.4.6 (CentOS) mpm-itk/2.4.7-04 OpenSSL/1.0.2k-fips mod_fcgid/2.3.9 SVN/1.7.14 PHP/7.2.15 Phusion_Passenger/5.1.8 configured -- resuming normal operations

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/03/29 11:16

    回答ありがとうございます。Load_Moduleは記載してあります。
    Railsアプリはpandaと言うディレクトに入っていて/var/www/htmlの下にあります。
    Railsアプリに対するドメインの設定の所ですが、DocumentRoot "/var/www/rails-app/public"とありますが自分の設定の場合の記述はどのようにするのでしょうか?
    DocumentRoot "/var/www/html/panda"としてもApacheのテスト画面が表示され
    DocumentRoot "/var/www/html/panda/public"とするとSyntax errorでした。
    お手数をおかけしますがご教示お願いします。

    キャンセル

  • 2019/03/29 11:22 編集

    rails new で作成された favicon.ico とか 404.html とか 500.html とかある public ディレクトリを指定します。

    /var/www/html/panda が、 rails のルートであれば、 /var/www/html/panda/public です。

    Syntax error がでるのであれば、ログファイルにメッセージが出ていると思いますが、何が出ていますか?

    キャンセル

  • 2019/03/29 12:22

    ご返事ありがとうございます。Syntax errorはpulicディレクトリを指定出来て解決できました。ただ、publlikディレクトリには404.html とか 500.htmlのようなファイルしかありませんがいいのでしょうか?
    ログをみたみましたがドキュメントルートのエラーが出ていました。(以下)
    Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive

    passengerも起動していないようなのです。(以下)
    [ N 2019-03-24 04:05:01.5061 17105/T1 age/Wat/WatchdogMain.cpp:1366 ]: Starting Passenger watchdog...
    [ N 2019-03-24 04:05:01.5304 17108/T1 age/Cor/CoreMain.cpp:1339 ]: Starting Passenger core...
    [ N 2019-03-24 04:05:01.5307 17108/T1 age/Cor/CoreMain.cpp:256 ]: Passenger core running in multi-application mode.
    [ W 2019-03-24 04:05:01.5415 17108/T1 age/Cor/CoreMain.cpp:1006 ]: WARNING: potential privilege escalation vulnerability detected. Phusion Passenger is running as root, and part(s) of the Passenger root path (/home/lemon/.rvm/gems/ruby-2.3.1/gems/passenger-6.0.2) can be changed by non-root user(s):

    - /home/lemon/.rvm/gems/ruby-2.3.1/gems/passenger-6.0.2 is not secure: it can be modified by user lemon
    - /home/lemon/.rvm/gems/ruby-2.3.1/gems is not secure: it can be modified by user lemon
    - /home/lemon/.rvm/gems/ruby-2.3.1 is not secure: it can be modified by user lemon
    - /home/lemon/.rvm/gems is not secure: it can be modified by user lemon
    - /home/lemon/.rvm is not secure: it can be modified by user lemon
    - /home/lemon is not secure: it can be modified by user lemon

    Please either fix up the permissions for the insecure paths, or install Passenger in a different location that can only be modified by root.
    [ N 2019-03-24 04:05:01.5415 17108/T1 age/Cor/CoreMain.cpp:1014 ]: Passenger core online, PID 17108
    [Sun Mar 24 04:05:01.542430 2019] [mpm_prefork:notice] [pid 26600] AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips Phusion_Passenger/6.0.2 configured -- resuming normal operations
    [Sun Mar 24 04:05:01.542447 2019] [core:notice] [pid 26600] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'

    それとVPSにログイン後「rails new」はしていません。ただ開発環境で作ったRails
    アプリをVPSに転送しただけなのですが問題ありますか?
    しつこいようで大変申し訳ございませんが宜しくお願いします。

    キャンセル

  • 2019/03/29 13:28 編集

    > ただ、publlikディレクトリには404.html とか 500.htmlのようなファイルしかありませんがいいのでしょうか?

    > それとVPSにログイン後「rails new」はしていません。ただ開発環境で作ったRails アプリをVPSに転送しただけなのですが問題ありますか?

    rails new は例としてあげただけなので、問題ありません。


    > ログをみたみましたがドキュメントルートのエラーが出ていました。(以下)
    > Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive

    普通に Apache がアクセスしていますね。


    > passengerも起動していないようなのです。(以下)

    > [Sun Mar 24 04:05:01.542430 2019] [mpm_prefork:notice] [pid 26600] AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips Phusion_Passenger/6.0.2 configured -- resuming normal operations

    と出ているので、passenger 自体は組み込まれていますね。

    > [ W 2019-03-24 04:05:01.5415 17108/T1 age/Cor/CoreMain.cpp:1006 ]: WARNING: potential privilege escalation vulnerability detected. Phusion Passenger is running as root, and part(s) of the Passenger root path (/home/lemon/.rvm/gems/ruby-2.3.1/gems/passenger-6.0.2) can be changed by non-root user(s):
    > (略)
    > Please either fix up the permissions for the insecure paths, or install Passenger in a different location that can only be modified by root.

    は、root で、実行しているという警告ですね。

    個人の Home ディレクトリ配下に ruby や passenger のファイルがあるというのは個人的には好きでは無いですが...

    とりあえずは、Rails アプリを実行するユーザーを

    ```
    PassengerDefaultUser 実行ユーザー名
    ```

    のように、root 以外の実行ユーザーを設定すれば、大丈夫では無いでしょうか。

    キャンセル

  • 2019/03/31 13:51

    いろいろと回答をしていただき有り難うございます。さまざま実行をしてみましたが、改善されないので
    OSを入れ直してはじめからやり直してみることにしました。

    キャンセル

check解決した方法

-1

OSを再インストールしてはじめからやり直します。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

  • Ruby on Rails 5

    3165questions

  • CentOS

    3134questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Apache

    2099questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

  • VPS

    458questions

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