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

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

ただいまの
回答率

89.99%

Passenger(Rails)とPHPを共存させる方法について伺います。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 2,666

hagetak

score 14

Passenger(Rails)とPHPを共存させる方法について伺います。
現在、さくらのVPSを借り、ウェブサービスを何とか立ち上げることができました。(hogehoge.com ドメイン取得済み)
そこで、表題の件で質問を致します。今後アクセスの増加が見込めるまで、同一VPS内にTracを積みたいと考えています。

共存させるために、調べてみるとVirtualHostというものを使うことがわかりましたが、理解しているつもりなのですができません。

 目標

100.100.100.100:80 -> hogehoge.comへ飛ぶように
hogehoge.com -> hogehoge.comへ飛ぶように
100.100.100.100:8080 -> 100.100.100.100:8080/tracへ飛ぶように

httpd.conf
<VirtualHost *:8080>
  ServerName 100.100.100.100:8080/trac
  DocumentRoot /var/www/html/trac/
        <Directory /var/www/html/trac/>
        PassengerEnabled Off
        AllowOverride All
        Options -MultiViews
        </Directory>
</VirtualHost>
どのようにconfは設定すればよいでしょうか。複数のサイトでは、シンボリックリンクを貼れとかいていますが、 rails_app以下にPHPが行くのは気持ち悪くまだ触れていません。シンボリックリンクを用いれば解決できますか。

 追加編集について


VitualHostを利用して、Railsアプリ, PHPアプリ(独自のTracアプリ)を共存したいと考えています。

既にRailsアプリはドメイン取得済みで公開しています。(100.100.100.100:80 or www.hogehoge.comでアクセス可能)
そして、PHPアプリに関しては、これから設定をしていきたいと考えているのですが、
IPアドレス直打ちとポート8080を指定したときのみPHPアプリを公開したいと考えています。(100.100.100.100:8080)

vitualhostにどのようなことをかけばよいでしょうか。


ご回答有難うございます。私の勉強不足で、まだ解決できていません。

 開発環境/conf

Server version: Apache/2.2.15 (Unix)
Server built:   Oct 16 2014 14:48:21

■ httpd.conf
Listen 100.100.100.100:8080
Listen 100.100.100.100:80

NameVirtualHost 100.100.100.100:8080
NameVirtualHost 100.100.100.100:80

<VirtualHost 100.100.100.100:8080>
  DocumentRoot /var/www/html/trac/
  ServerName 100.100.100.100:8080/trac
        <Directory /var/www/html/trac/>
        PassengerEnabled Off
        AllowOverride All
        Options -MultiViews
        </Directory>
</VirtualHost>

■ passenger.conf
<VirtualHost *:80>
  ServerName www.hogehoge.com
  DocumentRoot /var/www/rails_app/public
  RailsEnv production
        <Directory "/var/www/rails_app/public">
          AllowOverride all
          Options -MultiViews
          allow from ALL
        </Directory>
  CustomLog /var/www/rails_app/log/
  ErrorLog /var/www/rails_app/log/
</VirtualHost>


■ バーチャルホストの一覧確認

[root@hagetak hagetak]# httpd -S
VirtualHost configuration:
100.100.100.100:8080      is a NameVirtualHost
         default server 100.100.100.100:8080 (/etc/httpd/conf/httpd.conf:1004)
         port 8080 namevhost 100.100.100.100:8080 (/etc/httpd/conf/httpd.conf:1004)
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server hogehoge.com (/etc/httpd/conf.d/passenger.conf:25)
         port 80 namevhost hogehoge.com (/etc/httpd/conf.d/passenger.conf:25)
Syntax OK
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • 退会済みユーザー

    退会済みユーザー

    2015/08/19 01:10

    VirtualHostを使ってRailsアプリとPHPアプリとPythonアプリ(Trac)にアクセスするようにhttpd.confを作りたいように見えますが、あってますか?
    80ポートの特定のURIをRails、別のURIをPHPアプリといった形にサイトを設計するのでしょうか?サイト全体の設計が見えないと回答がしづらそうです。

    キャンセル

回答 1

checkベストアンサー

+2

VirtualHostを使えばRailsアプリの方にシンボリックリンクは不要です。

Linuxでもディストリビューションにより、流儀が異なりますが、ここではDebian系のやり方を解説します。

1. リンク先を参考にモジュールの設定を行う。
2. /etc/apache2/sites-available/配下にphp-trac.confという名前で下記のファイルを配置
3. sudo a2ensite php-tracと実行

<VirtualHost 100.100.100.100:8080>
  DocumentRoot /var/www/html/trac/
  <Directory /var/www/html/trac/>
    PassengerEnabled Off
    AllowOverride All
    Options -MultiViews
  </Directory>
</VirtualHost>

参考: Apache2@Debianでのバーチャルホスト設定まとめ

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2015/08/20 14:27

    > 具体的なエラー:http://100.100.100.100:8080にアクセス時、「このウェブページにアクセスできません(ERR_CONNECTION_TIMED_OUT)」とでます。

    もしかしてファイアーウォールで8080への接続を拒否していたりしませんか?一旦そちらを確認してみてください。

    キャンセル

  • 2015/08/20 14:40

    ファイアーウォールの問題でした。以下を記述したところ正常にアクセスすることが出来ました。
    > -A SERVICES -p tcp --dport 8080 -j ACCEPT

    お手間を取らせてしまい申し訳ございません。このたびは誠にありがとうございました!

    キャンセル

  • 2015/08/20 14:55

    どういたしまして!解決できてよかったです。

    キャンセル

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

  • ただいまの回答率 89.99%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる