系統 solaris 10 Apache版本 httpd-2.2.0 網絡接口地址 192.168.27.201 Apache的安裝路徑 /usr/local/apache2/ 虛擬機的方式端口 8088
修改主配置文件/usr/local/apache2/conf/httpd.conf。用編輯器(vi等)打開主配置文件httpd.conf,把Include conf/extra/httpd-vhosts.conf這行(大概在395行的位置)前面的注釋取消,使其包含功能生效。再在主配置文件加入虛擬機的監聽“Listen 192.168.27.201:8088”(第一個字母‘L’是大寫的)。修改加入的內容如下所示:
Listen 192.168.27.201:8088 …………..(省略若干,不用修改的地方) Include conf/extra/httpd-vhosts.conf //虛擬機配置單獨用一個文件, //這種方式是主配置文件變小了,更易於維護。
修改虛擬機配置文件。它的目錄在主配置文件httpd.conf中以包含的方式(Include)指出了路徑是 /usr/local/apache2/conf/extra/httpd-vhosts.conf,如果打算用其他的文件,可以在主配置文件中重新指定。這個虛擬機配置文件是一個模版,給出了2個apache虛擬機的事例,把它們全部注釋掉!注:如果是基於域名的虛擬機機制,NameVirtualHost *.80這行是必須的,因為我這裡是基於端口(確切的說是基於IP地址)的虛擬機制,所以要把它注釋掉。先照著模版加入下面的塊到httpd-vhosts.conf:
< VIRTUALHOST 192.168.27.201:8088> DocumentRoot "/www/docs" //虛擬機根文檔目錄 ServerName 192.168.27.201:8088 < /VIRTUALHOST>
然後回到apache的安裝目錄執行命令 bin/apachectl –t檢查主配置文件語法是否正確,無誤後再執行bin/apachectl –S 檢查虛擬機的語法是否正確。接下來在虛擬機的根文檔目錄創建一個測試文檔test.html,啟動apache服務 bin/apachectl start&,用浏覽器訪問http://192.168.27.201,顯示apache的默認頁面,表明主配置文件是正常的;再訪問http://192.168.27.201:8088/test.html.返還代碼 403(禁止訪問),頁面內容為“你無法查看該網頁…”,同樣的問題已經有2個人遭遇過了,他們都一致認為,以前在apache1.3等老版本上就是這樣設置的,應該不會這樣呀!並且語法檢查也通過了,是什麼問題呢?打開主配置文件conf/httpd.conf,發現如下的塊:
< DIRECTORY /> Options FollowSymLinks AllowOverride None Order deny,allow //先拒絕後允許 Deny from all //拒絕所有的訪問 < /DIRECTORY>
這一個塊就是對目錄進行訪問控制的,而且設置得非常嚴格,因此,我們必須手動加入虛擬機目錄的權限控制塊,才可以讓用戶正常訪問虛擬機的目錄及頁面文件。有兩個地方可以加入虛擬目錄訪問權限控制塊:主配置文件httpd.conf和虛擬機配置文件httpd-vhost.conf,加在那一個地方更合適呢?當然選虛擬機配置文件,最重要的理由是維護起來更方便,可能也涉及安全方面的問題(這個我沒有做個測試)。接下來就把目錄訪問控制塊插入到虛擬機配置文件,其形式如下:
< VIRTUALHOST 192.168.27.201:8088> DocumentRoot "/www/docs" ServerName 192.168.27.201:8088 < DIRECTORY docs? www ?> //插入開始處 Options -Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all < /DIRECTORY> //插入結束處 < /VIRTUALHOST>
完成文件,檢查語法,重啟apache服務,再用浏覽器訪問虛擬機地址,這下應該正常了。