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
Minimalne | Komfortowe | Optymalne | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
RAM | CPU | HDD | RAID | RAM | CPU | SSD | RAID | RAM | CPU | SSD | RAID | |
SowaSQL Premium | 12GB | 4 | 500GB | software | 16GB | 8 | 1TB SATA | kontroler sprzętowy | 32GB | 16 | 1TB SAS nVME | kontroler 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:
- 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.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.
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
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.
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:
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.
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.
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
wget http://download.sokrates.pl/sovvizor.py python3 sovvizor.py source ~/sowang3/bin/activate pip install psycopg2 pillow setuptools