ROR with Lighttpd+SCGI on Windows Lighttp+SCGI是相对古老的FastCGI一样高效但是配置更简单的Rails运行环境,最近才有win32下的预编译包。白老鼠试验中,我刚装好,分享一下:
Step 1: 下载安装Lighttpd for win32 这个现在只能装在c:\lighttpd下,目录路径现在不能改(罪恶的hardcode阿) 然后配置c:\lighttpd\etc\lighttpd.conf文件,这个有点烦。
CODE:
server.modules = (
"mod_rewrite", "mod_redirect", "mod_access", "mod_accesslog", "mod_status", "mod_scgi") 找到modules这段,默认只有mod_access和mod_accesslog,按上述增加其它模块。
CODE:
server.document-root = "C:/RailsApp/public"
server.errorlog = "C:/RailsApp/log/lighttpd-errors.log" accesslog.filename = "C:/RailsApp/log/lighttpd-access.log" 找到上述三行,按你自己的rails应用路径做相应更改
CODE:
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".scgi" )
找到这行,增加.scgi后缀处理
CODE:
server.error-handler-404 = "/dispatch.scgi"
增加这行,注意在你的应用public目录下并不需要实际建立dispatch.scgi这个文件。这个文件是虚拟的。
CODE:
scgi.server = ( "dispatch.scgi" => ((
"host" => "127.0.0.1", "port" => 9999, "check-local" => "disable" )) ) scgi.debug=0 增加以上scgi配置段落。 Step 2: 下载安装SCGI Rails Runner 这个有两个依赖库可能需要安装:
CODE:
gem install cmdparse
gem install highline 然后
CODE:
gem install scgi_rails-0.4.3.gem
Step 3: 配置SCGI:在console里切换当前路径到c:\railsapp(你自己的rails应用路径),执行
CODE:
scgi_ctrl config -S
会提示你设置密码,(大概是为了用于通过Drb远程管理吧) 执行完毕会在你应用目录产生\config\scgi.yaml配置文件。注意默认是production环境,如果要运行在development环境,在其中修改:env:参数。不过development环境也许存在内存泄漏问题 ![]() Step 4: 在Rails应用根目录下建立一个启动脚本run.bat,内容如下:
CODE:
@echo off
c: cd C:\lighttpd\sbin echo Stopping lighty... process.exe -k lighttpd.exe > nul echo Starting lighty... lighttpd.exe -f ..\etc\lighttpd.conf echo Stopping SCGI_service... Process.exe -k ruby.exe > nul cd C:\railsapp echo Starting SCGI_service... scgi_service 当然,修改其中c:\railsapp为你自己的应用目录。 好了,大功告成,运行run.bat吧,察看你的http://localhost吧 如果想把这个设置成service方式可以用SRVANY,具体设置参见这个地方。同时需要修改注册表
CODE:
HKLM\SYSTEM\CurrentControlSet\Services\RailsApp\Parameters\Application = c:\railsapp\run.bat
SCGI Rails Runner还有些别的运行和配置,参加其主页和文档。 |
|