部署 Puma+Nginx+Postgres 部署 Rails 项目,puma 无法启动 production 模式

babyhai · 发布于 2018年01月12日 · 最后由 babyhai 回复于 2018年01月15日 · 471 次阅读
7ebcdb

使用 RAILS_ENV=production rails s 启动puma

访问不了;

如果这么启动 bundle exec puma -C config/puma.rb

却是默认: development 模式

nginx的错误日志:

2018/01/12 04:34:38 [error] 29429#0: *151 connect() to unix:///www/Haley_blog/shared/tmp/sockets/puma.sock failed (111: Connection refused) while connecting to upstream, client: 104.238.248.15, server: haleyme.com, request: "GET / HTTP/1.1", upstream: "http://unix:///www/Haley_blog/shared/tmp/sockets/puma.sock:/500.html", host: "www.HALEYME.com"

puma.rb 文件

nginx.conf 文件

共收到 22 条回复
7ebcdb

在我的 /www/Haley_blog/shared/log 下面没有自动生成 puma_access.log puma_error.log两个文件 但是有puma.stderr.log
puma.stdout.log 这两个文件

17

看puma的日志文件,看有什么输出, nginx 提示 Connection refused ,应该是 puma 启动失败了。

7ebcdb

puma的日志文件都没有自动生成,是我自己创建的 现在nginx已经成功跑起来来了, 就是图片不显示 assets下面得

A5aa80

upstream的timeout是0

1

你需要看清 puma 和 nginx 的配置,而不是拷贝过来就用。

从 puma.rb 的内容看,如果设置了 RAILS_ENV=production,就使用 unix socket 的方式,需要启动 nginx 做反向代理才能访问。RAILS_ENV=production rails s 走的是这一分支。

如果没有设置 RAILS_ENV=production,就使用 puma 的默认配置,监听了 9292 端口。bundle exec puma -C config/puma.rb 走的是这一线路,当然也就没启动在生产环境。

先简化问题,你是要部署到生产环境还是本地开发?是在服务器调试还是本地调试?

7ebcdb

是在服务器上部署 生产环境,现在nginx已经可以访问了 但是访问不了图片 现在图片可以显示了 但是格式不太对

7ebcdb

现在nginx访问 好像头部的图片没有了 下面的图片可以访问 nginx的日志是这下面的

这是访问的效果:

8042

@babyhai 应该是样式文件没有加载进来,先看看期待获得的文件,是否存在于服务器上

7ebcdb

这是public 下面的assets下面的文件:

这是今天我看的nginx的错误日志 是css js文件没有加载起来

2018/01/12 22:20:31 [notice] 21737#0: signal process started
2018/01/12 22:21:41 [notice] 21802#0: signal process started
2018/01/12 22:24:18 [emerg] 21944#0: unexpected ";" in /etc/nginx/nginx.conf:23
2018/01/12 22:25:02 [notice] 21986#0: signal process started
2018/01/12 22:25:38 [notice] 22021#0: signal process started
2018/01/13 05:26:16 [emerg] 12975#0: invalid number of arguments in "add_header" directive in /etc/nginx/nginx.conf:26
2018/01/13 05:28:22 [notice] 13089#0: signal process started
2018/01/13 05:31:59 [error] 13242#0: *1 open() "/www/Haley_blog/current/public/assets/favicon-f6f0c8fbb6d88284f0cc080820c7796c1b34b09f5db22a244213a6d480f00e7e.ico" failed (2: No such file or directory), client: 64.233.172.185, server: haleyme.com, request: "GET /assets/favicon-f6f0c8fbb6d88284f0cc080820c7796c1b34b09f5db22a244213a6d480f00e7e.ico HTTP/1.1", host: "haleyme.com"
2018/01/13 06:03:57 [error] 13242#0: *12 open() "/www/Haley_blog/current/public/assets/application-8f4530a99f7e063bdaec68b187142c4abc9b4889a24465df284583f5af3912a1.js" failed (2: No such file or directory), client: 101.226.102.97, server: haleyme.com, request: "GET /assets/application-8f4530a99f7e063bdaec68b187142c4abc9b4889a24465df284583f5af3912a1.js HTTP/1.1", host: "haleyme.com", referrer: "http://haleyme.com/"
2018/01/13 14:45:10 [error] 13242#0: *68 open() "/www/Haley_blog/current/public/assets/application-8f4530a99f7e063bdaec68b187142c4abc9b4889a24465df284583f5af3912a1.js" failed (2: No such file or directory), client: 66.249.66.22, server: haleyme.com, request: "GET /assets/application-8f4530a99f7e063bdaec68b187142c4abc9b4889a24465df284583f5af3912a1.js HTTP/1.1", host: "haleyme.com", referrer: "http://haleyme.com/"
2018/01/13 14:45:10 [error] 13242#0: *71 open() "/www/Haley_blog/current/public/assets/application-fd38ec0d36a29c0e7147c4c03b1d9eaeddab725402721f277495b90984aae858.css" failed (2: No such file or directory), client: 66.249.66.24, server: haleyme.com, request: "GET /assets/application-fd38ec0d36a29c0e7147c4c03b1d9eaeddab725402721f277495b90984aae858.css HTTP/1.1", host: "haleyme.com", referrer: "http://haleyme.com/"
2018/01/13 15:27:04 [error] 13242#0: *80 open() "/www/Haley_blog/current/public/assets/application-fd38ec0d36a29c0e7147c4c03b1d9eaeddab725402721f277495b90984aae858.css" failed (2: No such file or directory), client: 66.249.66.4, server: haleyme.com, request: "GET /assets/application-fd38ec0d36a29c0e7147c4c03b1d9eaeddab725402721f277495b90984aae858.css HTTP/1.1", host: "haleyme.com", referrer: "http://haleyme.com/about"

96

设置一下初始化配置文件,production配置文件不对 ,js css没有被puma处理。

96

你上puma官网查看一下,哪里的配置不对。

1

怀疑权限问题,执行 ls -ld /www/Haley_blog 看看。

1

ls /www/Haley_blog/current/public/assets/application-fd38ec0d36a29c0e7147c4c03b1d9eaeddab725402721f277495b90984aae858.css 看能不能找到文件。

7ebcdb
1Rei 回复

这些文件都是在/www/Haley_blog/public/assets 下面 current 文件下面没有文件也没有目录

1
7ebcdbbabyhai 回复

那么修改 nginx 配置,root 去掉 current 目录,reload 配置。

current 是对应 cap 自动部署脚本生成的目录。

7ebcdb

好的 我试试

7ebcdb

我把nginx配置文件的current去掉了 换成/www/Haley_blog/public 也重启了nginx服务器 也不知道是不是有缓存 还是不显示图片 puma我也重启了,谷歌浏览器 我在设置里面清除了全部数据

7ebcdb
1Rei 回复

现在访问ip 图片 样式都可以正常加载了 ,但访问域名还是不显示图片,提示我访问资源终止了:

Resource interpreted as Stylesheet but transferred with MIME type text/plain: "http://haleyme.com/assets/application-030a2b8f546558a5ebff1f47fe1d87b47ec0567482a4f832eb87e4be8126b91d.css".
7eb4a7
7ebcdbbabyhai 回复

你看下是不是nginx把样式文件当成纯文本来加载了

7ebcdb

这个问题已经解决了。感谢各位的帮助 后面这个是nginx 把css文件当成纯文本来加载了 在nginx配置文件中加上

include       mime.types;
default_type  application/octet-stream; 

重启服务器就可以了

7ebcdb babyhai 关闭了讨论 01月15日 18:00
7ebcdb babyhai 重新开启了讨论 01月15日 18:00
96

这里推荐使用yum的方式来安装nginx,yum安装的nginx包括了绝大部分模块,甚至包括http2的模块,还有一个就是他有一个比较完善的默认配置,包括include mime.types这样的配置都是默认有的

7ebcdb

下次记住了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册