1. 程式人生 > 其它 >Apache 虛擬機器設定

Apache 虛擬機器設定


apache虛擬機器有兩種設定方法:
基於主機名的虛擬主機(一個IP地址,多個網站)
基於IP地址的虛擬主機(每個站點擁有一個的獨立IP地址)
可能很多人沒有多個靜態ip,也沒有多個域名,也沒有線上的伺服器。我也沒有。不過我們還是可以在本機實現apache的虛擬機器設定的。下面我們要用到的ip是 127.0.0.1, 127.0.0.2。域名是localhost, localhost2, localhost3
開啟 /etc/hosts

在後面新增
127.0.0.1 localhost2
127.0.0.2 localhost3
windows的系統是修改 C:\WINDOWS\system32\drivers\etc\hosts 檔案
這一步需要重啟一下機器。先重啟了再進行下邊的操作。重啟後 localhost2和localhost3就可以指向各住的ip了。
開啟apache配置檔案。一般是在 /etc/httpd/conf/httpd.conf 或者你指定的目錄。windows的系統是在apache安裝目錄的conf資料夾裡

在最後新增
NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80>
ServerAdmin[email protected]


DocumentRoot /home/webroot/website1
ServerName localhost
</VirtualHost>

<VirtualHost 127.0.0.1:80>
ServerAdmin[email protected]
DocumentRoot /home/webroot/website2
ServerName localhost2
</VirtualHost>

<VirtualHost 127.0.0.2:80>
ServerAdmin[email protected]
DocumentRoot /home/webroot/website3
ServerName localhost3
</VirtualHost>
其中DocumentRoot要改成和自己機子相符的路徑。然後務必重啟apache才可以生效。 service httpd restart 重啟apache。然後用localhost localhost2 和 localhost3 就可以訪問各住的目錄了。

其中 NameVirtualHost 127.0.0.1:80 是需要的,否則會出現這樣的警告提示:VirtualHost 127.0.0.1:80 overlaps with VirtualHost 127.0.0.1:80, the first has precedence, perhaps you need a NameVirtualHost directive
如果需要一個虛擬機器繫結多個域名,則可以在別名 ServerAlias 後面全部列出來。還可以通過 php_admin_value open_basedir 限制各自虛擬機器可操作檔案的目錄。同時可以通過 ErrorDocument 404 設定404錯誤頁面的位置。其他配置就不多說了,可以參考apache手冊。
-----------------------------------------


附:Apache 下虛擬主機的簡單配置
1.首先檢視本機的ip地址是什麼
# ifconfig eth0
eth0Link encap:Ethernet HWaddr 00:0C:29:F9:F3:03
inet addr:192.168.0.55 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fef9:f303/64 Scope:Link

我的本機ip是192.168.0.55
2. 開啟apache的配置檔案
# vi /etc/httpd/conf/httpd.conf
在配置檔案的第三部分
### Section 3: Virtual Hosts
的最後邊加上
NameVirtualHost 192.168.0.55:80
<VirtualHost 192.168.0.55:80>
DocumentRoot /var/www/html/www.hoteel.com/
ServerName

www.hoteel.com
</VirtualHost>
注意:我們要建立的虛擬主機的域名是www.hoteel.com,它是在/var/www/html/www.hoteel.com/下。
按說,我們修改過配置檔案後應該重起httpd服務,但是如果現在我們重起,系統肯定會提示我們找不到var/www/html/www.hoteel.com/這個資料夾,因為它確實不存在,我們現在就建立它。
3. 我們要給這個虛擬主機新增管理使用者 hoteel 。
# useradd -d /var/www/html/www.hoteel.com/ hoteel
修改 /var/www/html/www.hoteel.com/的許可權是o能r + w.
# chmod a+rx /var/www/html/www.hoteel.com/
現在就配置好了,一臺簡單的虛擬主機。重起httpd協議(#service httpd restart)我們可以通過URL直接訪問http://www.hoteel.com.
4. 我們回到windows下,在位址列裡邊輸入http://www.hoteel.com,發現它沒有顯示出來我們先要看到的網站,這是因為我們的主機沒有解析http://www.hoteel.com這個域名。
我們需要更改一個檔案:C:\WINDOWS\system32\drivers\etc下的hosts檔案,我們用記事本把它開啟,然後另起一行寫上 192.168.0.55www.hoteel.com然後儲存。重起httpd
#service httpd restart 就可以了。如果沒出來,就重新整理吧。