2013-04-28 7 views
7

sto cercando di trovare una bella sceneggiatura init.d che avvia un'applicazione PSGI, utilizzando start_server e starman. Si deve avere le seguenti caratteristiche:Il modo migliore per scrivere uno script init.d per start_server e starman?

  • Run su RedHat (vale a dire di Debian start-stop-daemon non è disponibile)
  • Run start_server come un altro utente
  • essere mantenibile.

Idealmente, mi piacerebbe utilizzare il materiale fornito con /etc/init.d/functions per dare allo script l'aspetto di qualsiasi vecchio script init.d di RedHat.

In particolare, sto cercando le migliori pratiche per:

  • demonizzare un programma che non arriva con la propria --daemonize opzione
  • eseguire il demone sotto un altro UID.
+2

Mentre le raccomandazioni sui prodotti e sulle librerie non sono esattamente in tema qui, avete considerato [supervisore] (http://supervisord.org/)? Puoi trovarlo nel repository EPEL sia per RHEL5 che per 6. Che si prende cura della parte script init, e ottieni tutte le restanti funzioni che stai cercando con quasi nessuno sforzo. – Charles

+1

Wow. Grazie, Charles. Se questa cosa funziona come pubblicizzato, ho un ** lotto ** di lavoro per questo. Ora, perché è la prima volta che ne leggo? – innaM

+0

Non sono sicuro, ma spargere la voce! Lo usiamo in produzione per mantenere operativi i nostri lavoratori Gearman. – Charles

risposta

1

Si potrebbe provare runit, è un altro supervisore. Oggigiorno sembra una buona pratica usare una di queste cose. Qui you could read un confronto tra diversi supervisori.

Best practice:

  • demonizzare un programma che non arriva con la propria opzione --daemonize

Non è per demonizzare il programma, runit prende cura di esso.

  • Eseguire il daemon sotto un altro UID.

Qui si potrebbe usare chpst

1

Se perl è in esecuzione in ogni caso il modo di usare Ubic? È un supervisore perl che rende la compatibilità con LSB /etc/init.d/ abbastanza facile. Tendo ad usarlo nel modo in cui vengono usati runit/daemontools/s6 (in una directory/servizi separati) ma hai molta flessibilità. Dato che puoi usare perl nei tuoi script ci sono molte possibilità interessanti. Inoltre Ubic ti offre la portabilità poiché funzionerà allo stesso modo su piattaforme diverse (BSD, Linux, Solaris, OS/X, ecc.).

1

Ecco lo script di init che stiamo usando: starman-init

Ha tutte le caratteristiche che hai citato:

  • Utilizza START_SERVER per sostenere riavvio aggraziate
  • Viene eseguito come utente non privilegiato/gruppo nessuno/nessuno
  • Utilizza/etc/init.d/funzioni

noti che presuppone una Perl locale installata per la propria applicazione (come plenv o perlbrew). Dovrai personalizzarlo per il tuo ambiente.

Problemi correlati