来自nginx /乘客的“来自申请的不完整回复”

问题描述 投票:63回答:8

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

Incomplete response received from application

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

ruby-on-rails nginx passenger
8个回答
123
投票

您的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

24
投票

发生此错误是因为您未设置secret_key_base。请按照以下步骤进行修复:

转到rails app目录

cd /path/rails-app

生成密钥密钥库

rake secret RAILS_ENV=production

设置环境变量

SECRET_KEY_BASE=<the-secret-key-base>

重新启动Rails应用程序

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

5
投票

对于使用乘客的人:

•导航到项目的根目录。

•运行bundle exec rake secret RAILS_ENV=production

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

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

•按qazxsw poi,然后按qazxsw poi,然后按qazxsw poi。

•运行CNTRL+X并选择您要重新启动的应用程序。

y


4
投票

在我的情况下,这是因为我的服务器间歇性地耗尽了RAM(在PDF生成期间)。生成PDF后,某些RAM已恢复,错误将消失。

我有一个500M RAM的ubuntu服务器。

enter和这个错误消失了。


4
投票

我周末遇到了这个问题(事实证明我的乘客和红宝石版本之间存在不兼容性)。

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

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


更新,因为我需要再次参考这个 - 这也适用于nginx - 在这种情况下,passenger-config restart-app是你的朋友!


1
投票

这意味着你的rails应用程序在实际进入rails之前就已经过了。这可能是中间件的一个例外,缺少ENV键,在操作系统级别。

首先尝试在本地启动应用程序并执行您为生成错误而执行的操作。如果一切正常,请检查所有日志。检查nginx日志,乘客日志,以及最后与启动和运行应用程序相关的任何其他操作系统特定日志。


0
投票

可能我的回答是主题,但当我的数据库https://www.phusionpassenger.com/library/admin/apache/restart_app.html服务器没有运行时,我也得到了这个错误。以防有人有同样的错误。

所以added some swap space您的数据库可能是另一个答案。


0
投票

有没有像我这样的人在上传文件后出现此错误?

我的解决方案是检查文件的名称,该文件可能有一些特殊字符,如`[(〜。

只需将其删除,然后再次上传文件即可。

祝你好运〜

© www.soinside.com 2019 - 2024. All rights reserved.