昨天弄了個PHP小程序,想在本地跑一下測試,可是工作電腦沒有安裝環境,於是下載了一個wamp,一路暢通,Apache、Mysql、PHP就 全有了。啟動wamp服務,在瀏覽器輸入“http://localhost”,訪問正常,跳出wamp首頁。於是,下面想把自己的 CrashServer網站配置到Apache裡,可以透過虛擬網域在本地訪問測試,結果遇到不少問題,今日一通Google研究,終於任督二脈全通。
1、首先,Apache的設定檔是httpd.conf和httpd-vhosts.conf,我們先來看看wamp安裝好後,httpd.conf的預設設定。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif
DocumentRoot"d:/wamp/www/"
DocumentRoot"d:/wamp/www/"
AllowOverride none
Require all denied
#Include conf/extra/httpd-vhosts.conf file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001. 要想透過虛擬網域存取網站,就需要設定httpd-vhosts.conf。那麼需要啟動httpd-vhosts.conf,因為預設是關閉的,所以把設定檔中#Include conf/extra/httpd-vhosts.conf前面的#去掉。於是httpd-vhosts.conf啟用了,那我們去編輯httpd-vhosts.conf這個檔。 2、httpd-vhosts.conf檔案的位置,在apache目錄下的conf/extra,上面的Include conf/extra/httpd-vhosts.conf其實已經告訴你它的位置了。 在這個檔案中,加入設定我上面的CrashServer網站:NameVirtualHost*:80 DocumentRoot "D:/wamp/www" DocumentRoot "D:/wamp/www" DocumentRoot"D:/wamp/www/CrashServer"
ServerName crash.com* OK,到此基本上可以結束了,網站都配置好了,看起來非常非常的簡單。但對於我卻不是這樣的,我昨天碰到如下問題。 首先,我的CrashServer一開始不是放在wamp/www下的,而是放在E:360Downloads下面的,於是就有瞭如下配置:
Require all granted
重啟Apache,存取正常了。首先,新增的Directory,是可以在httpd.conf中添加的,也可以在httpd-vhosts.conf中添加,我認為在後者裡面添加更好,配置內容更加清晰明了,項目目錄權限跟隨著項目站點配置。在上面新增的Directory中,我們給了360Downloads下的CrashServer目錄加了權限,允許存取了,所以就不再提示403 Forbidden了。
這個問題,現在寫起來是這麼的簡單輕鬆,可問題出現的時候,卻很讓人困擾和鬱悶。對於專案在wamp/www之外的,需要給專案目錄權限才可,注意:
OrderAllow,Deny
Allowfrom All
Requireall granted
這三條缺一不可,這是配置了允許外部電腦存取伺服器網站。
3、今天問題解決後,想到透過同一區域網路下的其他設備訪問我的站點,於是用手機,在瀏覽器中輸入我的電腦的ip,不能訪問,再次Google,原來需要修改在httpd.conf中的設定:
Options Indexes FollowSymLinks
AllowOverride all
其中,Require local,沒Google出來,但看名字知道,是只允許本地訪問,於是改成Require all granted,允許所有請求訪問,手機就可以訪問了。
參考,http://roteg.iteye.com/blog/1465380,這裡是存取驗證設定的解釋。
這裡,有篇老外寫的配置博文,很好,https://www.kristengrote.com/blog/articles/how-to-set-up-virtual-hosts-using-wamp#wamp -step-7,但只有一點,在他的Step 7的時候,加入專案目錄權限:
Order Deny,Allow
Allow from all
卻恰恰少了Require all granted,導致最後還是403 Forbidden,Require all granted需要的,2.2不需要。
這就可以理解了為什麼Google出來的技術文章,有些提到require all granted,而有些則沒有。
此配置是在如下wamp環境進行的:
|