Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Einführung zu Supervisord (PyGraz)

Horst Gutmann
November 06, 2012

Einführung zu Supervisord (PyGraz)

Horst Gutmann

November 06, 2012
Tweet

Other Decks in Technology

Transcript

  1. Was ist supervisord? • Init Daemon ähnlich wie init.d und

    upstart • Pure Python • Linux, OSX, FreeBSD und Solaris o!ziell unterstützt • BSD-ähnliche Lizenz
  2. Init Daemon? • Automatischen Starten und Stoppen von Prozessen •

    Überwachung, ob der Prozess noch läuft • Verbreitete Systeme: sysvinit, upstart, launchd, ...
  3. Warum etwas Neues? • Man muss nicht für jeden Prozess

    eine eigene separate Con"g anlegen (sysinitv, upstart, ...) • Prozesse werden als Child-Prozesse verwaltet, wodurch PID-Files nur mehr in Ausnahmefällen benötigt werden. • Ganz normale Anwendung, die auch von ganz normalen Usern ausgeführt werden kann.
  4. Warum etwas Neues? • Webinterface, über das das Status von

    Prozessen angezeigt und geändert werden kann. • XML-RPC-API • stdout-Logging • Eine Lösung, die auf jedem Unix-System laufen sollte
  5. Groups • Eine Supervisord-Instanz für alles • Bei ähnlichen Tools

    dann künstliche [program]- Namen notwendig • Start und Stop von Sites über Groups
  6. Supervisord pro Site • Jede Site hat eine eigene Supervisord-Instanz

    • Erlaubt eigenen User pro Site und damit einfacheres Restarting bei Deployments • Saubere Programmnamen möglich • Installation in eigener venv oder global mit separaten Con"g-Files
  7. pygraz.org & de.pycon.org • Mehrere Con"gs mit Installation global bzw.

    venv (de.pycon.org) • def start_server(): with pre"x(env_pre"x): run('supervisorctl -c {0}/supervisord.conf‘ ‘start pygraz'.format(env.cwd)) Look Ma, No sudo! • Jede Instanz dann mit upstart verwaltet.
  8. de.pycon.org • /srv/pyconde/env_pyconde_2012/supervisord.conf • Supervisord installiert in venv, damit supervisorctl-Befehl

    im richtigen Kontext ausgeführt wird. • sysvinit-Script zum Starten des supervisord
  9. Personal Daemons • Einzelne Benutzer können Crontabs haben, aber keine

    Managed-Processes • Mit Supervisord natürlich auch möglich :-) • Zum Beispiel für einfache Webservices eine Option