Ich habe versucht, meine Rails-App über Capistrano auf Nginx und Ubuntu bereitzustellen, wie im Tutorial auf der Seite https://gorails.com/deploy/ubuntu/14.04 . aber am ende bekomme ich eine fehlermeldung:
Incomplete response received from application
in meinem Browser. Dies ist wahrscheinlich ein Fehler des Passagiers, aber wie kann ich herausfinden, was zu tun ist?
ruby-on-rails
nginx
passenger
saftig
quelle
quelle
passenger_buffer_response off;
? stackoverflow.com/q/11738924/1454117passenger_buffer_response_off
hat nichts mit seinem Problem zu tun und wird nicht helfen. Vor langer Zeit gab es einen Fehler im Antwortpuffercode, aber dieser Fehler wurde lange behoben, sodass die Lösung in dem von Ihnen veröffentlichten StackOverflow-Beitrag nicht mehr gilt.Antworten:
Ihre Rails_env-Produktion muss nicht eingerichtet werden, wahrscheinlich fehlt secret_key_base.
Öffnen Sie
/etc/nginx/sites-available/default
und ändern Sie rails_env in development:rails_env production; to rails_env development;
Wenn die App geladen wird, handelt es sich nicht um ein Passagierproblem.
Produktionslösung:
rake secret
/yourapp/config/secrets.yml
secret_key_base
Starten Sie die Passagier-App neu:
touch /yourapp/tmp/restart.txt
quelle
export SECRET_KEY_BASE=12345678910111212andmore
do not keep production secrets in the repository, instead read values from the environment
Dieser Fehler tritt auf, weil Sie die secret_key_base nicht festgelegt haben. Befolgen Sie diese Schritte, um das Problem zu beheben:
Wechseln Sie in Ihr Rails-App-Verzeichnis
cd /path/rails-app
Generieren Sie eine geheime Schlüsselbasis
Umgebungsvariable festlegen
SECRET_KEY_BASE=<the-secret-key-base>
Starten Sie die Rails-App neu
touch /path/rails-app/tmp/restart.txt
quelle
Ich hatte dieses Problem über das Wochenende (es stellte sich heraus, dass meine Versionen von Passagier und Rubin nicht kompatibel waren).
Es scheint jedoch niemand zu erwähnen: Der eigentliche Fehler wird möglicherweise in /var/log/apache2/errors.log angezeigt , nicht in einem benutzerdefinierten Protokoll.
Sobald Sie das wissen, wird Ihre Suche hoffentlich einfacher!
Update, da ich noch einmal darauf zurückgreifen musste - dies gilt auch für Nginx -
/var/log/nginx/error.log
ist in diesem Fall dein Freund!quelle
Für diejenigen, die Passagiere benutzen:
• Navigieren Sie zum Stammverzeichnis Ihres Projekts.
• Lauf
bundle exec rake secret RAILS_ENV=production
• Kopieren Sie die Ausgabe und führen Sie sie aus
sudo nano config/secrets.yml
•
production
Ersetzen Sie unter den Wert vonsecret_key_base
durch das kürzlich kopierte Rake-Geheimnis.• drücken
CNTRL+X
, dann drückeny
, dann drückenenter
.• Führen
passenger-config restart-app
Sie die App aus und wählen Sie sie aus, die Sie neu starten möchten.https://www.phusionpassenger.com/library/admin/apache/restart_app.html
quelle
In meinem Fall lag dies daran, dass meinem Server zeitweise (während der PDF-Generierung) der Arbeitsspeicher ausgeht. Sobald das PDF generiert wurde, wurde etwas RAM wiederhergestellt und der Fehler würde verschwinden.
Ich hatte einen Ubuntu-Server mit 500 MB RAM.
Ich habe etwas Swap Space hinzugefügt und dieser Fehler ist verschwunden.
quelle
Dies bedeutet, dass Ihre Rails-App gepanzert wurde, bevor Sie tatsächlich zu Rails gelangen. Dies könnte eine Ausnahme bei Middleware sein, bei der der ENV-Schlüssel fehlt, etwas auf Betriebssystemebene.
Versuchen Sie zuerst, die App lokal zu booten und das zu tun, was Sie getan haben, um den Fehler in der Produktion zu erhalten. Wenn alles in Ordnung ist, überprüfen Sie alle Ihre Protokolle. Überprüfen Sie die Nginx-Protokolle, Ihre Passagierprotokolle und schließlich alle anderen betriebssystemspezifischen Protokolle, die sich auf das Booten und Ausführen Ihrer App beziehen.
quelle
Könnte sein, dass meine Antwort nicht zum Thema gehört, aber wenn mein Datenbankserver
mysql
nicht läuft, habe ich auch diesen Fehler erhalten. Nur für den Fall, dass jemand den gleichen Fehler hat.so
start/restart
könnte Ihre Datenbank eine andere Antwort sein.quelle
Gibt es jemanden wie mich, der diesen Fehler nach dem Hochladen einer Datei erhalten hat?
Meine Lösung besteht darin, den Namen der Datei zu überprüfen, die möglicherweise Sonderzeichen wie `[(~ .
Entfernen Sie es einfach und laden Sie die Datei erneut hoch.
Viel Glück ~
quelle
Ich habe dies nur auf meinem Testserver und nicht in der Produktion erhalten, da ich eine URL angefordert habe, die nicht vorhanden war, und ich denke, in der Testumgebung gibt Rails einen Fehler aus, anstatt eine 404-Antwort zurückzugeben.
quelle