Архив рубрики: chkconfig

Autorun many things

  • Use chkconfig — aboutlink
  • DaemonController library. It will enable you to auto-start services with your Rails app, starting them if they aren’t already started.
  •  Create an initializer containing (about):
Thread.new do
  system("rackup faye.ru -s thin -E production")
end
  • On Ubuntu, you should use the operating systems’s init system — Upstart.

    user@host:~$ cat /etc/init/faye.conf 
    description "Faye Upstart script"
    
    start on startup
    stop on shutdown
    
    respawn
    
    script
        env RAILS_ENV=production
    
        exec sudo -u deployuser -i /home/deployuser/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/bin/rackup /var/www/booko.com.au/booko/faye.ru -s thin -E production
    end script 

    I’m not happy with the method of calling Ruby since it will change. But the advantages are that it will start when the system starts and it will respawn if it dies or you KILL it.

    Let Upstart take care of demonising a process and making sure it keeps running

  • Shell script in config/thin_example.sh

    #!/bin/sh
    
    set -e
    
    # Feel free to change any of the following variables for your app:
    TIMEOUT=${TIMEOUT-60}
    APP_ROOT=/home/deployer/apps/example/current
    PID=$APP_ROOT/tmp/pids/thin.pid
    CMD="cd $APP_ROOT; bundle exec rackup -D -P $PID $APP_ROOT/config/faye.ru -s thin -E     production"
    AS_USER=deployer
    set -u
    
    startme(){
        run "$CMD"}
    
    stopme(){
        run "pkill -f $PID"}
    
    run (){if["$(id -un)"="$AS_USER"];then
        eval $1
      else
        su -c "$1"- $AS_USER
      fi
    }case"$1"in
        start)   startme ;;
        stop)    stopme ;;    
        restart) stopme; startme ;;*) echo "usage: $0 start|stop|restart">&2
           exit 1;;
    esac

    Loosely modified from the unicorn scripts that Ryan Bates used in his VPS deployment railscast (pro only).

    Make it executable

    chmod +x config/thin_example.sh

    You’ll need to symlink it to init.d (after chmod +x ‘ing to make it executable)

    sudo ln -nfs /home/deployer/apps/example/current/config/thin_example.sh /etc/init.d/thin_example

    Then if you want it to startup with the server

     sudo update-rc.d thin_example defaults

    Otherwise you should just be able to /etc/init.d/thin_example [start|stop|restart]. An important point to note is that I’m telling rackup to start in daemon mode (-D) and explicitly setting the PID so I can kill it late

CentOS управление загрузкой сервисов chkconfig

link

Для добавления сервисов в автозагрузку, в центосе используется утилита chkconfig

# chkconfig
chkconfig version 1.3.30.2 - Copyright (C) 1997-2000 Red Hat, Inc.
Может свободно распостраняться в рамках GNU Public License.
применение:   chkconfig --list [имя сервиса]
         chkconfig --add <имя сервиса>
         chkconfig --del <имя сервиса>
         chkconfig [--level <уровни>] <имя сервиса> <on|off|reset|resetpriorities>

Рассмотрим на примере ранее установленного snmpd
Проверим состояние сервиса:

# chkconfig --list snmpd
snmpd           0:выкл  1:выкл  2:выкл  3:выкл  4:выкл  5:выкл  6:выкл

т.е. на данный момент он выключен, и при старте системы не будет загружаться, исправим это недоразумение, но для начала разберемся что значат цифры 0-6 в выводе команды, а значат они только уровень выполнения сервиса:
Уровень 0 — остановка системы (halt) — работа системы должна быть прекращена;
Уровень 1 — однопользовательский режим работы — система инициализирует минимум служб и даёт единственному пользователю (как правило, суперпользователю) без проведения аутентификации командную строку. Как правило, этот режим используется для восстановления системы;
Уровень 2 — многопользовательский режим — пользователи могут работать на разных терминалах, вход в систему с процессом аутентификации;
Уровень 3 — многопользовательский сетевой режим — в отличие от предыдущего уровня, осуществляется настройка сети и запускаются различные сетевые службы;
Уровень 4 — не имеет стандартного толкования и практически не используется;
Уровень 5 — запуск графической подсистемы — по сравнению с уровнем 3 производится также старт графической подсистемы X11, и вход в систему осуществляется уже в графическом режиме;
Уровень 6 — перезагрузка системы — при включении этого режима останавливаются все запущенные программы и производится перезагрузка.
Теперь, когда мы мегамодные пацаны, и знаем про уровни выполнения, попробуем добавить наш snmpd в автозагрузку системы:

# chkconfig  --level 35 snmpd on

т.е. включили с уровнями 3 и 5
Проверим:

# chkconfig --list snmpd
snmpd           0:выкл  1:выкл  2:выкл  3:вкл   4:выкл  5:вкл   6:выкл

действительно 3 и 5 уровень включен)))
Теперь добавим его в автозагрузку:

# chkconfig --add snmpd

Чтобы удалить из автозагрузки:

# chkconfig  --del  snmpd

Выключить на всех уровнях:

# chkconfig  snmpd off

Включить на всех уровнях:

# chkconfig  snmpd on