2017-09-26 1 views
0

J'ai un serveur avec Rails 5.1, Phusion_Passenger et Nginx.Rails.application.database_configuration erreur avec Rails 5.1 + Nginx + Phusion_Passenger

Quand je démarre le serveur avec juste Phusion_Passenger, tout est bon:

=============== 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) 

Lorsque je tente de démarrer et d'accéder à la même instance avec Nginx comme la superposition, je reçois l'erreur suivante:

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>' 

Il semble que lorsque vous chargez l'application rails avec Nginx, il ne peut pas accéder à l'objet "Rails".

+0

Transmettez-vous les détails de la base de données en utilisant des variables d'environnement? Si oui, l'avez-vous spécifié dans votre configuration nginx? –

+0

Rien n'est raffiné en tant que variable d'environnement. Stock standard config/database.yml fichier. – user1789782

Répondre

0

Le passager ne dispose pas d'un environnement par défaut défini dans le fichier passenger.conf. Ajouté cette variable et il a résolu le problème.

passenger_app_env development; 
+0

Notez que ceci n'est évidemment correct que pour le développement. En production, vous devriez utiliser l'env 'production' qui est la valeur par défaut pour l'intégration de nginx. –