Napisany w języku C program ma ułatwiać zarządzanie usługami. Sam demon odpowiada za uruchamianie odpowiednich modułów na żądanie użytkownika. Moduły natomiast, służą do tworzenia plików konfiguracyjnych na podstawie danych z bazy LMS'a oraz restartowania odpowiednich usług na serwerze. Spełniają także inne funkcje np. zbieranie statystyk, badanie aktywności hostów, naliczanie opłat, powiadamianie o zaległościach.
Oto lista rzeczy, które lmsd potrzebuje już na etapie kompilacji:
interfejs użytkownika LMS-UI
libmysqlclient (tj. pełnej instalacji MySQL'a lub odpowiedniego pakietu) lub libpq w przypadku bazy PostgreSQL
libdl (to w każdej dzisiejszej dystrybucji jest)
kompilator języka C (testowany na gcc-2.95.x i nowszych)
moduł ggnotify wymaga biblioteki libgadu i jej plików nagłówkowych
moduł parser wymaga pakietu bison w wersji 1.875 lub nowszej oraz pakietu flex
moduły ewx-* wymagają biblioteki net-snmp i jej plików nagłówkowych.
Przed kompilacją należy przy pomocy skryptu ./configure ustalić opcje przedstawione na poniższym listingu (w nawiasach podano wartości domyślne opcji):
--help pomoc --enable-debug0 logowanie zapytań SQL (wyłączone) --enable-debug1 logowanie zdarzeń (wyłączone) --with-pgsql gdy korzystasz z bazy PostgreSQL (wyłączone) --with-mysql gdy korzystasz z bazy MySQL (włączone) --prefix=PREFIX docelowy katalog instalacyjny demona i modułów (/usr/local) --lmsbindir=DIR docelowa lokalizacja binarki lmsd (PREFIX/lms/bin) --lmslibdir=DIR docelowa lokalizacja modułów lmsd (PREFIX/lms/lib) --libdir=DIR lokalizacja bibliotek bazy danych (/usr/lib) --incdir=DIR lokalizacja plików nagłówkowych bazy danych (/usr/include) --inifile=FILE plik konfiguracyjny - wyłącza konfigurację przez UIZatem wymagane jest określenie bazy z jakiej będziemy korzystać (-with-mysql lub -with-pgsql) oraz położenia bibliotek dostarczanych wraz z bazą (--incdir, --libdir). Możliwe jest zmuszenie demona do korzystania z plików konfiguracyjnych zamiast bazy danych. Nie jest możliwe używanie obu sposobów przechowywania konfiguracji, dlatego należy o tym zdecydować przed kompilacją.
# ./configure --with-pgsql --libdir=/usr/local/pgsql/lib --incdir=/usr/local/pgsql/includeNastępnie kompilacja i instalacja (umieszczenie demona w katalogu określonym zmienną --prefix):
# make && make installSkompilowane moduły (pliki z rozszerzeniem .so), znajdujące się w katalogu modules/nazwa_modułu zostają umieszczone w katalogu PREFIX/lms/lib, a główny program (lmsd) w katalogu PREFIX/lms/bin.
Całą konfigurację demona i modułów przeprowadza się przy pomocy LMS-UI w menu Konfiguracja -> Demon. Konfigurację modułów omówiono w osobnych rozdziałach ich dotyczących. Podstawowe parametry pracy demona i dane do połączenia z bazą danych podaje się jako opcje linii komend, zgodnie z poniższym listingiem:
--dbhost -h host[:port] host na którym zainstalowana jest baza danych (domyślnie: 'localhost') --dbname -d nazwa_bazy nazwa bazy danych (domyślnie: 'lms') --dbuser -u użytkownik nazwa użytkownika bazy danych (domyślnie: 'lms') --dbpass -p hasło hasło do bazy danych (domyślnie: puste) --hostname -H nazwa_hosta host, na którym działa demon. Domyślnie przyjmowana jest nazwa zwracana przez komendę hostname, ale można ją nadpisać. Nazwa ta musi zgadzać się z nazwą hosta podaną w konfiguracji hostów --pidfile -P pid_file pidfile where daemon write pid (default: none) --ssl -s wymusza bezpieczne połączenie z bazą danych (domyślnie: wyłączone) --command -c polecenie polecenie powłoki do wykonania przed każdym połączeniem z bazą tzn. co minutę (domyślnie: puste) --instance -i "instancja[ ...]" lista instancji (modułów) do przeładowania. Wszystkie pozostałe zostaną pominięte --reload -q wykonuje przeładowanie i kończy pracę --reload-all -r wykonuje przeładowanie wszystkich instancji (także tych, które mają zdefiniowany crontab) i kończy pracę --foreground -f działa na pierwszym planie (nie forkuje się) --version -v wyświetla wersję i prawa licencyjneOpcje dostępu do bazy są także odczytywane ze zmiennych powłoki: LMSDBPASS, LMSDBNAME, LMSDBUSER, LMSDBHOST, LMSDBPORT.
Lista instancji składa się z nazw instancji oddzielonych spacją. W nazwach instancji zawierających spacje należy zamienić je na znaki '\s', np. lmsd -i "moja\sinstancja". |
Konfiguracja demona jest podzielona na hosty (umożliwiając osobne konfigurowanie i przeładowywanie demonów zainstalowanych na różnych komputerach/routerach) oraz sekcje konfiguracyjne nazwane instancjami.
Instancja oprócz parametrów konfiguracyjnych wybranego modułu zawiera opcje podstawowe, takie jak:
Nazwa
Nazwa instancji unikalna w obrębie jednego hosta.
Przykład: system
Priorytet
Liczba określająca priorytet, czyli kolejność wykonania instancji. Instancja o najniższym numerze zostanie wykonana jako pierwsza.
Przykład: 10
Moduł
Nazwa pliku modułu (z rozszerzeniem lub bez). Jeśli nie podano ścieżki demon będzie szukał modułu w katalogu PREFIX/lms/lib, do którego trafiają moduły podczas "make install".
Przykład: /usr/lib/system.so
Crontab
Czas wykonania modułu określany w sposób podobny do używanego w programie crontab. Wszystkie dane muszą być numeryczne. Podany przykład spowoduje wykonywanie wybranej instancji co 5 minut, w godzinach od 8 do 18. Gdy opcja ta jest pusta instancja zostanie wykonana wyłącznie podczas przeładowania. Domyślnie: pusta.
Przykład: */5 8-18 * * *
Jakakolwiek zmiana w konfiguracji nie wymaga restartu demona.
Program domyślnie działa w trybie demona. Wtedy przeładowanie konfiguracji i usług jest dokonywane na żądanie, przy użyciu menu 'Przeładowanie' w LMS-UI. Sprawdzenie żądania przeładowania oraz odczyt konfiguracji (w szczególności listy instancji i ich konfiguracji) następuje co minutę. Gdy demon wykryje żądanie wykonania reloadu, wywoła wszystkie włączone instancje. Instancje z podaną opcją 'crontab' zostaną wykonane o określonym tą opcją czasie.
Innym sposobem uruchomienia jest jednorazowy reload z wykorzystaniem opcji -q. Ten sposób najczęściej używany jest w celach testowych, a w połączeniu z opcją -i pozwala na wykonanie dowolnych instancji z pominięciem pozostałych zapisanych w bazie oraz bez względu na wartość opcji 'crontab' tych instancji.
Poprzedni | Spis treści | Następny |
Przykład zastosowania lms-mgc | Moduły |