2013-05-14 15 views
8

Ich habe eine Python-Anwendung (konkrete Django) auf meinem Server ausgeführt. Vorgestern lief es unter Apache mit mod-wsgi fast ohne Probleme. Ich hatte zwei Hauptgrund nginx wechseln:uwsgi service startet nicht

  • Leistung - unter nginx, habe ich fast die Hälfte der Zeit für jede Anforderung
  • zwei Anwendungen zusammen nicht erfolgreich unter Apache ausgeführt wurde - gelöst von nginx
  • dritten Grunde ist eine bessere Konfiguration für mich

Ich habe ein Problem mit dem uwsgi-Service. Zuerst werde ich die wsgi Datei der App gehören:

import os 
import sys 

path = os.path.abspath(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 

if path not in sys.path: 
sys.path.append(path) 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "usporion.settings") 

from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

Dann habe ich uwsgi.ini Datei für init-App, die sich unter /etc/uwsgi/apps-enabled/usporion.ini:

[uwsgi] 
plugins = python 
uid = www-data 
gid = www-data 
uwsgi-socket = /srv/sockets/usporion.sock 
chmod-socket = 664 
chdir = /srv/www/usporion 
pythonpath = /srv/www/usporion 
module = usporion.wsgi 
env = DJANGO_SETTINGS_MODULE=usporion.settings 
logdate = True 
logto = /var/log/uwsgi/usporion.log 
#daemonize = /var/log/uwsgi/usporion.log 
vacuum = True 
max-requests = 1000 
processes = 5 
threads = 10 
workers = 5 
vhost = True 

Anmerkung: Ich habe versucht, daemonize unkommentiert zu haben (aber Dies funktioniert nicht mit der aktuellen Verwendung).

Schließlich habe ich diese nginx config:

upstream django { 
    server 95.168.193.219:80; 
} 

server { 
    listen   95.168.193.219:80; 
    server_name  usporion.cz; 
    return  301 $scheme://www.usporion.cz$request_uri; 
} 

server { 
    listen   95.168.193.219:80; 
    server_name  www.usporion.cz; 
    charset   utf-8; 

    client_max_body_size 100M; 

    location /media { 
     alias  /srv/www/usporion/media; 
     expires  1d; 
    } 

    location /static { 
     alias  /srv/www/usporion/static; 
     expires  1d; 
    } 

    location/{ 
     root  /srv/www/usporion; 
     include  uwsgi_params; 
     uwsgi_pass unix:///srv/sockets/usporion.sock; 
    } 
} 

Ausführen des Befehls uwsgi --ini /etc/uwsgi/apps-enabled/usporion.ini funktioniert gut und ich bin in der Lage App arbeitet im Web zu sehen. Wenn ich jedoch service uwsgi start mache, wird der Dienst nicht (FAIL) ohne Nachricht gestartet und ich kann nichts in den Protokollen finden. Das Ausführen dieses Dienstes ohne usporion.ini in apps-enabled funktioniert einwandfrei.

Ich würde mich für jede Hilfe freuen, die ich mit dem Ausführen von uwsgi "Service" unter dem Bildschirm vermeiden kann, aber als normaler Dienst ausführen. Hier

ist die dist Info:

[email protected][name]:/etc/nginx/sites-enabled# uname -a 
Linux [name] 2.6.32-5-amd64 #1 SMP Sun Sep 23 10:07:46 UTC 2012 x86_64 GNU/Linux 
[email protected][name]:/etc/nginx/sites-enabled# cat /etc/debian_version 
6.0.7 
[email protected][name]:/etc/nginx/sites-enabled# nginx -v 
nginx version: nginx/1.2.6 
[email protected][name]:/etc/nginx/sites-enabled# uwsgi --version 
1.2.3-debian 
[email protected][name]:/etc/nginx/sites-enabled# python --version 
Python 2.7.3 

Schließlich würde, wenn jemand möchte mir einen Rat geben, zu konfigurieren (ich bin neu in nginx und es ist willkommen), das ist 8-Core Xeon-Server 2.4 GHz mit 16 GB RAM, davon ist die Hälfte für diese App reserviert.

Antwort

2

Fehler sind uwsgi Konfiguration:

[uwsgi] 
plugins = python 
uid = www-data 
gid = www-data 
uwsgi-socket = /srv/sockets/usporion.sock 
chmod-socket = 664 
chdir = /srv/www/usporion 
pythonpath = /srv/www/usporion 
wsgi-file = /srv/www/usporion/usporion/wsgi.py 
env = DJANGO_SETTINGS_MODULE=usporion.settings 
logdate = True 
logto = /var/log/uwsgi/usporion.log 
#daemonize = /var/log/uwsgi/usporion.log 
vacuum = True 
max-requests = 1000 
master = True 
enable-threads = True 
processes = 5 
threads = 10 
vhost = True 

Unterschied ist in wsgi-file, was alt module Config Wert ersetzt hat. Dann erschien ein Fehler bezüglich der fehlenden wsgi-Datei (erster geschriebener Fehler). daemonize ist hier nicht notwendig, da debian's Service automatisch dies definiert. Trotzdem denke ich vacuum, logto ist dort nicht notwendig, ebenso chmod-socket und uwsgi-socket - alle von ihnen wird durch debians Service definiert. Ich werde dies annehmen und diese Antwort vervollständigen.

Dennoch von dem Versuch, usw., diese Konfiguration ist einfach und alles anderes denifed automaticly werden soll oder einigen Standardwert oder von Django hat itselves:

[uwsgi] 
plugins = python 
chdir = /srv/www/usporion 
pythonpath = /srv/www/usporion 
wsgi-file = /srv/www/usporion/usporion/wsgi.py 
+0

haben das gleiche Problem, aber eine andere Ursache. Durch das Kommentieren der "listen" -Richtlinie konnte uwsgi gestartet werden. Keine Fehlermeldungen Spaß, aufzuspüren! – Homer6