Mivel az eddigiekben több program több verziójának telepítését mutattam be, ezeket nem tartottam volna jónak egyszerre automatikusan indítani a rendszer betöltésével. Így az ehhez szükséges lépéseket kihagytam. Mégis jó volna egy megoldás, amivel rövidebb utasítással és könnyebben lehetne elindítani az FPM-et, Apache HTTPD-t és MySQL-t. Bár így is kézzel kell indítani és leállítani őket, sokkal egyszerűbben. Ezt fogom most bemutatni.
Csomagfrissítés
Eddig csak annyit írtam a parancssori munkáról és a csomagtelepítésről, amennyit feltétlenül szükséges volt a fejezetek megértéséhez. Így a Debian frissítése is elmaradt, bár említettem, hogyan kellene. Itt az idő, futtassuk a következő utasításokat root felhasználóként!
apt-get upgrade
Bár ez nem előfeltétele a fejezetben írtak sikerességének, de itt az ideje, hogy többet törődjünk a rendszerrel is.
Indító szkript készítés
A szkripteket a /opt/wtkmgr mappába tesszük. Ehhez el kell készíteni.
A következő fájlokat fogja tartalmazni a mappa:
- apache: Az Apache szerverek kezelése
- php-fpm: A PHP FPM-ek kezelése
- mysql: A MySQL-ek kezelése
- wtkmgr: Közös indítószkript
A szkripteket egyben is le lehet tölteni egy tar fájlként. A letöltés és kitömörítés és jogosultság beállítás a következő:
wget https://it-sziget.hu/sites/default/files/wtkmgr-0.1.tar
tar xf wtkmgr-0.1.tar
chmod -R 0700 wtkmgr
Apache
Az "apache" nevű szkript tartalma:
apdir="/opt/apache/"
apbin="/bin/apachectl"
ptrn="$apdir%s$apbin"
cmd="start"
ver=`ls $apdir`
# Ha van első argumentum,
# legyen az Apache utasítása
# Majd töröljük az argumentumok közül
if [ ! -z "$1" ]; then
cmd="$1"
shift
fi
# Ha még minidg van argumentum,
# legyen az Apache könyvtára ( verziója )
if [ ! -z "$1" ]; then
ver="$1"
fi
# Ha létezik a megadott apachectl szkript
# az adott verzióhoz,
# futtatjuk a megadott utasítással.
for i in $ver; do
f=`printf "$ptrn" $i`
if [ -f "$f" ]; then
echo "CMD: $f $cmd"
"$f" $cmd
fi
done
Első paramétere a start, stop, stb. utasítások. Második a verzió vagy verziók idézőjelben.
/opt/wtkmgr/apache stop 2.2
PHP FPM
A php-fpm szkript tartalma:
pdir="/opt/php/"
pbin="/sbin/php-fpmd"
pbinalt="/sbin/php-fpm"
ptrn="$pdir%s$pbin"
ptrnalt="$pdir%s$pbinalt"
cmd="start"
ver=`ls $pdir`
# Ha van első argumentum,
# legyen az fpm utasítása.
# Majd töröljük az argumentumok közül.
if [ ! -z "$1" ]; then
cmd="$1"
shift
fi
# Ha még mindig van argumentum,
# legyen a PHP könyvtára ( verziója ).
if [ ! -z "$1" ]; then
ver="$1"
fi
# Ha létezik a megadott php-fpmd szkript
# az adott verzióhoz,
# futtatjuk a megadott utasítással.
# Ha létezik a php-fpm, akkor azt.
# 5.2.17-es PHP-nek eltérő nevű szkriptje van.
for i in $ver; do
f=`printf "$ptrn" $i`
falt=`printf "$ptrnalt" $i`
if [ -f "$f" ]; then
echo "CMD: $f $cmd"
"$f" $cmd
elif [ -f "$falt" ]; then
echo "CMD: $falt $cmd"
"$falt" $cmd
fi
done
Első paramétere a start, stop, stb. utasítások. Második a verzió vagy verziók idézőjelben.
/opt/wtkmgr/php-fpm stop 5.3.24
MySQL
A MySQL-eket indító szkript tartalma:
mydir="/opt/mysql/"
mybin="/bin/mysql.server"
ptrn="$mydir%s$mybin"
cmd="start"
ver=`ls $mydir`
# Ha van első argumentum
# legyen a MySQL utasítása.
# Majd töröljük az argumentumok közül.
if [ ! -z "$1" ]; then
cmd="$1"
shift
fi
# Ha még mindig van argumentum,
# legyen a MySQL könyvtára ( verziója ).
if [ ! -z "$1" ]; then
ver="$1"
fi
# Ha létezik a megadott mysql.server szkript
# az adott verzióhoz,
# futtatjuk a megadott utasítással.
for i in $ver; do
f=`printf "$ptrn" $i`
if [ -f "$f" ]; then
echo "CMD: $f $cmd"
"$f" $cmd
fi
done
Első paramétere a start, stop, stb. utasítások. Második a verzió vagy verziók idézőjelben.
/opt/wtkmgr/mysql stop 5.1
Közös indító
Majd pedig egy olyan szkript lesz, ami mindegyik program mindegyik verzióját képes indítani egyszerre vagy tetszőleges verziókat. Ez a wtkmgr, aminek a tartalma:
f=`readlink -f "$0"`
d=`dirname "$f"`
ptrn="$d/%s"
aver=
pver=
mver=
acmd=
pcmd=
mcmd=
cmd="start"
usage() {
cat <<'EOF'
Használat: $0 [-h] [-a Apache verzió] [-p PHP verzió] [-m MySQL verzió] [-c start|reload|restart|stop]
Példák:
Apache 2.2 indítása:
$0 -a 2.2 -c start
Apache 2.2 sé 2.4 indítása
$0 -a 2.2 -a 2.4 -c start
vagy
$0 -a "2.2 2.4" -c start
PHP 5.2.17, FPM indítása
$0 -p 5.2.17 -c start
vagy
MySQL 5.6 indítása
$0 -m 5.6 -c start
A "-c érték" elhagyható. Akkor az érték automatikusan "start".
A verziókhoz írható kötőjel. Akkor az összes elérhető verzióra
vonatkozik az utasítás a "-c" után. A következő parancs minden
program minden verzióját elindítja.
$0 -a - -p - -m -
EOF
}
if [ $# -eq 0 ]; then
usage
fi
# betűjeles argumentumok értékeinek kezelése
while getopts "a:p:m:c:h" OPT; do
arg="$OPTARG"
case $OPT in
a)
acmd=`printf "$ptrn" apache`
if [ "$arg" != "-" ]; then
aver="$aver $arg"
fi
;;
p)
pcmd=`printf "$ptrn" php-fpm`
if [ "$arg" != "-" ]; then
pver="$pver $arg"
fi
;;
m)
mcmd=`printf "$ptrn" mysql`
if [ "$arg" != "-" ]; then
mver="$mver $arg"
fi
;;
c)
cmd="$arg"
;;
h)
usage
;;
esac
done
# A kért programok futtatása
if [ ! -z "$acmd" ]; then
"$acmd" "$cmd" "$aver"
fi
if [ ! -z "$pcmd" ]; then
"$pcmd" "$cmd" "$pver"
fi
if [ ! -z "$mcmd" ]; then
"$mcmd" "$cmd" "$mver"
fi
Ehhez a szkripthez már saját súgó is tartozik. Betűkkel jelölt argumentumokat fogad el, ahol az "a" az Apache, a "p" a PHP FPM és a "m" a MySQL. A "h" pedig a súgó.
Súgó:
Minden program indítása:
Apache 2.4 indítása PHP 5.3.24 FPM-mel MySQL nélkül.
A további példák a súgóban olvashatók.
PATH változó beállítása
Hogy még a /opt/wtkmgr -t is elhagyhassuk a szkript futtatásakor, a "/etc/bash.bashrc" fájl végére tegyük a következő sort:
A legközelebbi bejelentkezés után már elérhető lesz a wtkmgr útvonal nélkül is.
Jogosultság beállítása
Minden szkriptnek kell futtatási jog.
Ötlet további könnyítésre
A közös indító szkriptet felhasználva akár alkalmazásonként is lehet írni új indító szkriptet. Előre tudva, hogy a p5324.a22.vm1 domainnek PHP 5.3.24 -re, Apache 2.2 -re és MySQL 5.1 -re van szüksége, egy, a domain nevével mentett szkript tartalma lehetne a következő:
A végén levő $@ miatt mögé kerülnek a további paraméterek. Tehát ennyi volna a domainhez szükséges összetevők indítása.
Viszont vigyázni kellene, hogy a leállításkor nem venné figyelembe, hogy a MySQL-t esetleg egy másik verzió még használja. Haladók készíthetnek a domainekhez valamilyen konfigurációs fájlt, ami tartalmazza a függőségeit. Illetve valamilyen módon számon kellene tartani a futó domaineket (alkalmazásokat) és csak azokat az összetevőket leállítani, amiket másik alkalmazás épp nem használ.
Összefoglalás
Most azért már egyszerűbb az élet a szerverrel. Ennél persze sokkal profibb kezelő szkripteket is lehetne írni. Ahogy a verziószám is sejteti a fájl végén, tervezem is a továbbfejlesztését.
Ezzel a fejezettel elérkeztünk ahhoz a fázishoz, ahol parancssorból használva már teljes értékű tesztkörnyezetünk lehetne. Vannak viszont lehetőségek a távoli munka egyszerűsítésére is. És egyáltalán lehetővé tételére. Nem sokára erről is írni fogok.
Bár nagyon pici a változtatás a gépen, én mégis elmentem a virtuális gépet "wtk-vm1-v10-wtkmgr" néven, csak mert még túl sok helyem van a merevlemezen. És ne feledjük, volt egy rendszerfrissítés is.
Hozzászólások
HIBA:
HIBA:
Első paramétere a start, stop, stb. utasítások. Második a verzió vagy verziók idézőjelben.
/opt/wtkmgr/apache "2.2 2.4" start
/opt/wtkmgr/apache 2.2 stop
a leírás és az utasítás ellent mond egymásnak!
a leírás szerinti működik:
/opt/wtkmgr/apache start "2.2 2.4"
/opt/wtkmgr/apache stop 2.2
Köszönöm! Javítottam.
Köszönöm! Javítottam.