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

HDD, SSD - dysk przeznaczony na bazy danych

RAID - kontroler dysków / macierzy


MinimalneKomfortoweOptymalne
RAMCPUHDDRAIDRAMCPUSSDRAIDRAMCPUSSDRAID
SowaSQL Premium12GB4500GBsoftware16GB81TB SATAkontroler sprzętowy32GB161TB SAS nVMEkontroler sprzętowy

Do podanej wielkości pamięci należy dodać po 1 GB na każdych 10 licencjonowanych użytkowników.

Oznacza to iż jeśli posiadacie Państwo licencję na 30 użytkowników wartości te będą następujące:

Minimalne: 12 + 3 = 15 GB

Komfortowe: 16 + 3 = 19 GB

Optymalne: 32 + 3 = 35 GB


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.


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 22.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.8.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-8

To 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.

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:

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.8 - w przypadku systemu Ubuntu 22.04 jest on podstawowym składnikiem systemu w wersji 3.10.

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 22.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 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


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.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 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 sowa

Użytkownik ten powinien móc mieć uprawnienie do wykonywania przez "sudo" operacji reloadu serwerów Nginx i Apache2.

Edycja uprawnienia do sudo
visudo

I 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/.ssh

Konfiguracja użytkownika PostgreSQL


Dla Ubuntu 22.04:

Zaktualizować plik /etc/postgresql/14/main/pg_hba.conf, podmienić w nim scram-sha-256 na md5
Zaktualizować plik /etc/postgresql/14/main/postgresql.com, zmienić w nim password_encryption również z scram-sha-256 na md5

Dla Ubuntu 24.04:

Zaktualizować plik /etc/postgresql/16/main/pg_hba.conf, podmienić w nim scram-sha-256 na md5
Zaktualizować plik /etc/postgresql/16/main/postgresql.com, zmienić w nim password_encryption również z scram-sha-256 na md5


Następnie wykonać komendę

systemctl restart postgresql


Należy również 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
psql

Utworzenie 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

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   65536

Zakres 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 60999

a ponadto należy ten limit od razu ustawić wydając polecenie:

echo "50100 60999" > /proc/sys/net/ipv4/ip_local_port_range

Ustawienia dla elasticsearch

Podobnie, do pliku /etc/sysctl.conf dodajemy na końcu:

vm.max_map_count=262144

i zastosować poprzez:

sysctl -w vm.max_map_count=262144

Konfiguracja 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 overlay

Konfiguracja 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:8080

Ponadto należy włączyć moduł serwera Apache - mod_rewrite.

a2dissite 000-default
a2enmod rewrite
a2dismod status
systemctl restart apache2

Konfiguracja 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.

wget http://download.sokrates.pl/sovvizor.py
python3 sovvizor.py

source ~/sowang3/bin/activate

pip install psycopg2 pillow

Ubuntu 24.04

Ubuntu 24.04
wget http://download.sokrates.pl/sovvizor.py
python3 sovvizor.py

source ~/sowang3/bin/activate

pip install psycopg2 pillow setuptools