2.5. Instalacja serwera baz danych

2.5.1. MySQL

2.5.1.1. Wstęp

Ta bardzo popularna baza jest dostępna z większością dystrybucji Linuksa. Jeżeli jednak będziesz musiał ją zainstalować samodzielnie, zacznij od ściągnięcia źródeł z www.mysql.com.

2.5.1.2. Instalacja serwera MySQL

Po rozpakowaniu, wejdź do katalogu z naszym MySQL i wydaj kolejno polecenia:

$ ./configure --prefix=/usr/mysql
$ make
$ make install
$ /usr/mysql/bin/mysql_install_db
$ chown mysql -R /usr/mysql/var
$ /usr/mysql/bin/safe_mysqld &
$ /usr/mysql/bin/mysqladmin -u root password nowe_hasło

2.5.1.3. Utworzenie bazy danych

Konieczne to jest jeżeli uruchamiasz LMS po raz PIERWSZY. Jeżeli uaktualniasz LMS z poprzedniej wersji, odpowiednie adnotacje co należy zrobić z bazą danych są w pliku ChangeLog. Tak więc, wejdź do katalogu w którym masz LMS'a i uruchom shell mysql'a:

mysql -u[tutaj wpisz użytkownika z pełnym dostępem do bazy] -p
Enter password:[podaj hasło]
mysql> create database lms;
mysql> grant usage on lms.* to lms@localhost;
mysql> grant select,insert,update,delete,create,alter on lms.* to lms@localhost identified by 'haslo';
mysql> flush privileges;
mysql> use lms;
mysql> source doc/lms.mysql;

Notatka

Z uwagi na to, że MySQL nawet w wersji 4.1 ma pewne problemy z kodowaniem utf baza danych LMS może mieć inne kodowanie. W takim wypadku należy założyć bazę w LATIN2 i skorzystać z opcji konfiguracyjnej server_encoding w sekcji [database] pliku lms.ini.

2.5.1.4. Konfiguracja LMS (lms.ini)

Ponieważ MySQL jest domyślną bazą dla LMS'u, konfiguracja ogranicza się do podania w sekcji [database] pliku /etc/lms/lms.ini hasła i użytkownika:

user     = lms
password = hasło_z_pkt.3
server_encoding = latin2 ; jeśli baza nie jest w unicodzie

Po takim zabiegu, o ile LMS'owi uda się nawiązać połączenie do bazy danych, można już bez problemu dostać się do systemu. Jeżeli jednak w bazie danych nie ma żadnego konta użytkownika, jedyną rzeczą jaką zobaczysz będzie formularz dodania użytkownika. Jeżeli podasz prawidłowe dane użytkownika, LMS przeniesie Cię na stronę logowania gdzie od razu będziesz mógł użyć nowo utworzonego konta.

Zatrzymaj się tutaj i dodaj coś do crona, tak dla świętego spokoju:

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

Spowoduje to wykonywanie o 4:12 rano, każdego 3, 10, 17, 21 i 28 dnia miesiąca automagicznie zrzutu danych z mysqla.

2.5.2. PostgreSQL

2.5.2.1. Wstęp

LMS jest testowany na PostgreSQL 7.3.4 i nowszych, ale ponieważ żadne skomplikowane właściwości tej bazy nie są wykorzystywane, nie powinno być problemów z innymi wersjami. Jeżeli nie masz zainstalowanego serwera PostgreSQL, najlepszym rozwiązaniem będzie własnoręczna kompilacja ze źródeł dostępnych na stronie www.postgresql.org.

2.5.2.2. Instalacja

Jest to wersja skrócona instalacji, więcej informacji znajdziesz w dokumentacji postgresa. Po ściągnięciu i rozpakowaniu wejdź do katalogu głównego i wpisz kolejno poniższe polecenia.

$ ./configure --enable-locale
$ gmake
$ su
$ gmake install
$ adduser postgres
$ mkdir /usr/pgsql/data
$ chown postgres /usr/pgsql/data
$ su - postgres
$ /usr/pgsql/bin/initdb -D /usr/pgsql/data --locale=pl_PL.UTF-8
$ /usr/pgsql/bin/postmaster -D /usr/pgsql/data >logfile 2>&1 &

2.5.2.3. Utworzenie bazy danych

Mając uruchomiony serwer możesz przystąpić do tworzenia bazy o nazwie 'lms', której właścicielem będzie użytkownik z loginem 'lms'.

$ /usr/pgsql/bin/createuser -d -A -P lms
$ /usr/pgsql/bin/createdb -E UNICODE -U lms lms
$ /usr/pgsql/bin/psql -d lms -U lms -f /lms/doc/lms.pgsql

Notatka

Kodowanie UNICODE jest prawidłowo obsługiwane dla znaków spoza zakresu ASCII dopiero od wersji 8.0 PostgreSQLa. Na wcześniejszych wersjach należy założyć bazę w LATIN2 i skorzystać z opcji konfiguracyjnej server_encoding w sekcji [database] pliku lms.ini.

2.5.2.4. Konfiguracja LMS (lms.ini)

Dla systemu LMS domyślnym serwerem baz danych jest MySQL, dlatego w sekcji [database] pliku /etc/lms/lms.ini należy ustawić następujące opcje:

type     = postgres
user     = lms
password = hasło_podane_przy_tworzeniu_użytkownika_lms

Notatka

Hasło jest wymagane w zależności od konfiguracji autentykacji użytkowników postgresa w /usr/pgsql/data/pg_hba.conf. Domyślnie hasło nie jest wymagane.

Po takim zabiegu, o ile LMS'owi uda się nawiązać połączenie do bazy danych, można już bez problemu dostać się do systemu. Jeżeli jednak w bazie danych nie ma żadnego konta użytkownika, jedyną rzeczą jaką zobaczysz będzie formularz dodania użytkownika.

Zatrzymaj się tutaj i dodaj coś do crona, tak dla świętego spokoju:

12 4 3,10,17,21,28 * * /usr/bin/pg_dump -U lms --clean --create --column-inserts  \
		    --format=p lms -- file backups/lms-auto-"$(date +%s)".sql

2.5.3. SQLite

2.5.3.1. Wstęp

Ta jednoplikowa baza jest chwalona za swoją szybkość, wg autorów określaną na 2-3 krotnie szybszą od MySQL. Poza tym przy odpowiedniej konfiguracji umożliwia wczytanie całej bazy do pamięci RAM przez co osiągany jest znaczny wzrost wydajności. Poniżej przedstawiono krótki opis instalacji. Źródła można pobrać z www.sqlite.org.

2.5.3.2. Instalacja SQLite

Opisano tutaj sposób instalacji bibliotek SQLite oraz dodanie obsługi tej bazy do PHP (PHP w wersji 5.0 ma wbudowaną obsługę SQLite). Po rozpakowaniu źródeł, wejdź do katalogu z SQLite i wydaj kolejno polecenia (ścieżki przykładowe):

$ ./configure --enable-utf8
$ make
$ make install
$ ldconfig
$ pear download http://pecl.php.net/get/SQLite-1.0.2.tgz
$ pear install SQLite-1.0.2.tgz
Następnie w pliku php.ini ustaw:
extension=sqlite.so
Istnieje również możliwość wkompilowania obsługi SQLite w PHP przy pomocy opcji --with-sqlite.

2.5.3.3. Utworzenie bazy danych

Konieczne to jest jeżeli uruchamiasz LMS po raz PIERWSZY. Tak więc, wejdź do katalogu w którym masz LMS'a i uruchom shell sqlite'a:

$ sqlite -init doc/lms.sqlite /usr/lms/lms.db
sqlite> .exit
$ chown 99.98 /usr/lms/lms

2.5.3.4. Konfiguracja LMS (lms.ini)

Jednym z ograniczeń SQLite jest brak autentykacji użytkowników, dlatego konfiguracja ogranicza się do podania typu oraz ścieżki do pliku bazy. W sekcji [database] pliku /etc/lms/lms.ini podajemy:

type     = sqlite
database = /usr/lms/lms.db

Po takim zabiegu, można już bez problemu dostać się do systemu. Jeżeli jednak w bazie danych nie ma żadnego konta użytkownika, jedyną rzeczą jaką zobaczysz będzie formularz dodania użytkownika.

Zatrzymaj się tutaj i dodaj coś do crona, tak dla świętego spokoju:

12 4 3,10,17,21,28 * * /bin/cp /usr/lms/lms.db  backups/lms-auto-"$(date +%s)"-sqllite.db