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がありません
ホストファイルに基づいて、次の行をマップします。
<VirtualHost site1.local>
これに:
<VirtualHost 127.0.0.1>
あなたが欲しいものは:
<VirtualHost *:80>
ServerName site1.somesite.com
次のものも必要になる場合があります。
NameVirtualHost *:80
私も同じ問題に直面しました。何度も試行錯誤した後、NameVirtualHost *:80
をsites-available/default
に追加して問題を修正しました。そして、削除/しない-サイト内の他のファイルに同じ行を追加する-利用可能/
なぜそれがうまくいったのか分かりません。
「サーバーの完全修飾ドメイン名を確実に判別できませんでした...」というエラーメッセージは、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は調和していますが、デフォルトはもはや適切ではなく、エラーを引き起こします。
頑張れ!それは簡単ではありません...