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

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

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

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

Ruby on Rails 5

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

Apache

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

VPS

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

Q&A

解決済

2回答

4495閲覧

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

koume

総合スコア458

CentOS

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

Ruby on Rails 5

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

Apache

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

VPS

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

0グッド

1クリップ

投稿2019/03/28 08:00

編集2019/03/28 08:41

さくらの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

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2019/03/28 08:10

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

2019/03/28 08: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 08:42

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

2019/03/28 14:22

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

回答2

0

自己解決

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

投稿2019/03/31 04:52

koume

総合スコア458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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/28 08:50

編集2019/03/29 01:02
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koume

2019/03/29 02: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でした。 お手数をおかけしますがご教示お願いします。
CHERRY

2019/03/29 02:22 編集

rails new で作成された favicon.ico とか 404.html とか 500.html とかある public ディレクトリを指定します。 /var/www/html/panda が、 rails のルートであれば、 /var/www/html/panda/public です。 Syntax error がでるのであれば、ログファイルにメッセージが出ていると思いますが、何が出ていますか?
koume

2019/03/29 03: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に転送しただけなのですが問題ありますか? しつこいようで大変申し訳ございませんが宜しくお願いします。
CHERRY

2019/03/29 04:30 編集

> ただ、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 以外の実行ユーザーを設定すれば、大丈夫では無いでしょうか。
koume

2019/03/31 04:51

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問