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

jui*_*icy 66 ruby-on-rails passenger nginx

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

Incomplete response received from application
Run Code Online (Sandbox Code Playgroud)

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

Yan*_*man 125

您的rails_env生产没有必需的设置,可能缺少secret_key_base.

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

rails_env production;
        to
rails_env development;
Run Code Online (Sandbox Code Playgroud)

如果应用程序正在加载它不是乘客问题.

生产方案:

  1. 输入您的应用根
  2. 跑: rake secret
  3. 复制输出
  4. /yourapp/config/secrets.yml
  5. 设定生产 secret_key_base

重启乘客应用:

touch /yourapp/tmp/restart.txt
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用secrets.yml并将其添加到.gitignore文件,以便它永远不会填充到您的git提供程序,或者您可以使用ENV变量,我正在使用这两种技术和一切都很好.如果您的服务器被黑客攻击并且黑客可以访问您的系统,那么存储密钥的位置并不重要:) (9认同)
  • 试图downvote ... config/secrets.yml说`不要在存储库中保留生产秘密,而是从环境中读取值 (7认同)
  • 您好,我在我的虚拟服务器〜/ .bashrc中设置<%= ENV ["SECRET_KEY_BASE"]%>:`export SECRET_KEY_BASE = 12345678910111212andmore` (4认同)
  • 这真的取决于你有多聪明:) (3认同)

Hoa*_*ang 25

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

转到rails app目录

cd /path/rails-app
Run Code Online (Sandbox Code Playgroud)

生成密钥密钥库

rake secret RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)

设置环境变量

SECRET_KEY_BASE=<the-secret-key-base>
Run Code Online (Sandbox Code Playgroud)

重新启动Rails应用程序

touch /path/rails-app/tmp/restart.txt
Run Code Online (Sandbox Code Playgroud)


Ctp*_*988 5

对于使用乘客的人:

•导航到项目的根目录。

• 跑 bundle exec rake secret RAILS_ENV=production

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

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

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

•运行passenger-config restart-app并选择要重新启动的应用程序。

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


use*_*769 5

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

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

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


更新,因为我需要再次参考此内容-nginx也是如此- /var/log/nginx/error.log在这种情况下是您的朋友!