django gunicorn sock Datei nicht erstellt von wsgi
Habe ich eine basic-django-rest-Anwendung in meinem digital-Ozean-server (Ubuntu 16.04) mit einem lokalen virtuellen Umgebung.
Die grundlegenden wsgi.py ist:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "workout_rest.settings")
# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)
Folge ich Schritt für Schritt dieses tutorial:
https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04
Wenn ich testen Gunicorn die Fähigkeit zu dienen, das Projekt mit diesem Befehl:
gunicorn --bind 0.0.0.0:8000 myproject.wsgi:Anwendung
Alles funktioniert gut.
So, ich habe versucht, das setup Gunicorn zu verwenden systemd service Datei.
Meine /etc/systemd/system/gunicorn.Dienst Datei:
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=ben
Group=www-data
WorkingDirectory=/home/ben/myproject
ExecStart=/home/ben/myproject/myprojectenv/bin/gunicorn --workers 3 --bind unix:/home/ben/myproject/myproject.sock myproject.wsgi:application
[Install]
WantedBy=multi-user.target
Meine Nginx-Konfiguration ist:
server {
listen 8000;
server_name server_domain_or_IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ben/myproject;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/ben/myproject/myproject.sock;
}
}
Habe ich geändert listen port von 80 auf 8000, da 80 geben Sie mir eine err_connection_refused Fehler.
Nach dem Start der server mit diesem Befehl:
sudo systemctl restart nginx
Wenn ich versuche auf meine Webseite bekomme ich einen 502 Bad Gateway Fehler.
Ich habe versucht, diese Befehle (auf der tutorial-Kommentare):
sudo systemctl daemon-reload
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
sudo systemctl restart nginx
aber es ändert sich nichts.
Wenn ich einen Blick auf die Nginix Protokolle mit diesem Befehl:
sudo tail -f /var/log/nginx/error.log
Kann ich Lesen, dass die sock Datei nicht existiert:
2016/10/07 09:00:18 [crit] 24974#24974: *1 connect() to unix:/home/ben/myproject/myproject.sock failed (2: No such file or directory) while connecting to upstream, client: 86.197.20.27, server: 139.59.150.116, request: "GET /HTTP/1.1", upstream: "http://unix:/home/ben/myproject/myproject.sock:/", host: "server_ip_adress:8000"
Warum diese Socke-Datei nicht erstellt? Wie kann ich konfigurieren, django/gunicorn um diese Datei zu erstellen?
Ich habe gunicorn in meinem INSTALLED_APP in meinem Django-Projekt, aber es ändert sich nichts.
EDIT:
Wenn ich testen die nginx-config-Datei mit nginx -t
bekomme ich eine Fehlermeldung: open() "/run/nginx.pid" failed (13: Permission denied)
.
Aber wenn ich den Befehl ausführen mit sudo: sudo nginx -t
ist, ist der test erfolgreich. Bedeutet das, dass ich zulassen, dass 'ben' Benutzer zum ausführen von Ngnix?
Über gunicorn logfile, ich kann nicht einen Weg finden, Sie zu Lesen. Wo werden Sie gespeichert?
Wenn ich überprüfen, ob gunicorn ausgeführt wird, mithilfe von ps aux | grep gunicorn
:
ben 26543 0.0 0.2 14512 1016 pts/0 S+ 14:52 0:00 grep --color=auto gunicorn
Hier ist hat passiert beim ausführen von systemctl enable-und start-Befehle für gunicorn:
sudo systemctl enable gunicorn
Synchronizing state of gunicorn.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable gunicorn
sudo systemctl start gunicorn
I get no output with this command
sudo systemctl is-active gunicorn
active
sudo systemctl status gunicorn
● gunicorn.service - gunicorn daemon
Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
Active: active (exited) since Thu 2016-10-06 15:40:29 UTC; 23h ago
Oct 06 15:40:29 DevUsine systemd[1]: Started gunicorn.service.
Oct 06 18:52:56 DevUsine systemd[1]: Started gunicorn.service.
Oct 06 20:55:05 DevUsine systemd[1]: Started gunicorn daemon.
Oct 06 20:55:17 DevUsine systemd[1]: Started gunicorn daemon.
Oct 06 21:07:36 DevUsine systemd[1]: Started gunicorn daemon.
Oct 06 21:16:42 DevUsine systemd[1]: Started gunicorn daemon.
Oct 06 21:21:38 DevUsine systemd[1]: Started gunicorn daemon.
Oct 06 21:25:28 DevUsine systemd[1]: Started gunicorn daemon.
Oct 07 08:58:43 DevUsine systemd[1]: Started gunicorn daemon.
Oct 07 15:01:22 DevUsine systemd[1]: Started gunicorn daemon.
nginx -t
. 2. Überprüfen Sie die gunicorn logfile. 3. Prüfen Sie, ob gunicorn ausgeführt wird, mithilfe, z.B. ps aux | grep gunicorn
. Wenn diese wiederum einen Fehler, bitte fügen Sie zu Ihrer Frage.Was passiert beim ausführen von systemctl enable-und start-Befehle für gunicorn? Und was sehen Sie, wenn Sie
sudo systemctl is-active gunicorn
oder sudo systemctl status gunicorn
?Danke für deinen Kommentar @YPCrumble. Ich habe meinen Beitrag aktualisiert.
Danke für deinen Kommentar @DanielRoseman. Ich habe meinen Beitrag aktualisiert.
post was Sie sehen auf
/var/log/syslog
. Hast du die firewall richtig mit sudo ufw delete allow 8000
und sudo ufw allow 'Nginx Full'
? Ist die nginx-Datei, die Sie geschrieben richtig symlinked auf /etc/nginx/sites-enabled
?InformationsquelleAutor Ben | 2016-10-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Musste ich die Berechtigungen meiner Socke Ordner:
Andere Sache ist, dass ich mich geändert habe die Socke Lage nach dem Lesen in vielen post, dass es nicht eine gute Praxis zu halten, die sock Datei in das django Projekt.
Meine neue URL ist:
Vergessen Sie nicht, um Berechtigungen zu ändern:
Sicher sein, dass gunicorn aktualisiert wird, führen Sie diese Befehle aus:
Töten werden die gunicorn Prozesse und neue aufbauen.
Können Sie diesen Befehl ausführen, um den Prozess zu starten, bei server-boot:
Alles funktioniert gut jetzt.
Wichtige Hinweise mit aufgenommen werden sollen, in dem erwähnten tutorial. Thx für die gemeinsame Nutzung.
InformationsquelleAutor Ben