web-dev-qa-db-ja.com

Apache vhostsとubuntuhostsファイルを編集しますか?

Ubuntu(11.04)をインストールしました。

Apache/mysql/phpなどをインストールしました。

私はいくつかのサイトに座っています

/ var/www/site1
/var/www/site2
/var/www/site3

これらにアクセスできるようにしたい
http://site1.local
http://site2.local
http://site3.local

だから私のhostsファイルには
127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local

次に、/etc/Apache2/sites-available/defaultを3回コピーしました。

だから今私は持っています
/etc/Apache2/sites-available/site1
/etc/Apache2/sites-available/site2
/etc/Apache2/sites-available/site3

これらはすべて(適切なsitex名で)次のようになります

<VirtualHost site1.local>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/site1
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/site1/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${Apache_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${Apache_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

ターミナルで私はそれから電話します

Sudo a2ensite site1 site2 site3 && Sudo /etc/init.d/Apache2 reload

同時に機能するvhostの1つだけを除いて(デフォルトを含む)、どちらが機能しているようですが、何が間違っていますか?


  • Webサーバー構成Apache2をリロードしています
    Apache2:サーバーの完全修飾ドメイン名を確実に判別できませんでした。
    ServerNameに127.0.1.1を使用
    [2011年4月15日金曜日10:45:27] [警告] NameVirtualHost *:80にはVirtualHostsがありません
2
Hailwood

ホストファイルに基づいて、次の行をマップします。

<VirtualHost site1.local>

これに:

<VirtualHost 127.0.0.1>

あなたが欲しいものは:

<VirtualHost *:80>
    ServerName site1.somesite.com

次のものも必要になる場合があります。

NameVirtualHost *:80

2
BMDan

私も同じ問題に直面しました。何度も試行錯誤した後、NameVirtualHost *:80sites-available/defaultに追加して問題を修正しました。そして、削除/しない-サイト内の他のファイルに同じ行を追加する-利用可能/

なぜそれがうまくいったのか分かりません。

2
harithski

「サーバーの完全修飾ドメイン名を確実に判別できませんでした...」というエラーメッセージは、Apache2サーバーの奇妙な問題であり、Apache2サーバーがローカルで「ServerName」を「VirtualHost」するのを妨げたり停止したりすることはありません。解決策がそこにあるので、シェーン・マッデンが与えたリンクを読んでください。 「NameVirtualHost *:80にはVirtualHostがありません」という他の「警告」メッセージは、成功を妨げるでしょう。

問題1:FQDNの解決策は単純で、2つの解決策はそれぞれ異なるユーザーに対して成功しているようです。両方を実行してください。2つのファイルのいずれか(または両方)にテキスト文字列「ServerNamelocalhost」(引用符なし)を追加します。 /etc/Apache2/http.d.confファイル。箱から出して空白になっています。そして、それを/etc/Apache2/Apache2.confファイルの最後に追加します。

問題2:マニュアルを読むと、Apache2のさまざまなセットアップの例が表示されますが、本当に覚えておく必要があるのは、ディレクティブ「NameVirtualHost」(/ etc/Apache2/ports.confにあります)がディレクティブで指定したものとまったく同じである(etc/Apache2/sites-available/siteFileにあります。ここで、「siteFile」は例では「site1」、「site2」、「site3」です)。 1つにブール値を使用し、別の1つに静的IPアドレスまたは静的IP:ポートを使用しないでください。その関係の重大度を理解したら、マニュアルを読んでセットアップを試してみてください。

問題3:隠れた問題:問題2を知っているので、他のサイトファイル(つまり、デフォルトファイル)で問題が発生しないことを確認する必要があります。デフォルトファイルにVirtualHost *:80があり、site1にVirtualHost 127.0.0.1があり、ports.confにNameVirtualHost 127.0.0.1がある場合、site1とports.confは調和していますが、デフォルトはもはや適切ではなく、エラーを引き起こします。

頑張れ!それは簡単ではありません...

1
Ricalsin