7.1.4. 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. 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/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ř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 --name uk-ais-siegfried aipsafe/uk-ais-siegfried:1.2
    podman create -v /opt/ais/workspace:/var/workspace:z -p 2003:2003 --name uk-ais-libreoffice aipsafe/uk-ais-libreoffice:1.2
    podman create -v /opt/ais/workspace:/var/workspace:z --name uk-ais-scriptlib aipsafe/uk-ais-scriptlib:1.2
    
    • Nakonfigurujte scriptovou knihovnu. V adresáři workspace soubor config.yml.

      Viz 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.2.rev.zip. Například pomocí příkazů:

      curl -o fm.zip "https://maven.aipsafe.cz/repository/shared/cz.aipsafe.uk.ais/1.2.rev/fm/fm-1.2.rev.zip"
      unzip fm.zip
      rm fm.zip
      
    • Konfigurační soubor fm.yml.

      Viz 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:

    [Unit]
    Description=Format Module GUI
    After=multi-user.target
    
    [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 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.