Rails 新手问题:Capistrano 部署报错

jianchixuexi · June 05, 2022 · Last by jianchixuexi replied at June 06, 2022 · 407 hits

新手练习部署, 按照教程 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

Reply to hjiangwen

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

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

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

Reply to bighuzi

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

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

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

Reply to spike76

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

Reply to Catherine

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

You need to Sign in before reply, if you don't have an account, please Sign up first.