ローカル開発環境上のRubyファイルの出力結果をブラウザ上で確認することができません…
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 3,151
■環境
PC : mac OS X Yosemite バージョン 10.10.05
Vagrant : Universal (32 and 64-bit)
VirtualBox : 5.0.4 for OS X hosts
CentOS : 6.5
Ruby : ruby 2.2.2p95
PHP : PHP 5.6.13
■やりたいこと
ターミナル上で /var/www/html 直下に作成した index.rb ファイルの出力結果をブラウザ上で確認したい。
■現状
ターミナルで /var/www/html 直下に index.rb というファイルを作成したのですが、
ブラウザ上で特定のIPアドレス(192.168.33.10)を入力しても出力結果が表示されません。
※「Apache 2 Test Page powered by CentOS」と上部に記載されている画面が表示されます。
※ catコマンドを入力するとターミナル上では内容を確認できます。
同階層に index.html や index.php を作成した場合は、
問題なくブラウザ上で実行結果を確認することができました。
※他ファイルを削除して同階層には1つのみファイルが存在する状態にするとブラウザ上で確認できました。
同階層に index.html や index.phpがある場合、どちらが表示されるのかが決まるロジックが分かっておりません。
また、例えば同階層に複数のファイルを作成したりディレクトリを作成した場合、
192.168.33.10にアクセスしても1つのファイルしか見れないのではと考えているのですが、
複数のファイルやディレクトリを見れるようにする場合、どのような方法を取れば良いのでしょうか。
※MAMPを使った場合は、localhostにアクセスすると複数ファイルがあったりディレクトリが複数あったりしても
ブラウザ上にリスト形式で表示されるため、問題なく出力結果をブラウザ上で確認できました。
初歩的な質問で恐れ入りますが、ご教示いただけますと幸いです。
よろしくお願いします。
PC : mac OS X Yosemite バージョン 10.10.05
Vagrant : Universal (32 and 64-bit)
VirtualBox : 5.0.4 for OS X hosts
CentOS : 6.5
Ruby : ruby 2.2.2p95
PHP : PHP 5.6.13
■やりたいこと
ターミナル上で /var/www/html 直下に作成した index.rb ファイルの出力結果をブラウザ上で確認したい。
■現状
ターミナルで /var/www/html 直下に index.rb というファイルを作成したのですが、
ブラウザ上で特定のIPアドレス(192.168.33.10)を入力しても出力結果が表示されません。
※「Apache 2 Test Page powered by CentOS」と上部に記載されている画面が表示されます。
※ catコマンドを入力するとターミナル上では内容を確認できます。
同階層に index.html や index.php を作成した場合は、
問題なくブラウザ上で実行結果を確認することができました。
※他ファイルを削除して同階層には1つのみファイルが存在する状態にするとブラウザ上で確認できました。
同階層に index.html や index.phpがある場合、どちらが表示されるのかが決まるロジックが分かっておりません。
また、例えば同階層に複数のファイルを作成したりディレクトリを作成した場合、
192.168.33.10にアクセスしても1つのファイルしか見れないのではと考えているのですが、
複数のファイルやディレクトリを見れるようにする場合、どのような方法を取れば良いのでしょうか。
※MAMPを使った場合は、localhostにアクセスすると複数ファイルがあったりディレクトリが複数あったりしても
ブラウザ上にリスト形式で表示されるため、問題なく出力結果をブラウザ上で確認できました。
初歩的な質問で恐れ入りますが、ご教示いただけますと幸いです。
よろしくお願いします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
uyamikさんの疑問に思われていることのほとんどは、Apacheの設定ファイルである httpd.conf を詳しく見ると解決します。
それに対して、PHPを実行するためのモジュールは、下記のようにロードする設定が httpd.conf 内(136行目、139行目付近)に書かれています。
ですので、rubyプログラムを同様に実行したいのであれば こちら を参考にして設定を修正してみてください。
MAMP では標準でファイルリストが表示される設定になっていたかもしれませんが、通常はセキュリティ上の理由で非表示にします。
ファイルリストを非表示にしたとしても、(アクセス制限を設定していない限り)ファイル名を直接指定すれば表示できます。
1) Ruby のプログラムが実行されない理由
ターミナルで /var/www/html 直下に index.rb というファイルを作成したのですが、これは、rubyのプログラムをApache上で実行するための設定がされていないからです。
ブラウザ上で特定のIPアドレス(192.168.33.10)を入力しても出力結果が表示されません。
それに対して、PHPを実行するためのモジュールは、下記のようにロードする設定が httpd.conf 内(136行目、139行目付近)に書かれています。
136: LoadModule php5_module 〜
139: AddType application/x-httpd-php .php .phtml .html
ですので、rubyプログラムを同様に実行したいのであれば こちら を参考にして設定を修正してみてください。
2) デフォルトで実行されるファイル名
httpd.conf の 258行目付近を見ると以下の設定がありますが、これが「http://192.168.33.10/」のようにファイル名を省略したURLでリクエストを行った場合にどのファイルが実行されるか(その優先順位も)を示しています。258: DirectoryIndex index.html index.php
3) ブラウザ上でファイルリストを表示させる設定
ブラウザ上にリスト形式で表示されるため、問題なく出力結果をブラウザ上で確認できました。これも、httpd.conf の設定によります。
<Directory "/var/www/html">
Options Indexes FollowSymLinks
↑これを追加するとファイルリストが表示される
</Directory>
MAMP では標準でファイルリストが表示される設定になっていたかもしれませんが、通常はセキュリティ上の理由で非表示にします。
ファイルリストを非表示にしたとしても、(アクセス制限を設定していない限り)ファイル名を直接指定すれば表示できます。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.21%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2015/09/25 22:51
ご回答いただき、ありがとうございます。
お教えいただいた内容を元に対応を試みたのですが、
状況が異なる箇所があり、他サイトも見ながらhttpd.confを部分的にいじったところ、
PHPやHTMLの出力結果もブラウザ上で確認できなくなってしまいました…。
※MAMPのlocalhostにアクセスしてみても、「It works!」のみ表示され、
MAMP上でサーバーを起動しようとしてもApacheが起動しない状況です…。
■状況が異なる点
・ApacheがPC内に見当たらず、代わりにApache2が以下のディレクトリにあります。
/private/etc/apache2/httpd.conf
・httpd.confの内容(コード)がご紹介いただいたサイトのものとは異なっています。
■やったこと
httpd.confに #Loadmodule cgi_module libexec/apache2/mod_cgi.so という記述があったので、
ここのコメントを外せばCGIとして認識するのではと思い、 # を削除しました。
※下記ページの「モジュールの読み込み」という見出し部分の対応のみ行いました。
http://qiita.com/hrkd/items/2dd624d31292f142efb6
また、httpd.confファイルのコードを見てみると、
ApacheではなくてApache2であるからなのか、
お教えいただいた下記ページにある記述が見当たりませんでした。
http://www.server-world.info/query?os=CentOS_6&p=httpd&f=3
原因を特定できておらず、一旦Apacheに関する知識を得ようと色々なサイトを見ていますが、
いっそのことApacheを削除して再度インストールした方が早いのではとも思っています…。
何度も恐れ入りますが、もしご存知でしたら原因や対策をお教えいただけませんでしょうか…。
2015/09/25 22:54
http://notepad.cc/gepeqa70
2015/09/26 09:21
ご連携頂いた「httpd.conf」ですが、不可解な点が多々ありました…
それで、幾つかの点を確認させて頂きたいと思います。
1) 今、rubyプログラムを実行したいのは、VirtualVox上にインストールされたCentOS側で稼働している Apache なのですか?それともローカルPC(Mac)側で稼働しているMAMPの Apache なのですか?
2) (CentOS上のApacheを想定して回答しているのですが)インストールされた Apache のバージョンは何ですか?(httpd.conf からすると Ver2.4系のようですが)
3) httpd.conf の中に、なぜかhtml(xml)の断片が混入しているのですが、なぜですか??
4) /private/etc/〜 のような通常のUnix系OSではあり得ないディレクトリに言及されていますが、かなりカスタマイズされた環境なのでしょうか?
5) コンテンツの配置先が /var/www/html だと言いながら、httpd.conf で「ServerRoot "/usr"」と定義されているのはなぜですか?
6) user/group が「_www」と定義されているということは、mac OS X 側にMAMPとは別の Apache を別途インストールして、そこで実行しようとしているのでしょうか?
(もしそうならば、なぜ Vagrant や VirtualBox に言及されているのですか?)
他にも不明な点が幾つもあるのですが…
uyamikさんのご説明を読んでいると、
① Mac上にインストールされた素のApache(HomebrewかMackPortsでインストール)
② MAMP上のApache
③ VirtualBox上にインストールされたCentOS上のApache
の三種類?の情報が交錯しており、たとえば「localhost」へアクセスした時、と言っても①なのか②なのか、さらには「ターミナルで /var/www/html 直下に」と言っても、それがどのApacheのドキュメントルートなのかがさっぱり分かりません。
大変恐縮ですが、もう一度、情報を整理してご提示頂けますか?
それと、たとえばMac(同一のサーバ)に直接インストールしたApacheとMAMPでインストールしたApacheが共存していたとして、同じポート番号をListenするように設定してしまうと競合してしまい、Apacheが起動できないというような状況が発生してしまいます。
ですので、どのApacheを使うのかを決め、使わない方をアンインストールしてしまった方が混乱しなくて良いと思います。
2015/09/27 10:20
情報が整理できておらず申し訳ございません…。
1) 今、rubyプログラムを実行したいのは、VirtualBox上にインストールされたCentOS側で稼働している Apache なのですか?
それともローカルPC(Mac)側で稼働しているMAMPの Apache なのですか?
→VirtualBox上にインストールされたCentOS側で稼働している Apache です。
※MAMPのApacheはPHP学習用に以前導入したもので、今回は利用しません。
2) (CentOS上のApacheを想定して回答しているのですが)インストールされた Apache のバージョンは何ですか?
(httpd.conf からすると Ver2.4系のようですが)
→下記コマンドを入力して調べて見たところ、バージョンは2.2.15でした。
(Server builtが8/24になっているのですが、Vagrant/VirtualBox/CentOS/Ruby/Apacheをインストールしたのは9/24のはずです…)
===================
[vagrant@localhost ~]$ httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Aug 24 2015 17:52:49
===================
3) httpd.conf の中に、なぜかhtml(xml)の断片が混入しているのですが、なぜですか??
4) /private/etc/〜 のような通常のUnix系OSではあり得ないディレクトリに言及されていますが、かなりカスタマイズされた環境なのでしょうか?
5) コンテンツの配置先が /var/www/html だと言いながら、httpd.conf で「ServerRoot "/usr"」と定義されているのはなぜですか?
→ドットインストールの下記レッスンを見ながら導入し、特に自分でカスタマイズはしておらず、html(xml)の断片についても心当たりがありません…。
レッスン05にて ./run.sh と入力した際にRuby/PHP/Python/Apacheなど諸々インストールされました。
http://dotinstall.com/lessons/basic_localdev_mac
6) user/group が「_www」と定義されているということは、mac OS X 側にMAMPとは別の Apache を別途インストールして、そこで実行しようとしているのでしょうか?
(もしそうならば、なぜ Vagrant や VirtualBox に言及されているのですか?)
→はい、mac OS X 側にMAMPとは別の Apache を別途インストールしてそこで実行、ということになると思います。
以前、PHPを学習するためにMAMPを導入したのですが、MAMPではPHPにしか対応できないと考え、
Rubyに対応できる開発環境を作ろうとして、上記のドットインストールのレッスンをもとに環境を構築したつもりです…。
また、大変お恥ずかしいのですが、Apacheの設定ファイルなどの意味を理解しないまま、
見よう見まねで開発環境を構築しようとしたため、自分のPCにApacheが3つ入っていることを把握できていませんでした…。
「 VirtualBox上にインストールされたCentOS上のApache」「MAMP上のApache」の2つは自覚がありましたが、
「Mac上にインストールされた素のApache(HomebrewかMackPortsでインストール)」というのも入っていたのですね…。
先日pi-chanさんにご回答いただいた下記質問の際にHomebrewを使用したので、そのときにインストールされたのではと思います…。
https://teratail.com/questions/14719
また、MAMPではPHPにしか対応できず、Vagrant/VirtualBox/CentOS/Apacheを用いた環境であればPHPやRubyなど複数言語に対応できるのであれば、
MAMPは今後使用せず、Vagrant/VirtualBox/CentOS/Apacheを用いた環境のみで開発を行いたいと考えております…。
一旦、情報を整理して改めて記載します。
どうかよろしくお願いします。
2015/09/27 10:33
■環境
PC : mac OS X Yosemite バージョン 10.10.05
Vagrant : Universal (32 and 64-bit)
VirtualBox : 5.0.4 for OS X hosts
CentOS : 6.5
Apache:2.2.15 (Unix)
Ruby : ruby 2.2.2p95
PHP : PHP 5.6.13
■やりたいこと
VirtualBox上にインストールされたCentOS上のApacheのドキュメントルートに関して、
ターミナル上で /var/www/html 直下に作成した index.rb ファイルの出力結果をブラウザ上で確認したい。
■現状
VirtualBox上にインストールされたCentOS上のApacheのドキュメントルートに関して、
ターミナルで /var/www/html 直下に index.rb というファイルを作成したのですが、
ブラウザ上で特定のIPアドレス(192.168.33.10)を入力しても出力結果が表示されません。
※「Apache 2 Test Page powered by CentOS」と上部に記載されている画面が表示されます。
※ catコマンドを入力するとターミナル上では内容を確認できます。
また、質問当初は、同階層に index.html や index.php を作成した場合は問題なくブラウザ上で
実行結果を確認することができたのですが、Apacheの設定ファイルをいじったら、Rubyの場合と同様に
「Apache 2 Test Page powered by CentOS」と上部に記載されている画面が表示されるようになりました。
※いじった箇所をもとに戻してみたのですが、状況は変わりませんでした…。
【Apache2のいじった箇所】
・/private/etc/apache2/httpd.confの157行目のコメントを外した。
※157行目 : #Loadmodule cgi_module libexec/apache2/mod_cgi.so
【Apache2の設定ファイル】
http://notepad.cc/gepeqa70
■その他
(上記コメントにも記載したのですが)MAMPではPHPにしか対応できず、
Vagrant/VirtualBox/CentOS/Apacheを用いた環境はPHPやRubyなど複数言語に対応できるのであれば、
MAMPは今後使用せず、Vagrant/VirtualBox/CentOS/Apacheを用いた環境のみで開発を行いたいと考えております。
また、「Mac上にインストールされた素のApache(HomebrewかMackPortsでインストール)」というのも、
意識的にインストールしたものではなく、Ruby/Ruby on Railsをメインとして開発するにあたり必要なさそうなので、
削除しても問題ないのではと考えております。
どうかよろしくお願いします。
2015/10/04 00:11
まず、uyamikさんの目的についてですが、業務上の必要に迫られてというよりは、スキルアップ(もしくは趣味)のための「学習」が目的なのだろうと理解しているのですが、合っていますか?
色々と考えて見たのですが、もしそういう目的なのであれば、「急がば回れ」の諺通りに、一旦環境を整理してから再チャレンジすることを強くオススメ致します。
というのは、Vagrantで構築した「CentOS」上に開発環境を構築したいとおっしゃりながら、実際には他のApacheの設定ファイルの方に話しがそれてしまうなど、混乱の元だからです。
それに、Mac向けアプリの開発でない限り、仮想サーバ上で開発した方が色々な意味で得策なので、紛らわしいツールやサーバなどは、MAMPも含めて一掃(アンインストール)してしまい、その分のHDD空き容量を仮想環境に割り当てた方がずっとマシです。
それで、手始めに、MAMPとhomebrewでインストールしてしまったApache等をアンインストールしてください。
また、もし支障がなければ、Vagrantで構築済みのCentOSも一旦削除して、正しい手順にて環境を再構築してはいかがでしょうか?
「ドットインストールのレッスン」は非常に優れていますが、あくまでもプログラミングのレッスンが目的なので環境構築の方法が必ずしも一般的かつ汎用的なものではないようなので、その(ある意味特殊な)環境を使いながら他の参考書も使用すると、インストール先のパスが異なるなど混乱の引き金にもなりかねないですし、環境構築の手順が「run.sh」のようにスクリプト化されてしまっていると、テスト環境を準備するということがどういうことなのかを正しく学ぶことも出来ませんので。
もし必要であれば、目的達成までお供致しますので、ぜひご検討ください。
なお、今後のためにご指摘しておきますが、「MAMPではPHPにしか対応できず」ということな無いです。
PHP向けの環境構築に際し、毎回ApacheやMySQLを1つずつ手でインストールするのは手間が掛るので、一括でインストール出来るようパッケージングされているだけで、インストールされるApacheはあくまでも普通のApacheです。
ですから、たとえMAMPでインストールされたApacheであっても、設定を適宜追加・修正すればRubyでの開発にもそのまま利用できます。
2015/10/06 07:41
仰るとおり、業務上の必要に迫られてではなく、
スキルアップのための学習が目的です。
開発環境に関する理解も浅いので、
MAMPとhomebrewでインストールしてしまったApache等を一旦アンインストールして、
開発環境についてきちんと理解した状態での再構築を試みます。
また、MAMPでも他言語に対応できるのですね。
Apacheの設定に関する理解も浅いのでもっと調べてみます。
目的達成までご協力いただけるとのこと、誠にありがとうございます!
どうにも先に進めなくなってしまったらまた質問させていただけますと幸いです。
どうかよろしくお願いいたします!