2011-08-01 11 views
8

問題は、3つの異なる製品(2つはPHPベース、1つはPython)を実行する必要があるドメイン名が1つしかないことです。ですから、私がする必要があるのは、URL内のパスを別の仮想ホストとして扱うことです。すなわち:Apache - URLパスを仮想ホストとして扱います

www.domain.com/first_url/ 
www.domain.com/second_url/ 
www.domain.com/third_url/ 

第1から第3は、別々の仮想ホストとして動作します。

どのようにこれを行うには手がかり?

答えて

1

仮想ホストソリューションを求めているので、おそらくapache-configディレクティブで何かしたいと思うでしょう。 ApacheはvirtualHostsを実際のドメインとして扱うことができます@cweiskeが説明しています。

この場合の解決策は、作業中のサブディレクトリに.htaccessファイルを使用するか、現在の(仮想)ホスト設定内に<Directory "/web/root/subdir">..</Directory>ブロックを設定することです。

それ自体はあなたが仮想ホスト(「app1.domain.org」)としてそれらを実行したい場合は、また別のサブドメイン上でそれらをホストすることを選択することができる

+0

まあ上でそれをテストすることができ、あなたのサーバがexample.comによって指されると仮定すると、問題は、私はこれ以上のサブドメインを追加する可能性が唯一の1のドメインを持っているということです。そして、私はそれに3つの異なるアプリケーションを実行する必要があります。ディレクトリディレクティブはWSGI init scrpitsを配置することができないので、オプションではありません。 – Ruslan

+0

@Ruslan:WSGIの経験がなければ、ドキュメントのクイックスキャンは、 'WSGIScriptAlias/app1/usr/local/wsgi/scripts/app1.wsgi'の後に' WSGIScriptAlias/app2/usr/local/wsgi/scripts/app2.wsgi'など。十分なのかどうか分かりませんか? – PtPazuzu

+0

よくWSGIScriptAliasがここでは許されないエラーで終わっています – Ruslan

2

Apacheの「仮想ホスト」は、ドメイン名でのみ動作し、パスの一部では動作しません。あなたが望むものを達成することはできません。

16

この質問を頼まれたので、それはしばらくしているが、私は同様の問題の解決策を探していたので、解決策を追加します。

これは、AliasまたはAliasMatchディレクティブを使用して実現できます。詳細はここで見つけることができます:

http://httpd.apache.org/docs/2.2/mod/mod_alias.html

Alias /first_url/ /var/www/first_url_resources 
+0

古い回答とさらに古い質問、私は知っていますが、これはちょうど私が後にした一行のソリューションのタイプでした。探している文法や文脈がわからないときは、何かを検索するのは簡単ではありません。ありがとう! –

+0

もう1つ注意すべき点は、 'Alias/url/path/to/dir'ディレクティブの後に' 'ディレクティブを続けて、特定のディレクトリの上書きを許可することです。 –

0

この例では、ディレクトリごとに異なるPHPのバージョンを割り当てる方法について説明し、また、特定のポートでfast_cgiとしてPythonインタプリタを実行して、Pythonのサポートを追加するために適合させることができる

例では、PHPバージョンごとに別々のディレクトリがあり、実行するPHPバージョンに応じて名前が付けられていますが、これを調整することができます。

mkdir /home/user/www 
mkdir /home/user/www/5.6.5 
mkdir /home/user/www/7.0.2 
mkdir /home/user/www/7.0.4 
mkdir /home/user/www/7.0.6 

その後、*:80

デフォルトの仮想ホストに/etc/apache2/sites-enabled/000-default.confに以下の行を追加します別のPHPのバージョン

sudo ln -s /home/user/www/7.0.2/ /var/www/html/7.0.2 
sudo ln -s /home/user/www/7.0.4/ /var/www/html/7.0.4 
sudo ln -s /home/user/www/7.0.6/ /var/www/html/7.0.6 

によって処理されなければならないディレクトリへのシンボリックリンクを作成

(あなたが1つのより高速なCGIハンドラーここのPythonを必要とするウェブサイトのためのセットアップすることができますあなたの必要性のために)、私はPHPにポート99995.6.5実行、ポート9998などの7.0.2実行を...と仮定し

DirectoryIndex index.html index.php 
ProxyPassMatch ^/5.6.5/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9999/var/www/html/ 
ProxyPassMatch ^/7.0.2/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9998/var/www/html/ 
ProxyPassMatch ^/7.0.4/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9997/var/www/html/ 
ProxyPassMatch ^/7.0.6/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9996/var/www/html/ 

あなたは

http://example.com/5.6.5/ 
http://example.com/7.0.2/ 
http://example.com/7.0.4/ 
http://example.com/7.0.6/