web-dev-qa-db-ja.com

ローカルテスト用の複数の仮想ホストを使用したApache22.2.14のセットアップ

この方法でApache2仮想ホストをセットアップしました。

/etc/Apache2/sites-availableの下にdummy_site_1.confを作成しました

dumpy_site_1.conf

<VirtualHost local.dummy_site_1:80>
    ServerName local.dummy_site_1
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/dummy_site_1
    ErrorLog /var/log/Apache2/dummy_site_1__error.log
    TransferLog /var/log/Apache2/dummy_site_1__access.log
    <Directory /var/www/dummy_site_1>
        AllowOverride Options Limit None
        Options -Indexes FollowSymLinks
    Order deny,allow
    Allow from all
    </Directory>
    DirectoryIndex index.php
    #DISABLE HTTP TRACE
    #RewriteEngine On
    #RewriteCond %{REQUEST_METHOD} ^TRACE
    #RewriteRule .* - [F]
</VirtualHost>

また、この行にhttpd.confを追加しました。

ServerName local.dummy_site_1

これですべてがこの設定で機能します。URLにlocal.dummy_site_1と入力すると、自分のサイトが表示されます。

問題は、別のサイト構成dummy_site_2.confを追加して、ほぼ同じ設定を作成しようとしたときです。

dumpy_site_2.conf

<VirtualHost local.dummy_site_2:80>
    ServerName local.dummy_site_2
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/dummy_site_2
    ErrorLog /var/log/Apache2/dummy_site_2__error.log
    TransferLog /var/log/Apache2/dummy_site_2__access.log
    <Directory /var/www/dummy_site_2>
        AllowOverride Options Limit None
        Options -Indexes FollowSymLinks
    Order deny,allow
    Allow from all
    </Directory>
    DirectoryIndex index.php
    #DISABLE HTTP TRACE
    #RewriteEngine On
    #RewriteCond %{REQUEST_METHOD} ^TRACE
    #RewriteRule .* - [F]
</VirtualHost>

また、この行にhttpd.confを追加しました。

ServerName local.dummy_site_2

このエラーが発生します:

user@Host:/etc/Apache2$ Sudo /etc/init.d/Apache2 restart
 * Restarting web server Apache2                                                                                                                                                                     [Wed Sep 15 14:00:43 2010] [error] (EAI 5)No address associated with hostname: Could not resolve Host name local.dummy_site_2 -- ignoring!
 ... waiting [Wed Sep 15 14:00:44 2010] [error] (EAI 5)No address associated with hostname: Could not resolve Host name local.dummy_site_2 -- ignoring!

どうして?これを間違って構成していますか?

4
Phill Pafford

Httpd.confに「ServerName local.dummy_site_2」は必要ないので、それを削除しますが、代わりにこれを追加します。

NameVirtualHost ip-address-of-server:80

例:NameVirtualHost 192.168.1.10:80

変更を加えたら、Apacheを再起動する必要があります。

それでも期待どおりに機能しない場合は、サーバー名の行の下にある各仮想ホストconfファイルに次のような行を追加します。

ServerName local.dummy_site_1
ServerAlias *.local.dummy_site_1 local.dummy_site_1

そして

ServerName local.dummy_site_2
ServerAlias *.local.dummy_site_2 local.dummy_site_2

もう一度、Apacheを再起動して、変更を確認します。

編集:愚かな私-問題の他のビットを見つけた-すべてのVirtualHost宣言は仮想サーバーのIPアドレスを使用する必要があります-例:

<VirtualHost 192.168.1.10:80>
6
Linker3000

実際には、IPアドレスやサイト名を完全に削除することができます。

例:

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/path/to/vhost/documents"
ServerName servername.domain.tld
ServerAlias serveralias.domain.tld
ErrorLog "/path/to/logfiles/servername.domain.tld-error.log"
CustomLog "/path/to/logfiles/servername.domain.tld-access.log" common
<Directory "/path/to/vhost/documents">
allow from all
Option +Indexes
</Directory>
</VirtualHost>

<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot "/path/to/vhost/documents"
ServerName servername.domain.tld
ServerAlias serveralias.domain.tld
SSLEngine On
SSLCertificateFile /path/to/certificate/file.cert
SSLCertificateKeyFile /path/to/certificate/file.key
ErrorLog "/path/to/logfiles/servername.domain.tld-error.log"
CustomLog "/path/to/logfiles/servername.domain.tld-access.log" common
<Directory "/path/to/vhost/documents">
allow from all
Option +Indexes
</Directory>
</VirtualHost>

(ここで、mod_proxyと組み合わせたvhostの例を実行しましょう;以下のip = numeric-octet)

<VirtualHost *:80>
ProxyPreserveHost Off
ProxyPass / http://ip.ip.ip.ip/
ProxyPassReverse / http://ip.ip.ip.ip/
ServerName servername.domain.tld
</VirtualHost>

基本的に、DNS情報が構成したvhostと一致している限り、すべて機能するはずです。

1
Carl Vancil