最近一段時間在開發面向移動設備的網頁,而且是靜態網頁。所以很需要一個HTTP服務器,簡單明了的就可以。在Windows上,HFS(http://www.rejetto.com/hfs/)是我比較鍾愛的一個小工具,並且還是免費。在Mac電腦上,嘗試了幾款輕量的HTTP文件服務器,感覺都不是很理想。比如App Store里面的SimpleHTTPServer,我甚至花了25塊錢購買了Pro版,竟然連最基本的HTTP Range都不支持。還有就是Python帶的那個SimpleHTTPServer模塊,也是不太良好。只好回到Apache了。
Mac OS X本身就帶了Apache(至少從10.7開始就有),接下來就是要一步一步的把Mac上的Apache配置起來。
先說一下環境:Mac OS X 10.9。
然后,來檢查一下Mac上Apache的版本。打開一個終端應用。可以從LaunchPad>其他>終端來打開,也可以直接在Spotlight中輸入terminal來打開。
在終端中輸入apachectl -v查看安裝的Apache版本。
user@my-mac:~ $ apachectl -v Server version: Apache/2.2.24 (Unix) Server built: Aug 24 2013 21:10:43
然后直接去/etc/apache2下面修改Apache的配置文件httpd.conf(2.2版本的Apache還是一個配置文件)。由於這個文件的屬主是root,所以普通用戶需要使用sudo vi httpd.conf來編輯。
這個文件中比較關鍵的地方摘抄如下:
User _www Group _www
# 這里就是你的要提供服務的根路徑。 DocumentRoot "/Users/user/Documents/svn-copy/books"
# 這里是針對這個根路徑的權限配置
<Directory "/Users/user/Documents/svn-copy/books"> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all </Directory>
編輯完畢之后,保存.
出於安全性的考慮,默認情況下,Apache的httpd服務是使用比較低權限的用戶身份去運行的,也就是上面截取的配置文件中的User _www和Group _www一行。所以首先你要允許_www訪問你的文檔,至少要能夠讀取。
啟動Apache服務。默認的監聽端口是80,所以需要root權限才能夠啟動apache。
user@my-mac:apache2 $ sudo apachectl start
然后,使用瀏覽器打開http://localhost。哦,給出了403訪問被禁止的消息。那么,猜測是權限出現問題了。先看看Apache的日志吧:
cd /var/log/apache2 cat error_log Permission denied: access to / denied (filesystem path '/Users/user/Documents/svn-copy') because search permissions are missing on a component of the path
根據日志中的錯誤信息,那么一定是在這個路徑上,某一個或者多個文件夾不允許_www用戶(httpd的運行用戶)search(針對文件夾的search對應的就是文件夾權限的x)。那么就從最后向最前找。很容易就發現/Users/user/Documents這個文件夾不允許其他人讀取。反正是自己內網開發測試用的,索性就允許其他用戶讀取好了。
user@my-mac:~ $ cd user@my-mac:~ $ chmod o+rx Documents
然后再次訪問http://localhost,一切OK了。