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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

1回答

3951閲覧

ローカル開発環境上のRubyファイルの出力結果をブラウザ上で確認することができません…

T.N.

総合スコア22

CentOS

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2015/09/24 15:05

■環境
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にアクセスすると複数ファイルがあったりディレクトリが複数あったりしても
ブラウザ上にリスト形式で表示されるため、問題なく出力結果をブラウザ上で確認できました。

初歩的な質問で恐れ入りますが、ご教示いただけますと幸いです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

uyamikさんの疑問に思われていることのほとんどは、Apacheの設定ファイルである httpd.conf を詳しく見ると解決します。

###1) Ruby のプログラムが実行されない理由

ターミナルで /var/www/html 直下に index.rb というファイルを作成したのですが、
ブラウザ上で特定のIPアドレス(192.168.33.10)を入力しても出力結果が表示されません。

これは、rubyのプログラムをApache上で実行するための設定がされていないからです。

それに対して、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 では標準でファイルリストが表示される設定になっていたかもしれませんが、通常はセキュリティ上の理由で非表示にします。

ファイルリストを非表示にしたとしても、(アクセス制限を設定していない限り)ファイル名を直接指定すれば表示できます。

投稿2015/09/24 18:29

pi-chan

総合スコア5936

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

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

T.N.

2015/09/25 13:51

pi-chanさん ご回答いただき、ありがとうございます。 お教えいただいた内容を元に対応を試みたのですが、 状況が異なる箇所があり、他サイトも見ながら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を削除して再度インストールした方が早いのではとも思っています…。 何度も恐れ入りますが、もしご存知でしたら原因や対策をお教えいただけませんでしょうか…。
pi-chan

2015/09/26 00: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を使うのかを決め、使わない方をアンインストールしてしまった方が混乱しなくて良いと思います。
T.N.

2015/09/27 01: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を用いた環境のみで開発を行いたいと考えております…。 一旦、情報を整理して改めて記載します。 どうかよろしくお願いします。
T.N.

2015/09/27 01: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をメインとして開発するにあたり必要なさそうなので、 削除しても問題ないのではと考えております。 どうかよろしくお願いします。
pi-chan

2015/10/03 15: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での開発にもそのまま利用できます。
T.N.

2015/10/05 22:41

ご回答いただき、ありがとうございます!! 仰るとおり、業務上の必要に迫られてではなく、 スキルアップのための学習が目的です。 開発環境に関する理解も浅いので、 MAMPとhomebrewでインストールしてしまったApache等を一旦アンインストールして、 開発環境についてきちんと理解した状態での再構築を試みます。 また、MAMPでも他言語に対応できるのですね。 Apacheの設定に関する理解も浅いのでもっと調べてみます。 目的達成までご協力いただけるとのこと、誠にありがとうございます! どうにも先に進めなくなってしまったらまた質問させていただけますと幸いです。 どうかよろしくお願いいたします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問