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