On Sun, Dec 22, 2013 at 8:58 AM, Josh Jore <jj...@marchex.com> wrote:
> Hi, > I have a daemonized Apache httpd which I'd like to manage with > supervisord. I've just read > http://supervisord.org/subprocess.html#apache-2-2-6 and > http://smarden.org/runit/runscripts.html#apache2 which roughly suggest > using -DFOREGROUND to prevent forking and detaching from the console. > > I'm really unsure that it's smart for me to adjust this existing daemon > much since it's actually a mod_perl application server with a lot of moving > parts. I'd much rather just manage the program as-is, even though it > detaches from its parent and is a proper daemon. > > These two paragraphs contradict each other to some extent. 1. you'd like to manage w/ supervisord, then 2nd states that there's too much going on w/ the app to get it to behave under supervisord. My suggestion is to identify what you want out of supervisord that the apache package scripts doesn't provide. If it's just the ability to expose the status and restart commands over a cli, then let me introduce you to (ba)sh/csh/zsh--also considered CLI's. > I'd like a suggestion for something that's been already worked out, > preferably nicer than this terribly buggy shell script I just penned for > this email. > > #!/bin/sh > # TODO(jjore): handle `start | stop | status | restart` > PIDFILE=$1 > SIGNAL=WINCH > > if [ -r "$PIDFILE" ] && kill -0 $(cat "$PIDFLE"); then > echo "$@ is already running" > exit 1 > fi > > trap 'kill "-$SIGNAL" $(cat "$PIDFILE")' TERM > rm -f "$PIDFILE" > while true; do > # TODO(jjore): Avoid restarting too quickly > ( exec "$@" ) & > while kill -0 $(cat "$PIDFILE") && sleep 1; do > done > wait > done > > > I'd avoid any of this voodoo. You're reinventing what supervisord offers--process control by way of the WAIT variants. Some processes come with a good set of daemonization primitives that working around aren't worth the effort. Supervisord offers process control for processes missing these primitives. For me: nginx and haproxy are the two I never run under anything under init or upstart. There's so much going on with graceful reloads and child watching that supervisord (or circusd) aren't needed and create extra work for me. the operator, for little benefit. > _______________________________________________ > Supervisor-users mailing list > Supervisor-users@lists.supervisord.org > https://lists.supervisord.org/mailman/listinfo/supervisor-users > >
_______________________________________________ Supervisor-users mailing list Supervisor-users@lists.supervisord.org https://lists.supervisord.org/mailman/listinfo/supervisor-users