系統需求
安裝 Ruby 建議使用 Ruby 1.8.6 One-Click Installer,而不要使用 Ruby 1.8.6 Binary ,因為後者不包含 FCGI 模組,即使使用 gem install fcgi 安裝也必須編譯才能使用。如果沒有 FCG 模組,則 Apache 啟動 FastCGI 進程可能會報以下錯誤:
The pipe has been ended. : mod_fcgid: get overlap result error
安裝 Rails : gem install rails
安裝 Apache Http Server。
獲得 mod_fcgid,該模組依賴 Visual C++ 2008 Redistributable Package;解壓 mod_fcgid.so 到 Apache 目錄的 modules 子目錄下。fcgid 進程預設只有一個 _FCGI_SHUTDOWN_EVENT_ 環境變數,而 Windows DNS 解析必須有一些特定的環境變數,否則會導致無法解析 DNS,應用報以下錯誤:
getaddrinfo: no address associated with hostname.
下面的配置描述了如何解決該問題。
我們這裡作一些假設:
- ROR 應用目錄:D:/WebRoot/redmine/
初始化資料庫 :rake db:migrate
配置 Apache,添加以下指令碼:
LoadModule fcgid_module et/mod/mod_fcgid.so DefaultInitEnv RAILS_ENV production # 設定以下環境變數以保證 DNS 解析正確 # 如果不設定,則會報 getaddrinfo: no address associated with hostname. DefaultInitEnv PATH "C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;" DefaultInitEnv SystemRoot "C:/Windows" DefaultInitEnv SystemDrive "C:" DefaultInitEnv TEMP "C:/WINDOWS/TEMP" DefaultInitEnv TMP "C:/WINDOWS/TEMP" DefaultInitEnv windir "C:/WINDOWS" Alias "/redmine" "D:/WebRoot/redmine/public/" <Directory "D:/WebRoot/redmine/public/"> Options Indexes ExecCGI FollowSymLinks AllowOverride all Order Deny,Allow Allow from All </Directory> <Location /redmine/> AddHandler fcgid-script .fcgi FCGIWrapper "C:/ruby/bin/ruby.exe D:/WebRoot/redmine/public/dispatch.fcgi" .fcgi RewriteEngine on RewriteBase /redmine RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ dispatch.fcgi?$1 [QSA,L] </Location> |
2008-5-16 Zealic