2017-09-26 56 views
0

我有一个服务器与Rails 5.1,Phusion_Passenger和Nginx。Rails.application.database_configuration错误与Rails 5.1 + Nginx + Phusion_Passenger

当我启动服务器只有Phusion_Passenger,一切都很好:

=============== Phusion Passenger Standalone web server started =============== 
PID file: /project/tmp/pids/passenger.3000.pid 
Log file: /project/log/passenger.3000.log 
Environment: development 
Accessible via: http://0.0.0.0:3000/ 

You can stop Phusion Passenger Standalone by pressing Ctrl-C. 
Problems? Check https://www.phusionpassenger.com/library/admin/standalone/troubleshooting/ 
=============================================================================== 
[ N 2017-09-26 15:13:06.4195 8753/T5 age/Cor/SecurityUpdateChecker.h:374 ]: Security update check: no update found (next check in 24 hours) 

当我尝试启动,并与Nginx的访问同一个实例的覆盖,我收到以下错误:

App 8129 stdout: 
App 8129 stdout: 
[ E 2017-09-26 15:06:26.4848 1774/T1l age/Cor/App/Implementation.cpp:304 ]: Could not spawn process for application /project: An error occurred while starting up the preloader. 
    Error ID: e18b79ab 
    Error details saved to: /tmp/passenger-error-YkowRo.html 
    Message from application: Cannot load `Rails.application.database_configuration`: 
undefined method `[]' for nil:NilClass (NoMethodError) 
    (erb):13:in `<main>' 

看来,当你用Nginx加载rails应用程序时,它不能访问“Rails”对象。

+0

您是否使用环境变量传递数据库详细信息?如果是,那么你是否在你的nginx配置中指定了那些? –

+0

没有东西被细化为环境变量。股票标准config/database.yml文件。 – user1789782

回答

0

乘客在passenger.conf中没有设置默认环境。增加了这个变量,它解决了这个问题。

passenger_app_env development; 
+0

注意这显然只对开发是正确的。在生产中,你应该使用'production' env,它是nginx集成的默认值。 –