在 Mac (Snow Leopard) 上以 nginx 做為開發用伺服器


總之 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_enabledrails_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 的開發環境中可以感到每個頁面畫出/載入時間變短了,這應該是最明顯的好處。