------------------------------------------------------------------------------
                         LAN Managment System 1.0-pre10
------------------------------------------------------------------------------
                         Krtki podrcznik instalacji
------------------------------------------------------------------------------

Witaj.  Zanim  zaczniesz  instalowa  LMS w swojej sieci, powi prosz kilka
minut  na  przeczytanie tego tekstu. Zminimalizuje to do minimum ble porodowe
jakie  moesz  odczuwa podczas instalacji LMS. Tak wic zaparz sobie kawy lub
signij  bo  butelk  ze swoim ulubionym napojem, usid wygodnie i rozpocznij
lektur.

0. Intro - czyli co bdzie Ci potrzebne.

Po pierwsze: serwer WWW.

Generalnie,   LMS   wymaga   PHP,  wic  jakikolwiek  serwer  WWW  obsugujcy
interpreter  PHP.  Oczywicie  preferowany to Apache 1.3.26 (czyli tymczasowo
najnowszy), ale na starszych nie powinno by najmniejszych problemw.

Po drugie: interpreter PHP.

Tutaj  wymagania s troch wysze. Wielce prawdopodobne jest i LMS pjdzie na
kadym  PHP  4.2.x  ktre  bdzie  miao  obsug sesji, wyrae regularnych i
mysql'a.  W praktyce nawet nie chciao mi si bawi w sprawdzanie ze starszymi
interpreterami   ni  PHP-4.2.3.  Prawdopodobnie  po  zrobieniu  kilku  maych
przerbek  LMS  pracowaby  take z PHP-4.1.x, ale wybaczcie, ja wystarczajco
duo czasu powiciem na to by LMS wogle powsta. Reszta naley do was :)

Po trzecie: serwer MySQL.

Aua. Tutaj to ja ju wogle zielony jestem. Pisaem cao korzystajc z MySQL
3.23.53 i nie mam pojcia ktra wersja jest wymagana.

Po czwarte: perl i moduy do niego.

- perl waciwy i jego podstawowe moduy (POSIX, GetOpt::Long);
- Net::SMTP;
- Config::IniFiles;
- DBI;
- DBD-mysql (dla mysql'a);
- DBD-pg (dls postgres'a);

I tyle by byo na temat wymaga samego LMS'a. Na koniec co do dystrybucji -
LMS zosta odpalony na:
- PLD 1.0 Ra
- Debianie 3.0 Woody
- Windowsie z najnowszym EasyPHP (tak, jestem masochista :>)
- Slackware 8.1 (2.4.20), Apache 1.3.27, PHP 4.2.3, MySQL 2.35.53

I  prawdopodobnie  pjdzie  na  czymkolwiek  (wcznie z lodwk) o ile to co
bdzie  potrafio  zgry  MySQL'a  i  serwer  WWW z PHP. Bd take wdziczny
kademu o przesanie info o konfiguracji o ile uda mu si LMS'a odpali.

1. Possijmy co.

Nie,  to  nie  porno  film. eby LMS'a chcie trzeba go mie. A e {$chcie eq
$mc}  wic  cignijmy  LMS'a. Jako e w momencie pisania tego tekstu LMS nie
zosta jeszcze ukoczony, opisz jak pobra wersj z CVS'a.

Przez WWW, korzystajc z interfejsu viewCVS mona pobra LMS'a pod adresem:

http://cvs.rulez.pl/viewcvs.cgi/lms/lms.tar.gz?tarball=1

Uywajc CVS'a, wykona z shella komend:

cvs -d :pserver:cvs@cvs.rulez.pl:/home/cvsroot get lms

Po cigniciu (i ewentualnym rozpakowaniu) naley LMS'a przenie do katalogu
docelowego, np. do /var/www/htdocs/ ewentualnie do /home/httpd/html. Czynnoci
tej  nie  bd  opisywa  gdy  jeeli  nie potrafisz wykona takiej bzdury to
wogle sobie daruj.

2. Setting UP :)

Oki, jestemy w katalogu LMS'a i teraz przydaoby si go przygotowa do pracy.
Zacznijmy  od  docignicia biblioteki Smarty i umieszczenia jej w odpowiednim
miejscu, tj w katalogu lib. Ta czynno wyglda mniej wicej tak:

cd lib
wget http://smarty.php.net/distributions/Smarty-2.5.0.tar.gz
tar -xzf Smarty-2.5.0.tar.gz
mv Smarty-2.5.0/libs Smarty

Do tego jeszcze ADOdb:

wget http://phplens.com/lens/dl/adodb340.tgz
tar -xzf adodb340.tgz

W Debianie unstable wystarczy:
apt-get install libphp-adodb

Pozostaje  nam stworzy w katalogu z LMS podkatalogi templates_c i backups
(o ile go nie ma, bo bardzo niewykluczone e pewien pacan pakujcy LMS'a zapomni 
go doda) oraz zmieni jego waciciela na uytkownika z ktrego uruchominy jest
serwer www (np. http albo apache).

***UWAGA***UWAGA***UWAGA***UWAGA***UWAGA***UWAGA***UWAGA***UWAGA***UWAGA***

PAMITAJ E JEELI ZOSTAWISZ PODKATALOG BACKUPS W PODKATALOGU LMS'a, DO TWOICH
BACKUPW BDZIE MONA SI DOBRA BEZ ADNEJ AUTORYZACJI!!!

Najlepiej ustawi katalog z backupami np. na /var/backup/lms lub co, gdzie
serwer WWW nie ma dostpu!!!

***UWAGA***UWAGA***UWAGA***UWAGA***UWAGA***UWAGA***UWAGA***UWAGA***UWAGA***

Voila. Teraz przygotujmy  serwer  MySQL. Konieczne to jest jeeli uruchamiamy
LMS po raz PIERWSZY. Jeeli uaktualniamy LMS, odpowiednie adnotacje co naley
zrobi z baz danych s w pliku ChangeLog. Tak wic wejd  do  katalogu w
ktrym masz LMS'a i uruchom shell mysql'a:

mysql -u[tutaj wpisz uytkownika z penym dostpem do bazy] -p
Enter password:[podaj haso]
mysql> create database lms;
mysql> grant usage on lms.* to lms@localhost;
mysql> grant select,insert,update,delete,create on lms.* to lms@localhost
       identified by 'haslo';
mysql> flush privileges;
mysql> use lms;
mysql> source doc/lms.mysql;

Po takim zabiegu mona si ju zalogowa do LMS uywajc konta 'admin' i
pustego hasa. Oczywicie po pierwszym zalogowaniu naley NATYCHMIAST zmieni
sobie haso na jakie normalne.

I to (narazie) na tyle.

3. Post instalacja.

Zamy  e  chcemy  prost  sie, prywatn, na kernelu 2.2, na jednym
serwerze  gdzie jest wszystko i tak w miar bez komplikacji. Mamy ju
uruchomiony interface, wszystko chodzi i wogle cacy, ale teraz kwestia
jak  to  zgra  z  serwerem. Oki. Niezbdne skrypty perlowe s w katalogu bin
tarbala z LMS. Kolejno te skrypty to:

lms-cutoff	- skrypcik, ktry zmienia status komputerw 
lms-eachmonth	- skrypcik, ktry obcia kadego uytkownika okrelon
		  wedug taryfy sum.
lms-mgc		- magiczny generator czegokolwiek - czyli co, co potrafi
		  nam skonfigurowa cokolwiek co chcemy.
lms-notify	- skrypt wysyajcy upomnienia do uyszkodnikw, e zalegaj z
		  opatami.

Wszystkie skrypty poza lms-mgc (z racji rnego dziaania parsera plikw ini
PHP i perla) korzystaj z /etc/lms/lms.ini. lms-mgc czyta /etc/lms/lms-mgc.ini.

Skopiujmy te skrypty do /usr/sbin aby byy atwo dostpne i zacznijmy je
instalowa.

Aby co miesic z uytkownikw bya zdzierana jaka kasa, naley doda
lms-eachmonth do crona. Przykadowa linijka wyglda tak:

0 0 6 * *       /usr/sbin/lms-eachmonth

lub

@monthly	/usr/sbin/lms-eachmonth

(nie dziaa z kadym cronem, sprawd w dokumentacji swojego crona czy
obsuguje t opcj)

Pierwszy zapis spowoduje e kadego szstego dnia miesica, o godzinie 0:00,
ze  kady uytkownik  zostanie obciony opat  abonamentow w wysokoci
przewidzianej przez taryf w jakiej si znajduje, natomiast drugi zrobi to
samo lecz 1szego kadego miesica. Oczywicie zamiast szstego moe by inny
dzie, jednake  radz pamita, e 31 kadego miesica wystpuje 8 razy do
roku, a 29 luty wystpuje co  cztery lata, wic najpniej  opaty mona
pobiera  dwudziestego smego kadego miesica,  odwani mog to zrobi w
skrypcie  /etc/cron.d/monthly  obsugiwanym przez wikszo  wspczesnych
dystrybucji, wykonywanym dokadnie raz na miesic, czy wrcz w postaci wpisw
w atd (demonie uruchamiajcym polecenia nie 'wczeniej ni'). To dla tych
ktrzy maj np 'kalendarz naliczania' ostatniego dnia miesica.

$ at -f /usr/sbin/lms-eachmonth 6:00 01/31/01
$ at -f /usr/sbin/lms-eachmonth 6:00 02/28/01
$ at -f /usr/sbin/lms-eachmonth 6:00 03/31/01
(etc...)

Kolejny etap integracji LMS'a z Dziaem Nkania Uytkownikw to wysyanie
powiadomie, czyli lms-notify:

0 0 8 * *	/usr/sbin/lms-notify

Czyli smego kadego miesica wylemy przypominienie o tym, e s jakie
zalegoci (czyli aktualne saldo usera jest poniej zera). Temat wiadomoci
oraz ciek do pliku tekstowego ustawiamy w /etc/lms/lms.ini. Przydatna
bdzie opcja debug ktra zaspamuje naszego mailboxa zamiast uytkownikw.
Przykadowy template maila jest w sample/mailtemplate.txt. 
Dzia Nkania moe p.t. luserowi przysa pewne informacje zawarte w lmsie, 
ich peny wykaz znajduje si w pliku sample/test.txt, moe to by np aktualna
taryfa, stan konta, czy wycig z ostatnich operacji. 
Dodatkowo mona ustawi kilka(nacie?) szablonw maili, tak e pierwszy to 
'naliczono abonament', drugi 'proba o uregulowanie wpaty'. N-ty to 'za 24h 
zostaniesz odcity od sieci'. Np:

0 0 10 * * /usr/sbin/lms-notify -D conf/tekst_1.txt 
0 0 15 * * /usr/sbin/lms-notify -D conf/tekst_2.txt 
0 0 20 * * /usr/sbin/lms-notify -D conf/tekst_3.txt 

Trzeci i ostatni etap to odcinanie userw poniej danego limitu:

0 0 10 * *       /usr/sbin/lms-cutoff

Limit ustawiamy w lms.ini jak zwykle.

Zatrzymajmy si tutaj i dodajmy co do crona, tak dla witego 
spokoju[tm](C):

12 4 3,10,17,21,28 * * /usr/bin/mysqldump -u lms --password=Twoje-super-tajne-haso --add-drop-table --add-locks lms > backups/lms-auto-"$(date +%s)".sql

Spowoduje to wykonywanie 12 po 4 rano, kadego 3, 10, 17, 21 i 28 dnia 
miesica automagicznie zrzutu danych z mysqla.

Okej. Teraz generowanie configw. Od tego suy lms-mgc. Jego konfiguracja
jest zawia. Tak wic wrmy do podstawowego zadania - zrobienia tylko
firewalla (i to prostego) dla linuksa 2.2.

Teraz, dodajmy now sekcj mgc do lms-mgc.ini, nazywajc j 'ipchains', 
oraz stwrzmy w tej sekcji prost maskarad per adres IP z lanu:

[mgc:ipchains]

outfile			= /etc/rc.d/rc.masq
outfile_perm		= 700
header			= #!/bin/sh\n/sbin/ipchains -F\n/sbin/ipchains -X\n/sbin/ipchains -P forward DENY
grantednode_priv	= /sbin/ipchains -A forward -s %IP -j MASQ
post_exec		= /etc/rc.d/rc.masq

Dopiszmy take do sekcji gwnej mgc informacj eby mgc uruchamia t
sekcj:

[mgc]

instances		= ipchains

Teraz prba odpalenia lms-mgc powinna zaowocowa wygenerowaniem
/etc/rc.d/rc.masq, oraz jego odpaleniem.

Mamy  dwie  moliwoci  wprowadzenia  w  ycie tego generatorka - albo
przez  cron,  albo  z  poziomu lms'a (tak! synny nigdy nie dziaajcy
reload  (tm)).  Pierwsze,  powinno  by atwe i napewno tego tutaj nie
opisz.  Druga metoda wymaga paru kombinacji. Niestety, jedyne wyjcie
by  umoliwi  odpalenie  lms-mgc  to dopisanie uytkownika do sudo, a
nastpnie wpisy w sekcji [phpui] lms.ini:

reload_type		= exec
reload_execcmd		= sudo /usr/sbin/lms-mgc

Tak wic wszystko powinno dziaa. Na dniach prawdopodobnie ukae si
plmsd - czyli demon perlowy pozwalajcy na normalniejsze (bez sudo)
rekonfigurowanie systemu.

Wecie take na poprawk, i cay projekt mimo tylu miesicy pisania
dopiero od kilku tygodni nabiera normalnej formy, ale miejmy nadziej
i szybko stanie si stabilnym rozwizenim dla sieci osiedlowych i
maych ISP.

$Id: INSTALL,v 1.21 2003/04/14 23:09:23 lukasz Exp $
