2013-04-28 8 views
7

Próbuję wymyślić ładny skrypt init.d, który uruchamia aplikację psgi, używając start_server i starman. Musi posiadać następujące cechy:Najlepszy sposób napisania skryptu init.d dla start_server i starman?

  • działać na RedHat (tj Debianie start-stop-daemon nie jest dostępny)
  • Run start_server jako inny użytkownik
  • Be utrzymaniu.

Idealnie, chciałbym użyć rzeczy, które pochodzą z /etc/init.d/functions, aby nadać skryptowi wygląd i wygląd skryptu RedHat init.d.

Dokładniej, szukam najlepszych praktyk w celu:

  • Daemonize program, który nie pochodzi z własnego --daemonize opcji
  • deamon pod inną UID.
+2

Chociaż zalecenia dotyczące produktów i bibliotek nie są tutaj dokładnie tematem, czy rozważałeś [przełożonego] (http://supervisord.org/)? Możesz go znaleźć w repozytorium EPEL zarówno dla RHEL5, jak i 6. To dba o część skryptu startowego, a wszystkie inne funkcje, których szukasz, są wykonywane bez większego wysiłku. – Charles

+1

Wow. Dziękuję, Charles. Jeśli to coś działa jak w reklamie, mam ** dużo ** pracy za to. Dlaczego po raz pierwszy czytam o tym? – innaM

+0

Nie jestem pewien, ale rozpowszechniaj słowo! Używamy go w produkcji, aby utrzymać działanie pracowników Gearman. – Charles

Odpowiedz

1

Możesz spróbować runit, to kolejny przełożony. W dzisiejszych czasach dobrą praktyką wydaje się używanie jednej z tych rzeczy. Tutaj you could read porównanie różnych nadzorców.

Najlepsze praktyki:

  • Daemonize program, który nie pochodzi z własnego wyboru --daemonize

Nie trzeba daemonize programu runit trwa troszczyć się o coś.

  • Uruchom demona pod innym identyfikatorem UID.

Tutaj można użyć chpst

1

Jeśli Perl działa zresztą jak o użyciu Ubic? Jest to nadzorca oparty na perlu, który sprawia, że ​​kompatybilność z LSB /etc/init.d/ jest dość łatwa. Zwykle używam go w taki sposób, w jaki używane są runit/daemontools/s6 (w oddzielnym katalogu usług /), ale masz dużą elastyczność. Ponieważ możesz używać perla w swoich skryptach, istnieje wiele interesujących możliwości. Dodatkowo Ubic daje przenośność, ponieważ będzie działać w ten sam sposób na różnych platformach (BSD, Linux, Solaris, OS/X, itp.).

1

Oto Skrypt startowy używamy: starman-init

Posiada wszystkie cechy wymienione:

  • Używa START_SERVER wspierania Płynnego restartuje
  • działa jako nieuprzywilejowany użytkownika/grupy nobody/nobody
  • Używa/etc/init.d/funkcje

pamiętać, że zakłada masz lokalny Perl zainstalowane dla danej aplikacji (takich jak plenv lub perlbrew). Musisz dostosować to do swojego środowiska.

Powiązane problemy