设为首页 收藏本站
查看: 1743|回复: 0

[经验分享] Nginx+Mongrel+Rails 3.0+Windows部署发布

[复制链接]

尚未签到

发表于 2015-7-26 13:52:53 | 显示全部楼层 |阅读模式
  偶知道大家都不提倡在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配置

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-90839-1-1.html 上篇帖子: 通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题 下篇帖子: 简单设置,让nginx 忽略大小写
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表