.. _fm_administration_installation: Instalace ========= Instalace jednotlivých prostředí se může mírně lišit. Například může být jiný uživatel, pod kterým služby běží, služby mohou být rozmístěny na různých aplikačních serverech, může být jiná adresa databáze a podobně. Zde je popsaný typický postup instalace podle instalace testovacího prostředí. Všechny služby v tomto popisu jsou instalovány na jeden aplikační server. Na akceptačním a produkčním prostředí jsou ale služby fm-gui a fm-api umístěny na jeden aplikační server a služby fm-proc a scriptlib na druhý aplikační server. Další rozdíl je, že na akceptačním prostředí jsou některé služby pojmenované s koncovkou test (fm-api-test, fm-gui-test, fm-proc-test) a že koncovku test obsahuje i instalační adresář /opt/ais/fm-test. Tomu je třeba postup instalace přizpůsobit. Minimální SW požadavky ---------------------- * RockyLinux 9.3 * OpenJDK 17 * PostgreSQL 15.6 Minimální HW požadavky ---------------------- * CPU - 4 * Memory - 8GB * HDD - 40GB Příprava aplikačního serveru ---------------------------- * Připravte aplikační server nejlépe RockyLinux 9.3 * Pomocí správce balíčků na něj nainstalujte javu 17 * Pomocí správce balíčků na něj nainstalujte PostgreSQL databázi 15.6 * Zpřístupněte port databáze ve firewallu, abyste ji mohli spravovat externě:: sudo firewall-cmd --zone=public --permanent --add-port=5432/tcp * Založte uživatele pod kterým poběží služby:: sudo useradd ais * Vytvořte instalační adresář, pracovní prostor a připojte adresář úložiště arclib:: /opt/ais/fm /opt/ais/fm/install /opt/ais/workspace /opt/ais/arclib * Zajistěte právo zápisu uživateli ais k pracovnímu prostoru. chown ais:ais /opt/ais/workspace Příprava databáze ----------------- * Pomocí pgAdmin (verze 4.7) se připojte na databázový server. * Založte databázi příkazem:: create database fm locale 'cs_CZ.utf8'; Databázi není možné založit pomocí dialogu pgAdmin, protože se zde nenabízí správná colation cs-CZ.utf8! * Vytvořte databázového uživatele ais. * Uživateli ais nastavte všechna práva ke schématu public databáze fm. Instalace scriptové knihovny ---------------------------- * Přihlaste se na aplikační server jako uživatel ais. * Před prvním spuštěním podmana se ujistěte, že máte správně nastavenou environment variable XDG_RUNTIME_DIR na /run/user/$UID. (Příkaz sudo -i -u ais tuto environment variable nenastavuje, proto ji budete pravděpodobně muset nastavit příkazem export XDG_RUNTIME_DIR=/run/user/$UID.) Poté si pomocí podman system info zkontrolujte, že adresář runDir směřuje do tohoto adresáře. (Nové nastavení podle změněné XDG_RUNTIME_DIR lze provést příkazem podman system reset.) * Přihlaste se k docker repository docker.io:: podman login docker.io * Stáhněte aktuální docker image scriptové knihovny:: podman pull docker.io/aipsafe/uk-ais-siegfried:1.2 podman pull docker.io/aipsafe/uk-ais-libreoffice:1.2 podman pull docker.io/aipsafe/uk-ais-scriptlib:1.2 * Vytvořte containery scriptové knihovny:: podman create -v /opt/ais/workspace:/var/workspace:z -p 8082:80 --network slirp4netns --name uk-ais-siegfried aipsafe/uk-ais-siegfried:1.2 podman create -v /opt/ais/workspace:/var/workspace:z -p 2003:2003 --network slirp4netns --name uk-ais-libreoffice aipsafe/uk-ais-libreoffice:1.2 podman create -v /opt/ais/workspace:/var/workspace:z --network slirp4netns --name uk-ais-scriptlib aipsafe/uk-ais-scriptlib:1.2 * Nakonfigurujte scriptovou knihovnu. V adresáři workspace soubor config.yml. Viz :ref:`Konfigurace`. * Jako root uživatel v adresáři /etc/systemd/system vytvořte soubor siegfried.service, libreoffice.service a scriptlib.service. Jako vzor vám může sloužit následující soubor:: [Unit] Description=Scriptlib Container After=multi-user.target [Service] User=ais Restart=always ExecStart=/usr/bin/podman start -a uk-ais-scriptlib ExecStop=/usr/bin/podman stop -t 5 uk-ais-scriptlib [Install] WantedBy=multi-user.target * Enablujte služby:: sudo systemctl enable siegfried sudo systemctl enable libreoffice sudo systemctl enable scriptlib * Nastartujte služby:: sudo systemctl start siegfried sudo systemctl start libreoffice sudo systemctl start scriptlib * Ověřte, že služby běží:: sudo systemctl status siegfried sudo systemctl status libreoffice sudo systemctl status scriptlib Instalace formátového modulu ---------------------------- * Připravte obsah instalačního adresáře /opt/ais/fm: * Obsah instalačního souboru fm-1.x.y.rev.zip. Například pomocí příkazů:: curl -o fm.zip "https://repo.aipsafe.cz/repository/shared/cz.aipsafe.uk.ais/1.x.y.rev/extension/fm-1.x.y.rev.zip" unzip fm.zip mv fm.zip install * Konfigurační soubor fm.yml. Viz :ref:`Konfigurace`. * Spouštěcí scripty fm-gui.sh, fm-api.sh, fm-proc.sh, fm-cmd.sh s obsahem:: #!/bin/sh java -jar fm-gui.jar "$@" Namísto fm-gui.jar je u dalších scriptů fm-api.jar, fm-proc.jar, fm-cmd.jar. Spouštěcím scriptům sh nastavte právo execute:: chmod a+x /opt/ais/fm/*.sh * Adresář var jehož vlastníkem je ais:: mkdir var chown ais:ais var * Pomocí příkazu:: ./fm-cmd.sh validate zkontrolujte připojení k databázi a potřebu provést migrace. * Pomocí příkazu:: ./fm-cmd.sh migrate proveďte instalaci struktury databáze. * Pokud se jedná pouze o testovací databázi můžete pomocí příkazu:: sudo -u ais ./fm-cmd.sh demonstration naplnit databázi testovacími daty. Příkaz je třeba spustit pod uživatelem ais, protože pracuje se stejnými soubory v adreáři var jako služba svc-gui. * V adresáři /etc/systemd/system vytvořte soubor fm-gui.service s následujícím obsahem (důležité je nastavení spouštění po postgresql, pokud je databáze nainstalovaná na stejném serveru):: [Unit] Description=Format Module GUI After=syslog.target postgresql-15.service [Service] User=ais WorkingDirectory=/opt/ais/fm ExecStart=/opt/ais/fm/fm-gui.sh [Install] WantedBy=multi-user.target * Obdobně vytvořte i soubory fm-api.service a fm-proc.service spouštějící fm-api.sh a fm-proc.sh s popisem Format Module API a Format Module Processes. * Enablujte služby:: sudo systemctl enable fm-gui sudo systemctl enable fm-api sudo systemctl enable fm-proc * Nastartujte služby:: sudo systemctl start fm-gui sudo systemctl start fm-api sudo systemctl start fm-proc * Ověřte, že služby běží:: sudo systemctl status fm-gui sudo systemctl status fm-api sudo systemctl status fm-proc * Povolte porty služeb ve firewallu:: sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp sudo firewall-cmd --zone=public --permanent --add-port=8081/tcp * Oveřte, že jsou služby přístupné v browseru. Viz :ref:`Přístupové body`. * Proveďte reboot aplikačního serveru:: sudo reboot a znovu zkontrolujte, že jsou služby po chvíli přístupné v browseru.