To jest stara wersja strony!
6.1. Informacje podstawowe
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.
6.1.1. Wymagania
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.
6.1.2. Instalacja
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 UI
Zatem 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/include
Następnie kompilacja i instalacja (umieszczenie demona w katalogu określonym zmienną –prefix):
# make && make install
Skompilowane 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.
6.1.3. Konfiguracja
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 licencyjne
Opcje 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 | Opis | Przykład |
---|---|---|
Nazwa | Nazwa instancji unikalna w obrębie jednego hosta. | system |
Priorytet | Liczba określająca priorytet, czyli kolejność wykonania instancji. Instancja o najniższym numerze zostanie wykonana jako pierwsza. | 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”. | /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.
6.1.4. Uruchomienie
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.