51.5.5. Spouštění aplikace na serveru

FIXME: vyřešit problém startování druby serveru a popsat řešení v četně skriptů

Tedy první část úkolu je upravit server aby zapisoval do souboru své číslo procesu. Toto lze ve zkratce zajistit příkazy

require 'English'
pid_file = "/var/run/webapp/app.pid"    1
...
File.open(pid_file, 'w') do |file|
    file << $PROCESS_ID                 2
end
...
File.delete(pid_file)                   3
1

Nastavíme si cestu k souboru do nějž budeme ukládat PID.

2

Tady zapíšeme číslo procesu.

3

Na konci po sobě uklidíme. Dojde-li k vážné havárii programu tak se tento úklid pravděpodobně nevykoná, na to je třeba mít na paměti.

Jádro spouštěcího skriptu

#!/bin/sh
APPDIR=opt/webapp/ldapadm       1
SERVER=./ldapadm_srv.rb
PIDFILE=/ver/run/webapp/ldapadm.pid

function start_server {         2
    (
        cd $APPDIR
        $SERVER --pidfile $PIDFILE &
    )
}

if [ -r $PIDFILE ]; then        3
    if ! ps -p $(cat $PIDFILE) >/dev/null; then 4
        start_server            5
    fi
else
    start_server                6
fi
1

Všechny důležité parametry definuji na začátku jako konstanty. Usnadní to modifikaci skriptu.

2

Protože server startuju na dvou místech v kódu, udělal jsem si pro jeho start funkci.

3

Testuji, existuje-li soubor s číslem procesu.

4

Ověříme si je-li proces s číslem uvedeným v ldapadm.pid mezi bežícími proces.

5

Nastartujeme server.

6

Nastartujeme server.

Licence Creative Commons
Tento dokument Ruby, jehož autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .