Rails 新手问题:Capistrano 部署报错

jianchixuexi · 2022年06月05日 · 最后由 jianchixuexi 回复于 2022年06月06日 · 419 次阅读

新手练习部署, 按照教程 https://juejin.cn/post/6976996961517830175 前面全部都通过了;项目在本地也能启动起来

在最后一步部署的时候遇到报错: 在 $cap production deploy 之后第 5 步报错 00:05 bundler:install

报错信息:

Caused by:
SSHKit::Command::Failed: bundle exit status: 16
bundle stdout: Nothing written
bundle stderr: Your bundle only supports platforms ["x86_64-darwin-14"] but your local platform
is x86_64-linux. Add the current platform to the lockfile with
`bundle lock --add-platform x86_64-linux` and try again.

我在 mac 上部署的,且我在 Gemfile.lock 里面看到 PLATFORMS 部分如下:

LATFORMS
  ruby
  x86_64-darwin-14
  x86_64-linux

我也尝试了 $ sudo bundle lock --add-platform x86_64-linux

但重新部署 $cap production deploy 之后还是相同的报错 用报错信息搜了 没有找到相关可尝试解决的方案

请问有什么可尝试解决这个报错的思路么?

我也尝试了 $ sudo bundle lock --add-platform x86_64-linux

执行这句命令后,你本地的 Gemfile.lock 会有改变。你有没有提交这个修改到 git 仓库并且推送到远端?如果你没把这修改送到远端,那你下一次使用 cap 部署时还是用着旧的 Gemfile.lock 文件,导致 PLATFORMS 不含 x86_64-linux

hjiangwen 回复

非常感谢,就是这个原因。git push 之后这个问题解决了。

出现了新问题:Capistrano 部署后 全部通过 部署成功了。 但是访问服务器 IP 打开页面是“无法访问此网站 ERR_CONNECTION_REFUSED”; 我确认了 80 端口(包括其他安全组端口)是打开的、本地项目 rails s 是可以正常启动的; 请问该如何尝试解决这个问题?

可以服务器上访问下,并看下 puma 日志,是不是有错误,

bighuzi 回复

多谢回复,我看了 nginx 和 rails 的日志,目前没有发现异常(也可能是我没有看懂);puma 的日志,可能是我没有配置的原因,现在没有 shared/log/puma.stderr.log 这个文件。

jianchixuexi 回复

盲猜 nginx 配错,请求没有转到 rails。看看 rails 日志有没有收到请求

先要确定是哪里的问题,排除法一步步定位。本地 Rails s 可以启动,那至少程序没有基本的报错。那么就访问地址,看 Rails 的 log 有没有显示接受到请求。如果也没有的话,那我盲猜的原因和#6 楼一样,nginx 没有把请求转发给 Rails 那边了。

spike76 回复

确实就是 nginx 配错,问题已解决,多谢。

Catherine 回复

多谢提供思路,问题解决了,是 nginx 配置问题。

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