/
Wymagania dla instalacji SowaSQL Premium

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:

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

 

Related content