在 Mac (Snow Leopard) 上以 nginx 做為開發用伺服器
作者:gugod 發佈於:總之 nginx 是個又快又好又不用吃草的 http server,而現下 passenger 也己經做了 nginx 模組,所以也沒什麼理由不來試用一下。
在安裝與設定的部份,我用了 Mac 內建的 Ruby,以及 macports 編的 mysql。由於是 64 bit 的環境,mysql 也編成 64 bit 的了。因此在安裝 mysql gem 時要特別一點*:
sudo env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-dir=/opt/local/lib/mysql5 --with-mysql-config=/opt/local/lib/mysql5/bin/mysql_config
裝 passenger 則是:
sudo gem install passenger
sudo passenger-install-nginx-module
由於這樣會重新 compile 一個 nginx 出來,也許並不能算是 nginx module 吧。完畢之後會安裝到 /opt/nginx
去,設定檔的則是在 /opt/nginx/conf/nginx.conf
。
在設定檔中的 http {}
區塊中加入如下的一段,視情況修改其中各值。最後兩行 passenger_enabled
與 rails_env
是重點:
server {
server_name foo.local;
root /Users/apple/src/foo/public;
access_log /tmp/foo.access.log;
error_log /tmp/foo.error.log;
passenger_enabled on;
rails_env development;
}
起動:
sudo /opt/nginx/sbin/nginx
重新起動 (比方說在改了 nginx.conf
之後)
sudo /opt/nginx/sbin/nginx -s reload
結論。nginx 果然是相當令人滿意。serve static file 的 latency 都很小,因此在 Rails 的開發環境中可以感到每個頁面畫出/載入時間變短了,這應該是最明顯的好處。