web-dev-qa-db-ja.com

Apachevhost_aliasとNameVirtualHostを同じサーバー/ IPに共存させることはできますか?

私はPHPプログラマーがセットアップして実行するための開発サーバーをしばらくの間持っています。システムはデフォルトのApacheパッケージを備えたDebianです:

# Apache2 -v
Server version: Apache/2.2.9 (Debian)
Server built:   Dec 11 2010 18:58:55

プロジェクトごとと開発者ごとに1つずつ、約30の名前ベースのVirtualHostを設定しました。スクリプトを使用して構成を行いますが、今度は約15個の新しいプロジェクトを追加する必要があり、それらはすべて標準のディレクトリ構造であるため、 mod_vhost_alias を使用すると思いました。

私はこれに似た私の設定を持っています:

NameVirtualHost *:80
#Default vhost
<VirtualHost *:80>
  DocumentRoot /var/www/404
  ServerName dev.example.com
  ErrorLog /var/log/Apache2/404.error_log
  TransferLog /var/log/Apache2/404.access_log
        <Directory "/var/www/404">
                allow from all
                Options Indexes Includes
                AllowOverride All
        </Directory>
</VirtualHost>
#this entry is repeated many times 
#with different server names, document roots 
# and other differences, bu basics stay the same
<VirtualHost *:80>
  DocumentRoot /var/www/crm
  ServerName crm.dev.example.com
  ErrorLog /var/log/Apache2/crm.error_log
  TransferLog /var/log/Apache2/crm.access_log
        <Directory "/var/www/crm">
                allow from all
                Options Indexes Includes
                AllowOverride All
        </Directory>
</VirtualHost>

# I added  Vhost_alias virtaul Host today, at the end of the config

<VirtualHost *:80>
    # This is for pages similar to some-page.pl.web.example.com
    UseCanonicalName Off
    ServerAlias *.web.dev.example.com
    VirtualDocumentRoot /var/www/web/%-4+/cur
    ErrorLog /var/log/Apache2/%-4+.error_log
    TransferLog /var/log/Apache2/%-4+.access_log
    <Directory /var/www/%-4+>
        allow from all
        Options Indexes Includes
        AllowOverride All
    </Directory>
</VirtualHost>

その結果、接続すると http://my-page.com.web.dev.example.com /var/www/404ディレクトリからデフォルトの仮想ホストを取得します。ディレクトリ/var/www/web/my-page.com/が存在し、my-page.comの実際のWebページのコピーが含まれています。

私は何が間違っているのですか? 「標準」のNameVirtualHostとvhost_aliasに別々のIPアドレスが必要ですか?他に何を確認する必要がありますか?

3
SWilk

はい、同じ構成でNameVirtualHostmod_vhost_aliasを使用できます。 mod_vhost_aliasエントリを次のように変更します。

<IfModule mod_vhost_alias.c>
    <VirtualHost *:80>
        ServerAlias *.web.dev.example.com
        VirtualDocumentRoot /var/www/web/%-4+/cur
        ErrorLog /var/log/Apache2/%-4+.error_log
        TransferLog /var/log/Apache2/%-4+.access_log
        <Directory /var/www/%-4+>
            allow from all
            Options Indexes Includes
            AllowOverride All
        </Directory>
    </VirtualHost>
</IfModule>

このエントリは、Include conf.d/*.confhttpd.conf行のすぐ下(RHELシステムでは/etc/httpd/conf/httpd.confにあります)、またはUbuntuの場合は/etc/Apache2/conf-enabled/の新しいファイルに配置します。

編集:私はブログを書きました 詳細情報

3
Andy

以前、ワイルドカードサブドメイン用に同様のVirtualDocumentRootベースをセットアップしました。誰かのホームディレクトリ内にディレクトリを作成できると非常に便利です。通常、Sambaを介してディレクトリを共有し、開発者のデスクトップから使用できるようにします。少なくとも開発とテストのために、新しいWebサイトを作成します。

あなたの問題に関しては、私はそれらをデフォルトの仮想ホストなしで異なるIPアドレスに置くだけです。

1
Alister Bulman