Wymagania dla instalacji SowaSQL Premium
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.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 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 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 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
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
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.
Ubuntu 24.04
wget http://download.sokrates.pl/sovvizor.py
python3 sovvizor.py
source ~/sowang3/bin/activate
pip install psycopg2 pillow setuptools