Firebird 2.5 Classic szerver Linuxon és egyéb finomságok
Szakmai szekció
Ismét feladat keletkezett egy ügyfelemnél, és mivel ismét sokat küzdöttem vele, ezért megosztom tapasztalataimat az ügyben, hogy másoknak ne kelljen végigküzdeni.
A feladat:
A szerveren:
- Firebird adatbáziskezelő telepítése firebird2.5-classic.
- Apache webserver
- PHP - firebird eléréssel
- Ez már csak az én továbblépésem: admin felület apache-on keresztül. De ez nem jött össze, lásd később.
Kliens oldalon:
- IBExpert Borland ingyenes adminisztrátor program elérésnek biztosítása úgy, hogy egy demo adatbázist lásson.
- Böngészőből elérhető webserver, ami a meglévő firebird adatbázisokat képes látni.
- Borland Delphiben készült rendszer futtatása Firebird adatbáziskapcsolat alatt.
A környezet - ahogy mi szoktuk - debian wheezy.
Kis bevezető nyafogás
A firebird installálása szép feladat, főleg olyan ember számára, aki a MySQL-hez van szokva. A dokumentáció bőséges és nagyon sokszor írja le ugyanazt, azonban értelmezési problémák vannak bőven. Biztos mindenki ismeri azokat a nagyon egyszerű kérdéseket, hogy tessék mondani a Rootdirectory direktívának ugyan hova kéne mutatnia? A leírásokban hivatkoznak rá és megjelenik az Installdir kifejezés is, aztán olyanok is, hogy az adatbázisok majd ezen könyvtár alkönyvtárai lesznek, ami természetesen nem igaz. Lehet úgy is, de józan ember nem tesz ilyet.
Szóval a nehézségeim abból adódtak, hogy megint sikerült olyan leírásokkal telerakni a netet és ez főleg a firebird gondja, hogy igazán nagyon jó, de sokszor hasznavehetetlen.
Évekkel ezelőtt volt szerencsém a Borland Delphi termékeihez, és ahogy sokan mások én is elszörnyülködtem az adatbázis kapcsolatok számához kötött liszenszdíjaktól és gyorsan kerestem olyan kiegészítőket, amelyek képesek voltak ingyenes megoldásokat támogatni. Azt gondoltam, hogy a fejlesztőrendszert kifizettem, a fejlesztést én hajtom végre, akkor a Borland ugyan miért akarja megkaszálni az ügyfeleimet, növelve az én áraimat, csökkentve a piaci lehetőségeimet? Így találtam meg még akkor a Zeos-t, ami MySQL adatbázis-kezelőhöz adott elérési lehetőséget Delphi alól. Azt hogy a MySQL-hez mit adnak gondolom a hasonszőrűeknek nem kell magyaráznom, nem csak a phpmyadmint, hanem mondjuk Windows és Linux alá igen fejlett adminisztrátori eszközöket, iszonyatos mennyiségű példát..., nem sorolom.
Valahogy ezt vártam a Firebird-től is elsősorban amiatt, mert akik használják, az egekbe dicsérik. Most már azt gondolom, hogy inkább arról van szó, hogy csak azt ismerik. A Borland a firebird-öt támogatja, ezért aki Delphiben elmerült, az követi ezt az utat. Felhívom szíves figyelmüket azonban, hogy van más út is.
És tegyünk hozzá valami nagyon fontosat: Egy rendszertől azért nem csak azt kell elvárni, hogy a saját területén (itt az adatbázis-kezelést értem) jól teljesítsen, hanem mondjuk azt is, hogy az installációhoz kapcsolódó tartalmakat ne olyan felületesen taglalja, hogy két nap netezés legyen szükséges ahhoz, hogy a leírt félinformációk alapján valahogy mégiscsak össze lehessen állítani. És itt gondolok olyanokra is, hogy a firebird saját leírásai nagyon sokszor elavultak. Ahogy én látom alapvetően a Windows felé fordulás az oka ezeknek a gyerekbetegségeknek. Az MS-nél találkozunk rengeteg adekvát válasszal, amivel nem lehet kezdeni semmit.
A Borland a másik gyöngyszem. A felhasználó itt azt kérte, hogy az Borland IBExpert legyen az adminisztrátori felület. Legyen. Letöltöttem. Hogy ugyan miért kell regisztrálni és aktiválni egy ingyenes rendszert, mert egyébként nem működik, nem értem, de oké. Gondolom a sok e-mail cím gyűjtés miatt, vagy talán önigazolásként, hogy lám, mennyien használják. Ezzel kapcsolatosan csak megjegyzem, hogy a jelen feladat megoldásához összesen majd háromszor kell letölteni és "aktiválni" a programot különböző gépekre, mire majd egyszer tényleg fog működni.
Csapjunk bele!
Az alaprendszer telepítését követően telepítsük a firebird2.5-classicot:
apt-get install firebird2.5-classic
A Firebird-nél a SYSDBA nevű felhasználó a főnök, az alap jelszó a masterkey
A következő paranccsal azonban ezt is módosíthatjuk:
dpkg-reconfigure firebird2.5-classic
Ekkor megkérdezi, hogy rendszerinduláskor elindítsa-e a firebird-öt, mondjunk igen, de ettől még nem fog történni semmi, lásd később, majd megkérdezi a SYSDBA jelszavát, amit nagyon okosan a /etc/firebird/2.5/SYSDBA.password fileban szövegesen tárol.
Ez követően a /etc/firebird/2.5/firebird.conf
A dolgunk itt elsősorban az, hogy a felajánlott default értékek elől a #-ot kivegyük és pár módosítást hajtsunk végre, röviden ezek:
A Rootdirectory nyugodtan maradhat # előtéttel.
A DatabaseAccess direktíva viszont fontos!
A Full opció végeredményben arról szól, hogy a teljes filerendszert elérhetővé tesszük.
A Restrict - korlátozó opció mellett megadhatjuk azokat a kijelölt könyvtárakat, ahol az adatbázisok lehetnek. Ezt javaslom.
A TempDirectories = /tmp - a szokásos hely
A RemoteServiceName = gds_db ez azért fontos, mert szolgáltatásnévként is lekezeli a inetd, de erről majd később
A RemoteServicePort = 3050 meg a hallgatózási portot
A RemoteBindAddress. Ide kéne megadni annak az interface-nek az IP címét, amin várja majd kedves Firebird a hívásokat, nos Linux alatt az inetd indítja a firebird-öt, tehát nyugodtan hagyhatjuk a #--ot.
Figyelem!
Két szekció jön majd, az egyik kifejezetten Windowsra szól. Tehát ott ne tegyünk semmit, úgy sem történik semmi. A Linux-os egy direktíva pedig értelemszerű.
Ezzel a firebird.conf-nak vége.
Érdemes még belepillantani a /etc/init.d/firebird/2.5/aliases.conf file-ba!
Valahogy így néz ki:
# ------------------------------
# List of known database aliases
# ------------------------------
#
# Example Database:
#
employee.fdb = /usr/share/doc/firebird2.5-common-doc/examples/empbuild/employee.fdb
employee = /usr/share/doc/firebird2.5-common-doc/examples/empbuild/employee.fdb
antal = /server/firebird/antal.fdb
#
# Live Databases:
#
Jómagam kísérletezés kedvéért letöltöttem még a példa adatbázisokat is, de ez nem szükséges. Ami fontosabb az
antal = /server/firebird/antal.fdb sor, amit már én hoztam létre. Ez az alias névhez, hozzárendeli az elérési útvonalat. Elvileg - azért mondom, hogy elvileg, mert nem minden admin felületből működik - ez arra jó, hogy ne kelljen a teljes elérési úttal hivatkozni az adatbázisra.
Ahogy már a szövegből kiderült, a firebird-öt nem lehet daemonként indítani a /etc/init.d/firebird2.5-classic start-tal. Illetve lehet, de nem fog futni, az init script csak lefuttat egy ellenőrző scriptet és kész. Nem indítja el a firebird-öt!!! A firebird-öt az inetd indítja.
Ehhez az /etc/xinet.d/firebird25 file-ba kell betekinteni:
Ime:
service gds_db
{
disable = no
flags = REUSE NODELAY
socket_type = stream
wait = no
user = firebird
# These lines cause problems with Windows XP SP2 clients
# using default firewall configuration (SF#1065511)
#log_on_success+= USERID
#log_on_failure+= USERID
server = /usr/sbin/fb_inet_server
}
Eredetileg a disable = yes van. Kéretik módosítani.
aztán:
update-inetd --enable gds_db