|
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.
Dodatkowe oprogramowanie niezbędne jest do uruchamiania skryptów zarządzających instalacją serwera oraz do prac wdrożeniowych:
Jeśli serwer będzie wyposażony w nagrywarkę DVD i ma automatycznie nagrywać kopie zapasowe, wówczas należy zainstalować także:
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.
Koniecznie przed przystąpieniem do instalacji serwera baz danych należy upewnić się, że serwer działa z polskimi locale (komenda
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:
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:
|
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ę
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. |
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:
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 |
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:
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 |
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 |
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'; |
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;" |
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.
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 |
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 |
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 |
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 |
Edytujemy plik /etc/docker/daemon.json
{ "storage-driver": "overlay2", "live-restore": true, "iptables": false } |
I restartujemy.
systemctl restart docker |
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:
Usługi udostępniane przez 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 |
Instrukcja pełnej konfiguracji usług w NGINX jest dostępna na następnej stronie.
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 |