如果你认识我,就在我身边,那么发现了下面这篇总结的错误,就请告诉我,这样我也可以进步。
如果我们互不相识,那么,麻烦你把错误信息通过邮箱发给我,在下先行谢过。
在项目的Gemfile里面添加 gem puma
,然后进入项目 bundle
。
有两种方式的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
这样直接就可以配置好并且启动。
在往生产环境部署时,遇到了这样一个问题,说 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 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
。
上面是一些简单的总结,误区估计不少,希望看到我这篇总结的人能够帮我指出来,
使我改正认识误区。