"Incomplete response received from application" 来自 nginx / 乘客

"Incomplete response received from application" from nginx / passenger

我尝试在 nginx 和 ubuntu 上部署我的 rails 应用程序,就像页面 https://gorails.com/deploy/ubuntu/14.04 上的教程一样。 但最后我收到一条错误消息:

Incomplete response received from application

在我的浏览器中。 这可能是乘客的错误,但我怎么知道该怎么办?

您的 rails_env 产品没有必要的设置,可能缺少 secret_key_base。

打开/etc/nginx/sites-available/default并将rails_env更改为开发:

rails_env production;
        to
rails_env development;

如果应用正在加载,则不是乘客问题。

生产解决方案:

  1. 输入您的应用根目录
  2. 运行: rake secret
  3. 复制输出
  4. 转到/yourapp/config/secrets.yml
  5. 设置制作secret_key_base

重新启动乘客应用程序:

touch /yourapp/tmp/restart.txt

发生此错误是因为您没有设置 secret_key_base。请按照以下步骤修复它:

转到您的 rails 应用程序目录

cd /path/rails-app

生成秘钥库

rake secret RAILS_ENV=production

设置环境变量

SECRET_KEY_BASE=<the-secret-key-base>

重新启动 Rails 应用程序

touch /path/rails-app/tmp/restart.txt

可能是我的回答跑题了,但是当我的数据库 mysql 服务器不是 运行 时,我也遇到了这个错误。以防万一有人有同样的错误。

所以 start/restart 您的数据库可能是另一个答案。

对于使用 Passenger 的用户:

• 导航到项目的根目录。

• 运行 bundle exec rake secret RAILS_ENV=production

• 复制输出然后 运行 sudo nano config/secrets.yml

• 在 production 下,将 secret_key_base 的值替换为最近复制的 rake secret。

• 按 CNTRL+X,然后按 y,然后按 enter

• 运行 passenger-config restart-app 和 select 您希望重新启动的应用程序。

https://www.phusionpassenger.com/library/admin/apache/restart_app.html

我周末遇到了这个问题(原来我的 passenger 版本和 ruby 不兼容)。

然而,似乎没有人提到:实际错误可能出现在 /var/log/apache2/errors.log 中,而不是在任何自定义日志中。

一旦你知道了,希望你的搜索会更容易!


更新,因为我需要再次参考这个 - 这对 nginx 也适用 - /var/log/nginx/error.log 在那种情况下是你的朋友!

就我而言,这是因为我的服务器 运行 内存间歇性不足(在 PDF 生成期间)。一旦生成 PDF,一些 RAM 就会恢复,错误就会消失。

我有一个 ubuntu 服务器,内存为 500M。

added some swap space 并且这个错误消失了。

这意味着您的 rails 应用程序在真正到达 rails 本身之前就已经崩溃了。这可能是中间件中的异常,缺少 ENV 键,OS 级别的东西。

首先尝试在本地启动应用程序,然后执行您为在生产环境中遇到错误所做的操作。如果一切正常,请检查所有日志。检查 nginx 日志、您的乘客日志,最后检查与启动和 运行 您的应用程序有关的任何其他 OS 特定日志。

有没有人跟我一样在上传文件后出现这个错误?

我的解决方案是检查文件名,其中可能包含一些特殊字符,例如 `[(~

只需删除它,然后重新上传文件。

祝你好运~

我得到这个,只在我的测试服务器上而不是在生产中,因为我请求的 URL 不存在,我猜在测试环境中,Rails 抛出一个错误而不是返回 404 响应。