【问题标题】:Production does'nt work ( Rails 5 , Passenger , Nginx )生产不起作用(Rails 5、Passenger、Nginx)
【发布时间】:2018-04-24 03:24:29
【问题描述】:

我将我的应用部署到服务器。 (Rails 5,乘客,Nginx) 我的应用程序正在开发模式下工作。 但是我将模式更改为生产模式,但出现此错误(/var/log/nginx/error.log):

[ E 2017-11-10 20:11:03.9343 21613/Tb age/Cor/App/Implementation.cpp:304 ]: Could not spawn process for application /home/rails/myapp: An error occurred while starting up predloader
  Error ID: ca909334
  Error details saved to: /tmp/passenger-error-iGQLnf.html
  Message from application: cannot load such file -- /home/rails/myapp/config/environment (LoadError)
  config.ru:3:in `require_relative'
  config.ru:3:in `block in <main>'
  /usr/local/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/builder.rb:55:in `instance_eval'
  /usr/local/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/builder.rb:55:in `initialize'
  config.ru:1:in `new'
  config.ru:1:in `<main>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `eval'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `preload_app'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:156:in `<module:App>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<main>'

在此错误之后,我将模式切换到开发。我又遇到了同样的错误!

我的 nginx 文件:

server {
   listen 80;
   server_name myapp.com www.myapp.com;
   access_log off;
   return 301 https://www.myapp.com$request_uri;
}

server {

  listen 443 ssl;

  ssl on;
  ssl_certificate /etc/nginx/ssl/myapp.com/ssl-bundle.crt;
  ssl_certificate_key /etc/nginx/ssl/myapp.key;

  server_name myapp.com www.myapp.com;
  passenger_enabled on;
  rails_env production;
  root /home/rails/myapp/public;
  index index.html index.htm;

}

需要帮助来解决这个问题!

【问题讨论】:

  • 能否添加乘客配置和/tmp/passenger-error-iGQLnf.html中保存的错误详情内容
  • 我添加了 /tmp/passenger-error-iGQLnf.html
  • 在所有文件中,您的应用名称为“myapp”,而在passenger-eoor-iGQLnf.html 中,您的应用名称显示为“trbodybuilding”。你能解释一下吗?同时添加乘客配置文件的内容。
  • 检查/etc/nginx/passenger.conf中是否有conf文件?
  • passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; passenger_ruby /usr/local/bin/ruby; -> Passenger.conf

标签: ruby-on-rails ruby-on-rails-4 nginx ruby-on-rails-5 passenger


【解决方案1】:

所以,问题是由于用户的文件权限不正确。

Nginx 以 www-data 用户身份运行,该用户无权读取应用目录的文件。 这就是启动应用服务器失败的原因。

sudo chown -R www-data:www-data /home/rails/myapp

使用上述命令后,乘客将能够读取app-directory的文件并成功启动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-16
    • 2014-12-10
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    相关资源
    最近更新 更多