Linux
Apache 中基於名稱的虛擬主機
我在配置基於名稱的虛擬主機時遇到了一些麻煩。
我可以使用帶有空白 httpd.conf 文件的“service apache2 start”啟動伺服器,並且它將執行所有指向 /var/www 的內容,正如預期的那樣。
當我填寫 httpd.conf 時:
# Ensure that Apache listens on port 80 Listen 80 # Listen for virtual host requests on all IP addresses NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /www/kevins_playground ServerName home.coolkev.com # Other directives here </VirtualHost> <VirtualHost *:80> DocumentRoot /www/flatline_and_co ServerName www.flatline_and_co.com # Other directives here </VirtualHost>
執行“service apache2 start”時出現此錯誤
root@kevin-server:/etc/apache2# service apache2 start * Starting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName [Thu Jul 26 20:10:01 2012] [warn] NameVirtualHost *:80 has no VirtualHosts (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs Action 'start' failed. The Apache error log may have more information.
我找到了解決方案,
- 我刪除了對 httpd.conf 的所有更改,對我來說,這留下了一個空白文件。
- 我為我的兩個虛擬主機複製了 ./sites-available/ 中現有的預設站點文件。
- 我編輯了這兩個文件並替換了有意義的值,我認為它們需要更改的地方應該很明顯(網站基礎文件夾,網站 URL)。
- 我在 ./sites-enabled/ 中創建了您應該創建的符號連結
- 我重新啟動了網路伺服器“sudo service apache2 restart”,它工作了。
我認為問題源於這樣一個事實,即在解析文件時,Apache 發現了兩個帶有“<VirtualHost>”的文件,我的 httpd.conf 和 ./sites-available/ 中的預設網站配置
只要您沒有接觸預設虛擬主機(它已經包含 NameVirtualHost *:80 指令),就不應重複預設行為。
既然你不得不忍受 Debuntu,為什麼不去把你的虛擬主機放在 /etc/apache2/sites-enabled/ 中,每個文件一個呢?