转载

安全与稳定的初步解决方案(二)

如果你认识我,就在我身边,那么发现了下面这篇总结的错误,就请告诉我,这样我也可以进步。

如果我们互不相识,那么,麻烦你把错误信息通过邮箱发给我,在下先行谢过。

Puma Installation

在项目的Gemfile里面添加 gem puma ,然后进入项目 bundle

Puma Settings

有两种方式的setting:

第一种:

config 目录下新建 puma.rb 文件,然后把配置信息写入就行。常见的配置信息有:

threads min:max;  workers number;  bind tcp://127.0.0.1:port;  environment ENV; 

譬如下面的这个例子:

threads 8:32;

workers 2;

bind tcp://127.0.0.1:3000;

encironment production;

将会使 Puma 的配置成为每个进程的线程数为最小8个,最大32个,一种两个进程( workers ),

监听本地3000端口,环境为 production

启动命令为:

rails s Puma -e production 启动项目的生产环境。

第二种:

直接用 Puma 启动,不用 Rails 自身的 Rails s ,但是放心, Puma 会加载 Rails 本身的组件。

配置如下:

puma -t min:max -w number -b tcp://127.0.0.1:3000 -e production 

这样直接就可以配置好并且启动。

Note

在往生产环境部署时,遇到了这样一个问题,说 secret_token 不存在,查了查发现是没有重新生成

SECRET_KEY_BASE .原因是 Rails 在部署到生产环境时要求更换 secret_key 。在 config/secrets.yml

里面有这样一句话:

production:    secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> 

Rails 是从环境变量里得到目前的 secret_key 的。所以,在启动 Puma 或者其他的 Rails Server

之前,一定要把 secret_key 导入环境变量。

命令如下:

export SECRET_KEY_BASE= rake secret RAILS_ENV=production``

这样在发送请求到 Rails 时就不会报错了。

Nginx Settings

Nginx Main Site

官方给出的配置样板是:

Nginx.conf

我自己的配置没这么复杂:

worker_processes 2;  error_log  logs/error.log;  pid        logs/nginx.pid;  events{      worker_connections 1024;  }  http{      index    index.html;     default_type application/octet-stream;  log_format   main '$remote_addr - $remote_user [$time_local]  $status '  '"$request" $body_bytes_sent "$http_referer" '  '"$http_user_agent" "$http_x_forwarded_for"';  access_log    logs/access.log  main;  sendfile     on;  tcp_nopush   on;  server{                      listen 80;                      server_name localhost;              location / {          proxy_set_header  X-Real-IP        $remote_addr;          proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;          proxy_set_header  Host             $http_host;          proxy_redirect    off;          proxy_pass        http://127.0.0.1:3000;      }  }  } 

只是简单的配置了 FastCGI反向代理负载均衡 都没有配置。

这些是比较高级的功能,鉴于我目前的主要任务不是在这些高级部署上,所以这篇总结写的时候

也没有去刻意的去学习里面的配置,不过,基本的命令在下面:

1.检查配置文件语法错误。

sudo nginx -t -c setting_file

2.指定配置文件启动

sudo nginx -c setting_file

3.停止nginx

sudo nginx -c setting_file -s stop

如果没有指定 -c 选项,那么默认的配置文件就是 /etc/nginx/nginx.conf ,那么停止nginx的

命令就只有 -s 发送信号选项,而不用 -c

Summary

上面是一些简单的总结,误区估计不少,希望看到我这篇总结的人能够帮我指出来,

使我改正认识误区。

原文  http://dukuikui.github.io/jekyll/update/2016/04/05/puma nginx部署RailsApplication.html
正文到此结束
Loading...