2012-09-01 12 views
12

Próbuję wprowadzić automatyczne wdrażanie, w tym nadzorowanie i pomyłkę domyślną ścieżką ustawień.domyślna lokalizacja supervisor.conf

Każdy schemat wdrożenia, który znalazłem użył /etc/supervisor/supervisor.conf i /etc/supervisor/conf.d/ bez żadnych wstępnych ustawień i linków, także po zainstalowaniu pakietu administratora przez apt-get ta ścieżka jest naprawdę wypełniona przez przykładową konfigurację.

W tym example przepływu wygląda to bez żadnych linków i tworzenia czegoś podobnego /etc/supervisor.conf:

sudo('apt-get -y install supervisor') 
put('config/supervisor_gunicorn.conf', '/etc/supervisor/conf.d/gunicorn.conf', use_sudo=True) 
sudo('supervisorctl reload') 

Ale supervisorctl ta ścieżka nie jest określony jako domyślny i zakłada się, że domyślna lokalizacja gdzieś aroud /etc/supervisor.conf tak jak określono w manual

Próbowałem zainstalować opiekuna na wszystkie możliwe sposoby, ale nie mogę uzyskać wyniku.

Wiem, że to tylko drobne, głupie szczegóły, ale będę wdzięczny za pomoc w zapewnieniu dobrego systemu wdrażania.

Odpowiedz

15

Normalnie domyślny plik jest rzeczywiście /etc/supervisor.conf, ale Debian distribution patches this (Link do zgzipowanego poprawki przewidzianej przez Debiana) szukać /etc/supervisor/supervisor.conf pierwszy:

--- supervisor-3.0a8.orig/src/supervisor/options.py 
+++ supervisor-3.0a8/src/supervisor/options.py 
@@ -105,7 +105,7 @@ 
    def default_configfile(self): 
     """Return the name of the found config file or raise. """ 
     paths = ['supervisord.conf', 'etc/supervisord.conf', 
-     '/etc/supervisord.conf'] 
+     '/etc/supervisor/supervisord.conf', '/etc/supervisord.conf'] 
     config = None 
     for path in paths: 
      if os.path.exists(path): 

Więc z tym patchem, przełożony szuka supervisord.conf w katalogu lokalnym, w podkatalogu etc/, a następnie w globalnych katalogach /etc/supervisor/ i /etc/.

Domyślna supervisord.conf plik instalowany przez Debiana ma to na celu:

[include] 
files = /etc/supervisor/conf.d/*.conf 

powodując supervisord ładować żadnych dodatkowych pliki umieszczone w katalogu conf.d.

+0

Dziękuję bardzo! Poprawiłem, jak zmienia się instalacja pakietu na moim serwerze, więc powodem było to, że instaluje się częściowo (być może pythonbrew jest powodem, dla którego może coś innego), a łatka nie działa. – mrjj

+0

Miłe znalezisko. Zastanawiałem się, w jaki sposób wersja ubuntu szukała /etc/supervisor/supervisor.conf. – fthinker

1

może być zainstalowany przełożonego poprzez pip i dlatego mają niezałatany wersję w

/usr/local/lib/python2.7/dist-packages/supervisor/

biorąc precedance nad wersji poprawione w

/usr/lib/pymodules/python2.7/supervisor

odpowiedzi Zobacz Martjin dla szczegółów na łata. Prostym rozwiązaniem jest:

pip uninstall supervisor

następnie ponownie zainstalować pakiet w przypadku, gdy został tylko częściowo zainstalowane:

apt-get install supervisor

Również upewnić Twój /etc/supervisor/supervisord.conf jest obecny.Jeśli nie, być może trzeba ręcznie odtworzyć go, kopalnia wygląda następująco:

; supervisor config file 

[unix_http_server] 
file=/var/run//supervisor.sock ; (the path to the socket file) 
chmod=0700      ; sockef file mode (default 0700) 

[supervisord] 
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) 
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) 
childlogdir=/var/log/supervisor   ; ('AUTO' child log dir, default $TEMP) 

; the below section must remain in the config file for RPC 
; (supervisorctl/web interface) to work, additional interfaces may be 
; added by defining them in separate rpcinterface: sections 
[rpcinterface:supervisor] 
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface 

[supervisorctl] 
serverurl=unix:///var/run//supervisor.sock ; use a unix:// URL for a unix socket 

; The [include] section can just contain the "files" setting. This 
; setting can list multiple files (separated by whitespace or 
; newlines). It can also contain wildcards. The filenames are 
; interpreted as relative to this file. Included files *cannot* 
; include files themselves. 

[include] 
files = /etc/supervisor/conf.d/*.conf 
0

Od ZE rzeczywistej dokumentacji: http://supervisord.org/configuration.html#configuration-file

Plik konfiguracyjny Inspektor jest umownie nazwane supervisord.conf. Jest używany zarówno przez supervisora, jak i supervisorctl. Jeśli aplikacja zostanie uruchomiona bez opcji -c (opcja, która jest jawnie używana), aplikacja wyszuka plik o nazwie supervisord.conf w następujących lokalizacjach, w podanym zamówienie. Użyje pierwszego znalezionego pliku.

  1. $ CWD/supervisord.conf
  2. $ CWD/etc/supervisord.conf
  3. /etc/supervisord.conf
  4. /etc/supervisor/supervisord.conf (od Inspektora 3.3.0)
  5. ../etc/supervisord.conf (w stosunku do pliku wykonywalnego)
  6. ../supervisord.conf (w stosunku do pliku wykonywalnego)