Nginx+Mongrel+Rails 3.0+Windows部署发布

作者: 北国的雨
发布时间:2015-07-13 11:01:32

    偶知道大家都不提倡在Windows下进行rails的开发,更不提倡在windows下进行rails的部署。。。。

但是有个项目确实存在这个需求,既然平台因素无法忽略,就只好逆天而行了…

 

    思路:Nginx实现前端(有人说nginx在windows下性能不稳定,会出现各种莫名奇妙的问题,汗~~), 提供SSL单向和双向认证(针对不同的客户端提供不同的认证方式…),提供静态页面、图片、js、css文件, 其余代理到后端的mongrel.(部分功能未实行,发布时也是以developmen模式发布的)

          Mongrel后端服务器(为什么passenger没有windows版的, mongre_rails竟然还不支持rails 3.0, 感觉自己尝试的时候特悲剧)

 

    步骤:1. mongrel安装

             2.为mongrel启动rails注册服务

             3.下载nginx,并注册服务

             4.配置nginx,实现SSL单双向认证和代理功能

 

    一、Mongrel安装

gem install mongrel 

 

    二、为mongrel启动rails注册服务

      1. 下载微软的2个工具: instsrv.exe、srvany.exe, 细节参考 三、下载nginx,并注册服务

       2.为rails启动书写一个rails.bat文件,内容如下:

cd D:\WEB_APP\SVNMS  C:\ruby187\bin\rails s -p 3003 -b 127.0.0.1

  #-b 127.0.0.1 只绑定127.0.0.1,限定只能本机访问,由于前端nginx也是在本机运行,意思是仅运行nginx直接访问, 外部用户只能通过nginx才能访问        

      3. 为rails.bat注册服务,细节参考 三、下载nginx,并注册服务

        4. SVNMS.reg文件内容如下:

Windows Registry Editor Version 5.00      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SVNMS]    "Description"="SVN Manager Sysetem: D:\\WebApp\\SVNS\\rails s -e development"  "DisplayName"="SVNMS"          [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SVNMS\Parameters]    "Application"="D:\\WEB_APP\\rails.bat"  "AppParameters"=""  "AppDirectory"="D:\\WEB_APP\\SVNMS"     

    三、下载nginx,并注册服务

       1. 下载nginx windows版本 http://www.nginx.org

       2. 下载微软的2个工具: instsrv.exe、srvany.exe
        去微软网站下载安装Windows Server 2003 Resource Kit Tools(rktools.exe),它包括标题提及的所有必要的工具,下载完安装好。

       3. 运行命令
          在rktools安装目录下(一般在C:\Program Files\Windows Resource Kits\Tools目录)可以发现这两个程序.在运行下面命令之前,确保将instsrv.exe、srvany.exe复制到nginx的安装(解压)目录下,然后运行:

instsrv NGINX c:\nginx\srvany.exe  #注册服务

3.在c:\nginx\下,编辑一个nginx.reg文件
         

Windows Registry Editor Version 5.00      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NGINX\Parameters]        "Application"="C:\\nginx\\nginx.exe"       "AppParameters"=""        "AppDirectory"="C:\\nginx\\"      

参数解释:Application:exe或bat文件的绝对路径
             AppParameters: 运行参数
             AppDirectory:工作目录,就是工作时当前目录

4.让服务与程序关联起来, 命令行执行

regedit /s nginx.reg  

5.编辑启动nginx脚本start-nginx.bat(关闭脚本不用变), 让程序以服务方式运行
   

@ECHO OFF        net stop nginx        net start nginx        EXIT  

6.删除服务

sc delete SVNMS

 

补充:但是,当停止Nginix服务后,访问浏览器仍然能看到网站。查看进程,你会发现,Nginx启动了两个nginx进程(根据nginx.conf的配置worker_processes ,Fork出来的进程显然没有被停止,结果就是nginx永远关不掉。因此彻底关闭nginx请使用taskkill命令:

taskkill /F /IM nginx.exe > nul

结果是写一个stop_nginx脚本来处理nginx停止的所有操作

@echo off     echo Stopping nginx service...   net stop nginx     echo Kill nginx process...     taskkill /F /IM nginx.exe > nul

 

    四、配置nginx,实现SSL单双向认证和代理功能

server {          listen       8083;          server_name  liuwm-pc@grandsoft.com.cn;          root D:/www-date/public;          location / {              root D:/WEB_APP/SVNMS/public;                            #proxy
         proxy_set_header Host $host:8083;              proxy_set_header X-Real-IP $remote_addr;              proxy_set_header X-Forwarded-For $remote_addr;              proxy_pass http://127.0.0.1:3003/;                          proxy_set_header X-Forwarded-Proto https;              proxy_redirect off;          }          #SSL          ssl on;          ssl_certificate  E:/nginx/nginx-1.1.7/ssl/server.crt;          ssl_certificate_key  E:/nginx/nginx-1.1.7/ssl/server_no.key;          ssl_client_certificate E:/nginx/nginx-1.1.7/ssl/ca.crt;                   error_page   500 502 503 504  /50x.html;          location = /50x.html {              root   html;          }      }

  

参考:windows下nginx+mongrel配置

标签: Nginx Rails Windows
来源:http://www.cnblogs.com/lwm-1988/archive/2012/04/27/2473276.h

推荐: