----------------------------------------------------------------------
                    LAN Managment System 1.0.1
----------------------------------------------------------------------
                    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 (od 2.2.20 do 2.2.25 i od 2.4.18 do 2.4.20-5), PHP/4.2.3,
  MySQL od  3.23.53  do  3.23.56,  PostgresSQL  7.2.3 (LMS by gwnie
  rozwijany na tej dystrybucji przez co cay LMS moe zawiera
  zboczenia charakterystyczne dla PLD)
- PLD 1.0 Ra + PostgreSQL
- PLD 1.99 Ac (pre-ac od Averne) - kernel 2.4.20, PHP/4.3.1, MySQL
  4.0.12, perl-5.8.0-0.32
- Debianie 3.0 Woody
- Windowsie z najnowszym EasyPHP
- Slackware 8.1 (2.4.20), Apache 1.3.27, PHP 4.2.3, MySQL 3.23.53
- Slackware 8.1 (2.4.20SMP), Apache/1.3.27, PHP/4.3.1, MySQL 3.23.55
- RedHat 8.0

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.  Odwied  stron  domow  LMS'a (http://lms.rulez.pl).
Dowiesz  si tam jak si zapisa na list mailingow oraz wiele innych
zasobw ktre mog by przydatne.

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*****

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*****

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.26.2.3 2003/06/21 10:19:24 lukasz Exp $
