Ich scheine einige leichte Probleme bei der Bereitstellung einer Pyramid-Webanwendung zu haben. Das Problem scheint in meinem Init-Skript zu liegen, das ich zum Starten meiner Webanwendung beim Booten verwende. Aus irgendeinem Grund funktioniert uWSGI nur, wenn mein Socket auf die Berechtigung "nobody.nobody" gesetzt ist ODER Nginx nach meinem uwsgi-Init-Skript gestartet wird. Ich habe mein Init-Skript geändert, um diese Änderungen zu berücksichtigen, aber es scheint nicht zu funktionieren. Das Init-Skript (oder der Teil, der uwsgi startet) sieht wie folgt aus:
#!/sbin/runscript
args="--ini-paste /var/www/pyramid/app1/development.ini"
command="/var/www/pyramid/bin/uwsgi"
pidfile="/var/run/uwsgi.pid"
sock="/var/tmp/proxy/uwsgi.sock"
nobody="nobody.nobody"
start() {
ebegin "Starting app1"
chown $nobody $sock
start-stop-daemon --start --exec $command -- $args \
--pidfile $pidfile
chown $nobody $sock
einfo "app1 started"
eend $?
}
Meine Nginx-Konfiguration sieht folgendermaßen aus:
location / {
include uwsgi_params;
uwsgi_pass unix:///var/tmp/proxy/uwsgi.sock;
uwsgi_param SCRIPT_NAME "" ;
}
Meine ini-Datei enthält Folgendes:
[uwsgi]
socket = /var/tmp/proxy/uwsgi.sock
pidfile = /var/run/uwsgi.pid
master = true
processes = 1
home = /var/www/pyramid
daemonize = /var/log/uwsgi.log
virtualenv = /var/www/pyramid/
pythonpath = /var/www/pyramid/bin
Was passiert, ist, dass Nginx startet und dann uwsgi startet. Ein "ls -la" in /var/tmp/proxy zeigt, dass die Berechtigungen von uwsgi.sock auf "Root Root" statt auf "nobody nobody" gesetzt sind. Ein Neustart von Nginx behebt das Problem jedoch, unabhängig davon, welche Berechtigungen der Socket hat (Nginx muss jedoch zuerst gestartet werden).
Die Möglichkeiten, wie ich das zum Laufen bringen kann, sind also:
- uwsgi starten
- nginx starten
- nginx neu starten
ou
- nginx starten
- uwsgi starten
- nginx neu starten
Ich bin völlig ratlos, warum das nicht funktioniert. Wenn jemand einen Rat hat, wäre ich sehr dankbar!