2011-01-01 8 views
3

Ich entwickle derzeit eine Flasche App innerhalb von virtualenv. Ich beabsichtige, es mit bjoern WSGI-Server zu bedienen (aber das ist wahrscheinlich nicht so wichtig). Ich beabsichtige auch, die App mit einem Lighty oder Nginx Reverse Proxy zu bedienen. Wie auch immer, kann die App von innerhalb ihres eigenen virtualenv als Systemdienst ausgeführt werden? Und wenn ja, wie würde man darüber gehen?Starten Sie eine wsgi-App von innerhalb von virtualenv als Linux-Systemdienst

Antwort

4

Meiner Erfahrung nach schlage ich vor, dass Sie Supervisord verwenden können, um Ihren Webserver als Daemon-Dienst auszuführen. Sie können zwar einige Linux-Service-Skripte in /etc/init.d schreiben, aber es ist wirklich schwierig, es richtig zu machen. Hier ist ein example init.d script for nginx, um es als Dienst in Ubuntu zu betreiben. Du willst nicht einen schreiben, oder?

Um einen Python-Server auszuführen, der von virtualenv als Daemon-Dienst mit Supervisord abhängt, hier ist die Konfiguration, die ich in einer Produktionsumgebung verwende.

[program:web01] 
command=/home/victorlin/tg2env/bin/paster serve production.ini ; 
process_name=%(program_name)s ; 
directory=/home/victorlin/ ; 
user=victorlin ; 
priority=999 ; 
redirect_stderr=true ; 
stdout_logfile=/home/victorlin/logs/web01_out.txt ; 
stderr_logfile=/home/victorlin/logs/web01_err.txt ; 
environment=PYTHON_EGG_CACHE=/home/victorlin/.python-eggs ; 

Sie verwenden können/path/to/virtualenv/ist/python Ihren eigenen Python-Skript im Befehlsfeld laufen. Und die supervisord auf Start-up zu laufen, Sie crontab wie dies in Ihrem Root-Account schreiben:

@reboot /usr/local/bin/supervisord -c /home/root/supervisord.conf 

Natürlich, wenn Sie nicht Port-Nummern unter 1024 zu öffnen haben, können Sie diese schreiben Start-up Crontab in einem nicht-Privileg-Konto.

+0

Ratten! Supervisor nicht über easy_install installierbar ... Der auf der eigenen Website aufgeführte Downloadpfad scheint veraltet zu sein. – hayavuk

+0

Wie wäre es mit Download von PyPi? http://pypi.python.org/pypi/supervisor/ –

+0

würde nicht auf dem System installiert werden. Ich weiß nicht warum. Wie auch immer, ich habe es gelöst, indem ich meine eigenen Init-Skripte geschrieben habe. Ich werde Ihren Rat beachten, falls Supervisord sich entscheidet, in Zukunft zu installieren. :) http://is.gd/ybPAb9 – hayavuk