Narzędzia użytkownika

Narzędzia witryny


lms_daemon
no way to compare when less than two revisions

Różnice

Różnice między wybraną wersją a wersją aktualną.


Poprzednia wersja
Nowa wersja
lms_daemon [2013/01/14 20:44] ceho
Linia 1: Linia 1:
 +====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): 
 +<code>
 +  --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
 +</code>
 +
 +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ą. 
 +
 +<code>
 +# ./configure --with-pgsql --libdir=/usr/local/pgsql/lib --incdir=/usr/local/pgsql/include
 +</code>
 +
 +Następnie kompilacja i instalacja (umieszczenie demona w katalogu określonym zmienną --prefix): 
 +
 +<code>
 +# make && make install
 +</code>
 +
 +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:
 +
 +<code>
 +--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
 +</code>
 +
 +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.
 +
 +====6.2. Moduły====
 +
 +^Nazwa  ^ Opis ^
 +|[[system]]           |Wywoływanie poleceń powłoki|
 +|[[parser]]           |Parser uniwersalnych skryptów T-Script|
 +|[[dhcp]]             |Konfiguracja serwera dhcpd|
 +|[[cutoff]]           |Odłączanie klientów z zaległościami w opłatach|
 +|[[dns]]              |Konfiguracja serwera dns|
 +|[[ethers]]           |Tworzenie pliku /etc/ethers|
 +|[[hostfile]]         |Moduł uniwersalny (np. tworzenie reguł iptables)|
 +|[[notify]]           |Powiadamianie klientów o zaległościach w opłatach pocztą elektroniczną|
 +|[[ggnotify]]         |Powiadamianie klientów o zaległościach w opłatach przez gadu-gadu|
 +|[[payments]]         |Naliczanie opłat abonamentowych|
 +|[[oident]]           |Konfiguracja oident|
 +|[[tc]]               |Tworzenie reguł TC|
 +|[[tc-new]]           |Tworzenie reguł TC (powiązania komputerów z taryfami)|
 +|[[traffic]]          |Statystyki wykorzystania łącza|
 +|[[pinger]]           |Badanie aktywności klientów|
 +|[[ewx-pt]]           |Konfiguracja EtherWerX PPPoE Terminatora|
 +|[[ewx-stm]]          |Konfiguracja EtherWerX Standalone Traffic Managera|
 +|[[ewx-stm-channels]] |Konfiguracja EtherWerX Standalone Traffic Managera (ze rozszerzoną obsługą kanałów)|
 +
 +
 +
  
lms_daemon.txt · ostatnio zmienione: 2013/01/15 00:00 (edycja zewnętrzna)