MacOS下Rails+Nginx+SSL环境的搭建(下)

五.以Production环境部署Rails项目

这里插一个题外话,我们之前是以development环境运行的rails项目,现在我们希望在实际的生产系统中跑一下看看.这是十分有必要的,应该在rails项目的早期进行生产系统的测试,否则到后面会遇到很多奇怪的问题.

正常情况下在rails项目的config/environments目录中按照对于环境包含了各自对应的配置文件,我们不需要做任何修改.不过鉴于每个人的运行环境千差万别,在production.rb配置文件中有3个地方要简单提及一下:

1.config.serve_static_assets = true这句应该打开
2.config.action_dispatch.x_sendfile_header这就应该取消注释
3.config.force_ssl这句应该注释掉.即使你在后面打开了SSL支持,这句也可以注释掉,因为SSL是Nginx而不是Rails来支持的!当然有些人实现SSL的方式不一样,可能这里需要取消注释,在这里我只是点到为止.

上面一切正常后我们首先要进行资源的预编译:

rake assets:precompile

完毕后你会在项目的public/assets目录中找到编译压缩打包后的资源.

这时你可以尝试以生产环境来运行Rails服务了:

RAILS_ENV=production rails s

不出意外,你会看到控制台输出如下内容:

Rails 4.0.6 application starting in production on http://0.0.0.0:3000

你首先应该关闭nginx服务,在本地首先测试Rails是否正常,然后在考虑在nginx中测试.

六.SSL支持

最后我们可以在之前成功运行的Rails_Nginx环境中开启对SSL的支持.在配置SSL之前,我首先要说明一点,商用的SSL证书是要花银子买的,不过如果只是在本地测试SSL那么我们可以自己制作self-sign类型的证书.打开以这种证书认证的SSL,浏览器会提示该站点证书有问题,不过只是本地测试也无伤大雅.

首先你的系统中要装openssl,然后进入你需要保存证书的目录,依次运行如下命令:

//创建一个server.pass.key文件
openssl genrsa -des3 -out server.pass.key 2048
//然后用之前创建的key文件生成一个server.key文件
openssl rsa -in server.pass.key -out server.key
//删除server.pass.key,他的使命已经完成了
rm server.pass.key
//创建server.csr文件,注意在提示输入challenge password时直接回车
openssl req -new -key server.key -out server.csr
//生成server.crt文件
openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt

此时你的目录用应该有server.crt server.csr server.key三个文件.

下面我们在原有nginx.conf的http块中添加SSL的配置:

server {
  listen 443 ssl;
  server_name localhost;

  passenger_enabled on;
  rails_env production;
  root rails_project_path/public;

  access_log /usr/local/nginx/logs/rails.log;

  ssl on;
  ssl_certificate your_path/server.crt;
  ssl_certificate_key your_path/server.key;

  ssl_session_timeout  5m;

  ssl_protocols  SSLv2 SSLv3 TLSv1;
  ssl_ciphers  HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers   on;

#  location ^~ /assets/ {
#    gzip_static on;
#    expires max;
#    add_header Cache-Control public;
#  }

#  error_page 500 502 503 504 /500.html;
#  client_max_body_size 4G;
#  keepalive_timeout 10;
}

上面的root目录和两个证书的目录要换成你自己的路径.

重新载入Nginx配置,如果不出意外当你通过浏览器访问https://localhost时会出现证书非法的提示框,此时你应该选择信任该证书,再次刷新,你就可以打开网页了.

七.尾声

恭喜!你已经成功的在MacOS上创建了SSL支持的Nginx服务器!
最后说2点:

a. Nginx的log可以在conf中设置,在对应的server块中添加以下一句:

access_log /usr/local/nginx/logs/rails.log;

b.如果你在本地用rails s调试网站,你可以直接在后面看到log,但是如果通过Nginx和passenger运行Rails的话,你很难看到rails的输出,不过你可以通过如下命令来监控:

tail -f rails_project/log/production.log
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大熊猫侯佩

赏点钱让我买杯可乐好吗 ;)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值