Как настроить более новую версию Supervisord для запуска на начальной загрузке системы в Ubuntu 12.02?

Как Вы настраиваете более новую версию супервизора для запуска на начальной загрузке системы в Ubuntu? Некоторые дистрибутивы просто отстают в их репозиториях.

Когда я использую легкую установку (как рекомендуется по умолчанию на веб-сайте супервизора), я только установил двоичный файл, но это не daemonized.

http://supervisord.org/installing.html

Существует предыдущее старое сообщение, которое упомянуло, что создало или выскочку или systemd сценарий, который имеет несколько разных вещей попытки человек, чтобы заставить его работать, но нет никакого категорического ответа.

Как автоматически запустить supervisord на Linux (Ubuntu)

1
задан 13 April 2017 в 15:14
1 ответ

Хотя это правда, что документация перечисляет использование easy_install для установки супервизора, она также показывает другие методы, такие как использование пакета. Ограничение пакетов заключается в том, что вы становитесь зависимыми от дистрибутива, отставая от цикла разработки супервизора. Это обходной путь для того, что полагается на добавление внешнего репозитория в ваш дистрибутив. Если вы считаете, что это бесполезно, подумайте об обновлении вашего дистрибутива. Если все, что вас интересует, это сценарий System V init.d, перейдите в конец сообщения. Там есть ссылка на список поддерживаемых сообществом скриптов для различных дистрибутивов, включая Ubuntu.

После некоторого исследования я нашел шаги, которые я нашел: установите супервизор, затем деамонизируйте его и добавьте файл supervisord.conf по умолчанию в Ubuntu 12.04, который имеет старую версию supervisor в своем репозитории.

1.-Добавьте репозиторий Supervisor PPA:

sudo apt-add-repository ppa:schooltool-owners/trunk

Если двоичный файл apt-add-repository не существует, добавьте его из существующего юниверса.

1.a (может потребоваться ) источник: https://askubuntu.com/questions/38021/how-to-add-a-ppa-on-a-server

 sudo apt-get install software-properties-common
 sudo apt-get install python-software-properties

2.- Установите Supervisor с помощью apt-get

 sudo apt-get install supervisor

3. -Проверьте каталог init.d на наличие скрипта. Вы должны получить что-то вроде этого:

    #! /bin/sh
    #
    # skeleton  example file to build /etc/init.d/ scripts.
    #       This file should be used to construct scripts for /etc/init.d.
    #
    #       Written by Miquel van Smoorenburg <miquels@cistron.nl>.
    #       Modified for Debian
    #       by Ian Murdock <imurdock@gnu.ai.mit.edu>.
    #               Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
    #
    # Version:  @(#)skeleton  1.9  26-Feb-2001  miquels@cistron.nl
    #
    ### BEGIN INIT INFO
    # Provides:          supervisor
    # Required-Start:    $remote_fs $network $named
    # Required-Stop:     $remote_fs $network $named
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Start/stop supervisor
    # Description:       Start/stop supervisor daemon and its configured
    #                    subprocesses.
    ### END INIT INFO

    . /lib/lsb/init-functions

    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    DAEMON=/usr/bin/supervisord
    NAME=supervisord
    DESC=supervisor

    test -x $DAEMON || exit 0

    LOGDIR=/var/log/supervisor
    PIDFILE=/var/run/$NAME.pid
    DODTIME=5                   # Time to wait for the server to die, in seconds
                                # If this value is set too low you might not
                                # let some servers to die gracefully and
                                # 'restart' will not work

    # Include supervisor defaults if available
    if [ -f /etc/default/supervisor ] ; then
        . /etc/default/supervisor
    fi
    DAEMON_OPTS="-c /etc/supervisor/supervisord.conf $DAEMON_OPTS"

    set -e

    running_pid()
    {
        # Check if a given process pid's cmdline matches a given name
        pid=$1
        name=$2
        [ -z "$pid" ] && return 1
        [ ! -d /proc/$pid ] &&  return 1
        (cat /proc/$pid/cmdline | tr "\000" "\n"|grep -q $name) || return 1
        return 0
    }

    running()
    {
    # Check if the process is running looking at /proc
    # (works for all users)

        # No pidfile, probably no daemon present
        [ ! -f "$PIDFILE" ] && return 1
        # Obtain the pid and check it against the binary name
        pid=`cat $PIDFILE`
        running_pid $pid $DAEMON || return 1
        return 0
    }

    force_stop() {
    # Forcefully kill the process
        [ ! -f "$PIDFILE" ] && return
        if running ; then
            kill -15 $pid
            # Is it really dead?
            [ -n "$DODTIME" ] && sleep "$DODTIME"s
            if running ; then
                kill -9 $pid
                [ -n "$DODTIME" ] && sleep "$DODTIME"s
                if running ; then
                    echo "Cannot kill $LABEL (pid=$pid)!"
                    exit 1
                fi
            fi
        fi
        rm -f $PIDFILE
        return 0
    }

    case "$1" in
      start)
        echo -n "Starting $DESC: "
        start-stop-daemon --start --quiet --pidfile $PIDFILE \
            --startas $DAEMON -- $DAEMON_OPTS
        test -f $PIDFILE || sleep 1
            if running ; then
                echo "$NAME."
            else
                echo " ERROR."
            fi
        ;;
      stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE 
        echo "$NAME."
        ;;
      force-stop)
        echo -n "Forcefully stopping $DESC: "
            force_stop
            if ! running ; then
                echo "$NAME."
            else
                echo " ERROR."
            fi
        ;;
      #reload)
        #
        #   If the daemon can reload its config files on the fly
        #   for example by sending it SIGHUP, do it here.
        #
        #   If the daemon responds to changes in its config file
        #   directly anyway, make this a do-nothing entry.
        #
        # echo "Reloading $DESC configuration files."
        # start-stop-daemon --stop --signal 1 --quiet --pidfile \
        #   /var/run/$NAME.pid --exec $DAEMON
      #;;
      force-reload)
        #
        #   If the "reload" option is implemented, move the "force-reload"
        #   option to the "reload" entry above. If not, "force-reload" is
        #   just the same as "restart" except that it does nothing if the
        #   daemon isn't already running.
        # check wether $DAEMON is running. If so, restart
        start-stop-daemon --stop --test --quiet --pidfile $PIDFILE \
            --startas $DAEMON \
        && $0 restart \
        || exit 0
        ;;
      restart)
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
        [ -n "$DODTIME" ] && sleep $DODTIME
        start-stop-daemon --start --quiet --pidfile $PIDFILE \
            --startas $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
      status)
        echo -n "$LABEL is "
        if running ;  then
            echo "running"
        else
            echo " not running."
            exit 1
        fi
        ;;
      *)
        N=/etc/init.d/$NAME
        # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
        echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
        exit 1
        ;;
    esac

    exit 0

Подробнее здесь: https://github.com/Supervisor/initscripts

и здесь: http://supervisord.org/running.html

1
ответ дан 4 December 2019 в 00:01

Теги

Похожие вопросы