Wymagania dla instalacji SowaSQL Premium
Wymagania sprzętowe dotyczące serwera
Na wybór odpowiedniej konfiguracji sprzętowej serwera wpływ mają przede wszystkim: liczba użytkowników (w tym czytelników), liczby baz danych oraz zainstalowanych modułów systemu bibliotecznego. Stąd dla każdej instalacji niezbędne jest indywidualne oszacowanie potrzeb. Na podstawie naszych doświadczeń jesteśmy jednak w stanie wskazać podstawowe parametry, jakie powinien spełnić serwer (lub maszyna wirtualna) przeznaczona pod system biblioteczny SowaSQL Premium.
RAM - ilość pamięci operacyjnej
CPU - liczba wątków procesora
SSD - dysk przeznaczony na bazy danych
RAID - kontroler dysków / macierzy
| Minimalne | Komfortowe | Optymalne | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
RAM | CPU | SSD | RAID | RAM | CPU | SSD | RAID | RAM | CPU | SSD | RAID | |
SowaSQL Premium | 16GB | 8 | 500GB SATA | software | 32GB | 16 | 1TB SAS nVME | kontroler sprzętowy | 64GB | 32 | 2TB SAS nVME | kontroler sprzętowy |
Oczywiście są to pewne ramowe wartości, niemniej współczesne maszyny serwerowe bez problemu spełniają nawet zaproponowane tutaj optymalne warunki sprzętowe. W przypadku maszyn wirtualnych, których zasoby można dynamicznie przydzielać, najlepiej rozpocząć pracę z lekkim zapasem mocy i po miesiącu pracy można dopasować zasoby do realnych potrzeb danej instalacji.
Niezależnie od wybranej konfiguracji serwera, zwracamy uwagę na następujące, istotne aspekty:
Zastosowane komponenty powinny być przeznaczone do pracy w serwerach, w trybie pracy ciągłej 24/7
Zabezpieczeniem inwestycji jest odpowiednia gwarancja dostawcy i producenta na eksploatowany sprzęt, zapewniająca szybki czas reakcji na miejscu w bibliotece oraz usługi dodatkowe jak np. możliwość zachowania uszkodzonego dysku po ewentualnej wymianie, szczególnie istotną w kontekście przetwarzania danych osobowych.
Serwer powinien być umieszczony w certyfikowanej serwerowni, zapewniającej m.in. ochronę przeciwpożarową, system alarmowy, zasilanie awaryjne oraz odpowiednio rejestrowany dostęp dla osób fizycznych.
Należy zapewnić dodatkowy system przechowywania archiwów (np. NAS), który optymalnie powinien znajdować się w innej lokalizacji fizycznej, niż maszyna z systemem bibliotecznym
Wymagania dotyczące systemu operacyjnego serwera
Poniższe wymagania są skierowane do administratorów, którzy samodzielnie przygotowują serwer do instalacji systemu SowaSQL Premium. Dla bibliotek, które pracują w Hostingu, zapewniamy odpowiednią infrastrukturę w ramach świadczonej usługi!
System biblioteczny SowaSQL Premium, a dokładniej jego część serwerowa, zwana serwerem aplikacji, działa wyłącznie na systemie operacyjnym Linux, przy czym preferowaną przez nas dystrybucją jest aktualnie Ubuntu Server 24.04 LTS w architekturze 64-bitowej.
Poniżej wymienione są wymagania dotyczące oprogramowania niezbędnego do działania poszczególnych składowych systemu.
Serwer aplikacji
Dodatkowe oprogramowanie niezbędne jest do uruchamiania skryptów zarządzających instalacją serwera oraz do prac wdrożeniowych:
python3 >= 3.9.0
joe
mc
unzip
wget
screen
Jeśli serwer będzie wyposażony w nagrywarkę DVD i ma automatycznie nagrywać kopie zapasowe, wówczas należy zainstalować także:
growisofs
Należy jednak zaznaczyć, że pojemność płyt DVD jest obecnie niewystarczająca do przechowania pełnego archiwum systemu SowaSQL Premium w większych bibliotekach. Dlatego zalecamy zakup zewnętrznego, sieciowego dysku do synchronizacji archiwum baz danych i danych multimedialnych.
Serwer bazy danych
Ważna informacja
Koniecznie przed przystąpieniem do instalacji serwera baz danych należy upewnić się, że serwer działa z polskimi locale (komenda locale) - powinny być pl_PL.UTF-8
root@sowa:~# locale
LANG=pl_PL.UTF-8
LANGUAGE=
(...)Jeśli zamiast tego pojawia się np. "en_US" lub inne wartości, trzeba ustawić serwer na polskie locale. Na Ubuntu robi się to tak:
locale-gen "pl_PL.UTF-8"
update-locale LANG=pl_PL.UTF-8
dpkg-reconfigure locales
localectl set-locale LANG=pl_PL.UTF-8To trzecie polecenie zapyta o domyślne locale dla systemu - należy wskazać pl_PL.UTF-8 - po wszystkim warto się ponownie zalogować do systemu i jeszcze raz sprawdzić, czy na pewno są poprawne locale
Należy także ustawić właściwą strefę czasową poleceniem:
timedatectl set-timezone Europe/Warsaw
Serwer aplikacji SowaSQL wykorzystuje serwer baz danych PostgreSQL. Wymagany aktualnie wersji 14.x, która jest domyślnie dostępna w systemie Ubuntu 22.04. Zalecane jednak jest korzystanie z wersji 16.x oraz systemu Ubuntu 24.04.
Proponujemy po zainstalowaniu PostgreSQL wykonać komendę
apt-mark hold postgresql*Spowoduje to zablokowanie automatycznych aktualizacji wszystkich modułów PostgreSQL. Taka aktualizacja w czasie pracy systemu Sowa może spowodować jego awarię. Zalecane jest zatem aktualizowanie PostgreSQL ręcznie, po zamknięciu Sowy.
Serwer multimediów
Dla wersji SowaSQL Premium od sierpnia 2019 wykorzystywany będzie dedykowany serwer multimediów, dla którego działania niezbędny jest Docker. Zalecamy instalację w jeden z niżej podanych sposobów:
instalacja pakietu docker.io z repozytoriów Ubuntu
instalacja z oficjalnych repozytoriów Dockera - zob. https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-22-04
Serwer API i aplikacja webowa Sowy
nginx
Katalog on-line (SOWA OPAC)
apache
php >= 8.1, wraz z modułami (nie zawsze są w podstawowej instalacji PHP):
bcmath
curl
ctype
gd
hash
iconv
imagick
json
mbstring
openssl
session
sqlite3
xmlreader
xmlwriter
Klasa: Collator (PECL intl)
Wsparcie PHP
Zalecana jest instalacja wersji PHP, która jest aktywnie wspierana przez twórców. Minimalnym wymaganiem jest używanie wersji, dla której twórcy nadal wydają poprawki związane z bezpieczeństwem.
Aktualną informację na ten temat można zawsze uzyskać na stronie - http://php.net/supported-versions.php
Moduły serwerowe SOWA-NG
Niżej wymienione oprogramowanie powinno być zawsze dostępne na serwerze, gdyż w większości przypadków instalowany jest co najmniej jeden, dodatkowy moduł serwerowy z grupy SOWA-NG (w szczególności zawsze instalowany jest SOWIZOR).
Wymagany jest interpreter języka Python w wersji min. 3.9 - w przypadku systemu Ubuntu 24.04 jest on podstawowym składnikiem systemu w wersji 3.12.
Podczas instalacji środowiska wirtualnego Python i poszczególnych składowych modułów SOWA-NG, instalowane są także zależności (zewnętrzne moduły Pythona). Niektóre z nich wymagają kompilacji ze źródeł w trakcie instalacji, dlatego potrzebne będą następujące narzędzia:
make
g++
bison
pkg-config
Pełna instalacja dla Ubuntu 24.04 LTS 64-bit
Dla uproszczenia wszystkie w/w pakiety (wraz z serwerem PostgreSQL, którego instalacja opisana jest osobno wyżej) można zainstalować w następujący sposób (naturalnie z konta root).
Instalowane są dwa serwery HTTP - nginx i apache - dlatego podczas instalacji jeden z nich będzie raportował problem z uruchomieniem się na zajętym już porcie. Należy to zignorować, w dalszej części instalacji rozwiążemy ten konflikt.
Instalacja pakietów w Ubuntu 24.04
apt update
apt upgrade
apt install screen mc joe sqlite3 acpid growisofs wget strace openssh-server bash-completion htop
apt install postgresql-16 libpq-dev
apt install nginx
apt install apache2 apache2-utils
apt install python-is-python3 python3-setuptools python3.12-dev python3.12-venv
apt install php php-cli php-gd php-imagick php-xml php-json php-bcmath php-sqlite3 php-mbstring php-curl php-intl libapache2-mod-php
apt install build-essential gawk gcc make libssl-dev libreadline-dev libsqlite3-dev zlib1g-dev libxslt1.1 libyaml-dev pkg-config
apt install qpdf djvulibre-bin ghostscript
apt install docker.io docker-compose-v2
apt-mark hold postgresql*
systemctl disable --now apt-daily-upgrade.timer
Instalacja pakietów w Ubuntu 22.04
apt update
apt upgrade
apt install screen mc joe sqlite3 acpid growisofs wget strace openssh-server bash-completion htop
apt install postgresql-14 libpq-dev
apt install nginx
apt install apache2 apache2-utils
apt install python-is-python3 python3.10-dev python3.10-venv
apt install php php-cli php-gd php-imagick php-xml php-json php-bcmath php-sqlite3 php-mbstring php-curl php-intl libapache2-mod-php
apt install build-essential gawk gcc make libssl-dev libreadline-dev libsqlite3-dev zlib1g-dev libxslt1.1 libyaml-dev pkg-config
apt install docker.io docker-compose
apt-mark hold postgresql*
systemctl disable --now apt-daily-upgrade.timer
Wymagana konfiguracja serwera
Konto użytkownika sowa
SowaSQL działa na wydzielonym koncie użytkownika, proponujemy aby założyć użytkownika o nazwie sowa z katalogiem domowym /home/sowa i dodać go do grupy docker.
adduser sowa
usermod -a -G docker sowaUżytkownik ten powinien móc mieć uprawnienie do wykonywania przez "sudo" operacji reloadu serwerów Nginx i Apache2.
Edycja uprawnienia do sudo
visudoI na koniec pliku dodać należy:
Cmnd_Alias START_NGINX = /bin/systemctl start nginx
Cmnd_Alias RELOAD_NGINX = /bin/systemctl reload nginx
Cmnd_Alias RELOAD_APACHE = /bin/systemctl reload apache2
sowa ALL=(root) NOPASSWD: START_NGINX,RELOAD_NGINX,RELOAD_APACHE
Do tego konta należy udostępnić dostęp zdalny przez SSH, umożliwiający logowanie przy pomocy klucza SSH firmy SOKRATES:
Przykład konfiguracji dostępu przy pomocy klucza SSH
mkdir -p /home/sowa/.ssh
wget -O /home/sowa/.ssh/authorized_keys http://www.sokrates.pl/files/id_rsa_sokrates.pub
chmod 700 /home/sowa/.ssh
chmod 600 /home/sowa/.ssh/authorized_keys
chown -R sowa /home/sowa/.sshKonfiguracja użytkownika PostgreSQL
Należy założyć użytkownika w PostgreSQL o nazwie "sowa", z uprawnieniami do tworzenia baz danych. W tym celu trzeba zalogować się na konto root, przejść na konto postgres i z poziomu komendy psql utworzyć użytkownika.
Uruchomienie psql
su - postgres
psqlUtworzenie użytkownika wymaga podania jego hasła (tu: XXXX). Hasło prosimy ustalić przed utworzeniem użytkownika z firmą SOKRATES. (UWAGA: średnik na końcu polecenia SQL jest istotny!)
create user sowa with createdb password 'XXXX';Pozostałe ustawienia PostgreSQL
W zależności od parametrów serwera (wielkość pamięci RAM) należy ustawić kilka zmiennych
Prosimy w domyślnej instalacji dodać rozszerzenie pg_trgm, tak by było ono automatycznie dodawane do nowo zakładanych baz.
su - postgres
psql -d template1 -c "create extension pg_trgm;"
Ustawienia systemu operacyjnego
W szczególności istotne jest właściwe ustawienie limitów i parametrów jądra systemu, niezbędne do wydajnej pracy poszczególnych modułów systemu SowaSQL.
Limity
W szczególności trzeba zmniejszyć domyślny limit wielkości stosu, a dla odmiany podnieść limit otwartych plików. Proponowane są takie ustawienia (edycja w pliku /etc/security/limits.conf):
sowa soft stack 1024
sowa soft nofile 65536
* hard nofile 65536
root soft nofile 65536
root hard nofile 65536Zakres portów lokalnych
Jako że serwery Sowy używają wysokich portów do nasłuchiwania, musimy zagwarantować, że nie będą się "mieszać" tam porty lokalne używane przez klientów. W tym celu do pliku /etc/sysctl.conf należy dodać na końcu:
net.ipv4.ip_local_port_range=50100 60999a ponadto należy ten limit od razu ustawić wydając polecenie:
echo "50100 60999" > /proc/sys/net/ipv4/ip_local_port_rangeUstawienia dla elasticsearch
Podobnie, do pliku /etc/sysctl.conf dodajemy na końcu:
vm.max_map_count=262144i zastosować poprzez:
sysctl -w vm.max_map_count=262144Konfiguracja dla kontenerów Docker
Konfiguracja jądra Linux
Należy upewnić się, że jest ładowany moduł jądra overlay. Jeśli nie - trzeba go załadować i skonfigurować jego automatyczne ładowanie.
lsmod | grep overlayKonfiguracja dockera
Edytujemy plik /etc/docker/daemon.json
{
"storage-driver": "overlay2",
"live-restore": true,
"iptables": false
}I restartujemy.
systemctl restart docker
Konfiguracja serwerów HTTP
Instalacja korzysta z dwóch serwerów HTTP, przy czym jako główny (obsługujący porty 80 i 443, a także certyfikaty SSL) powinien być NGINX.
Usługi udostępniane przez NGINX:
serwer API (w tym dostęp do serwera aplikacji SowaSQL)
aplikacja webowa (dla administratora)
przekierowanie do katalogu OPAC
przekierowanie do usługi protokołu OAI-PMH
Usługi udostępniane przez Apache:
katalog OPAC (via mod_php)
protokół OAI-PMH (via mod_wsgi)
Konfiguracja Apache
Apache powinien serwować usługi tylko wewnętrznie, na porcie 8080 (port ten nie powinien być udostępniany poza hostem lokalnym). W tym celu należy zmienić port w pliku /etc/apache2/ports.conf na 8080.
Część pliku ports.conf
Listen 127.0.0.1:8080Ponadto należy włączyć moduł serwera Apache - mod_rewrite.
a2dissite 000-default
a2enmod rewrite
a2dismod status
systemctl restart apache2Konfiguracja Nginx
Instrukcja pełnej konfiguracji usług w NGINX jest dostępna na następnej stronie.
Instalacja środowiska wirtualnego
Ta operacja powinna być wykonana z poziomu użytkownika sowa i po uprzednim wgraniu do katalogu głównego licencji na system Sowa.
Ubuntu 24.04
wget http://download.sokrates.pl/sovvizor.py
python3 sovvizor.py
source ~/sowang3/bin/activate
pip install psycopg[binary] pillow setuptools