web-dev-qa-db-fra.com

"Réponse incomplète reçue à partir de l'application" de nginx/passager

J'ai essayé de déployer mon application Rails sur nginx et ubuntu via capistrano, comme le didacticiel de la page https://gorails.com/deploy/ubuntu/14.04 . mais à la fin je reçois un message d'erreur: 

Incomplete response received from application

dans mon navigateur. C'est probablement une erreur du passager, mais comment puis-je savoir quoi faire?

61
juicy

Votre production Rails_env n'a pas été configurée, il manque probablement secret_key_base.

Ouvrez /etc/nginx/sites-available/default et remplacez Rails_env par développement:

Rails_env production;
        to
Rails_env development;

Si l'application est en cours de chargement, il ne s'agit pas d'un problème de passager .

Solution de production:

  1. Entrez la racine de votre application
  2. lancer: rake secret
  3. copier la sortie
  4. aller à /yourapp/config/secrets.yml
  5. définir la production secret_key_base

Redémarrez l'application passager: 

touch /yourapp/tmp/restart.txt
119

Cette erreur se produit car vous n'avez pas défini la base secret_key_base. Suivez ces étapes pour résoudre ce problème:

Accédez au répertoire de votre application Rails.

cd /path/Rails-app

Générer une base de clé secrète

rake secret Rails_ENV=production

Définir la variable d'environnement

SECRET_KEY_BASE=<the-secret-key-base>

Redémarrez l'application Rails

touch /path/Rails-app/tmp/restart.txt
24
Hoa Hoang

Pour ceux qui utilisent Passager: 

• Accédez à la racine de votre projet.

• exécuter bundle exec rake secret Rails_ENV=production

• Copiez la sortie, puis exécutez Sudo nano config/secrets.yml.

• Sous production, remplacez la valeur de secret_key_base par le secret de rake récemment copié.

• appuyez sur CNTRL+X, puis sur y, puis appuyez sur enter.

• lancez passenger-config restart-app et sélectionnez l'application que vous souhaitez redémarrer.

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

4
Ctpelnar1988

J'ai eu ce problème ce week-end (il s'est avéré qu'il y avait une incompatibilité entre mes versions de passagers et Ruby). 

Cependant, personne ne semble mentionner: l'erreur réelle peut apparaître dans /var/log/Apache2/errors.log , pas dans un journal personnalisé.

Une fois que vous savez cela, j'espère que votre recherche sera plus facile!

4
user208769

Dans mon cas, c'était parce que mon serveur manquait de RAM par intermittence (pendant la génération PDF). Une fois le PDF généré, une partie de RAM a été restaurée et l'erreur disparaîtrait. 

J'ai eu un serveur Ubuntu avec 500M de RAM.

J'ai ajouté de l'espace d'échange et cette erreur a disparu. 

2
mridula

Peut-être que ma réponse est hors sujet, mais lorsque ma base de données mysql n'est pas en cours d'exécution, j'ai aussi cette erreur. Juste au cas où quelqu'un aurait la même erreur.

alors start/restart votre base de données pourrait être une autre réponse.

0
William Hu

Y a-t-il quelqu'un comme moi qui a eu cette erreur après avoir téléchargé un fichier?

Ma solution est de vérifier le nom du fichier qui peut avoir des caractères spéciaux comme `[(~ .

Il suffit de l'enlever, puis de télécharger le fichier à nouveau.

Bonne chance ~

0
fanjieqi

Cela signifie que votre application Rails a fait le plein avant d'arriver à Rails. Cela pourrait être une exception dans le middleware, une clé ENV manquante, quelque chose au niveau du système d'exploitation. 

Essayez de démarrer l’application localement d’abord et faites ce que vous avez fait pour obtenir l’erreur de production. Si tout va bien, vérifiez tous vos journaux. Consultez les journaux nginx, les journaux de vos passagers et enfin, tous les autres journaux spécifiques au système d’exploitation relatifs au démarrage et à l’exécution de votre application.

0
jeremywoertink