13.1. Technická dokumentace

13.1.1. Instalace

Zdrojový kód je kompilován pomocí Apache Maven: mvn clean package -DskipTests

Zkompilovaná aplikace je zabalena v spustitelném .jar souboru.

Závislosti:

  • PostgreSQL

  • Java 11+ (OpenJDK)

  • Apache

Elasticsearch 6.8.2

Elasticsearch doporučujeme instalovat standartně přes Správce balíčků (package manager), pokud je toto z nějakého důvodu nevyhovující, přikládáme alternativní postup instalace.

Struktura

Struktura je aktualně nasledující:
drwxrwsr-x 2 inqool        elasticsearch  178 May 10 22:50 config
drwxrwsr-x 4 elasticsearch elasticsearch   34 May 10 22:47 data
drwxrwsr-x 6 inqool        elasticsearch  117 May 10 22:37 elasticsearch-6.8.2
lrwxrwxrwx 1 elasticsearch elasticsearch   20 May 10 22:46 elasticsearch-current -> elasticsearch-6.8.2/
drwxrwsr-x 2 elasticsearch elasticsearch    6 May 10 22:46 run

Jedná se o variantu ve které jsou logy, data a konfigurace odděleně od binarních dat za účelem jednodušších aktualizací a vyšší bezpečnosti. Právo zápisu do binarních dat a konfigurací má pouze uživatel inqool.

Instalace (CentOS 7)

yum install epel-release
yum install java-11-openjdk
cd /opt
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.2.tar.gz
tar -xf elasticsearch-6.8.2.tar.gz
elasticsearch-6.8.2/bin/elasticsearch-plugin install analysis-icu
mkdir config data logs run
ln -s elasticsearch-6.8.2 elasticsearch-current
wget https://raw.githubusercontent.com/elastic/elasticsearch/master/distribution/packages/src/common/systemd/elasticsearch.service
edit elasticsearch.service as you need
  Environment=ES_HOME=/usr/share/elasticsearch
  Environment=ES_PATH_CONF=${path.conf}
  Environment=PID_DIR=/var/run/elasticsearch
  WorkingDirectory=/usr/share/elasticsearch

  User=elasticsearch
  Group=elasticsearch

  ExecStart=/opt/elasticsearch/elasticsearch-current/bin/elasticsearch -p ${PID_DIR}/elasticsearch.pid --quiet

cp elasticsearch.service /etc/systemd/system

systemctl daemon-reload

edit /opt/elasticsearch/config/elasticsearch.yml
  path.logs: /opt/elasticsearch/logs
  path.data: /opt/elasticsearch/data/index

edit /opt/elasticsearch/config/jvm.options
-XX:ErrorFile=/opt/elasticsearch/logs/hs_err_pid%p.log
8:-Xloggc:/opt/elasticsearch/logs/gc.log
9-:-
Xlog:gc*,gc+age=trace,safepoint:file=/opt/elasticsearch/logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m

systemctl start elasticsearch
systemctl enable elasticsearch

Spuštění aplikace z příkazové řádky

Restartování aplikace spuštěné přímo z příkazové řádky:

  • pomocí ps xw nalézt PID JAVA procesu badatelna.jar

  • kill <PID>

  • nohup java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 badatelna.jar $> badatelna.log

  • agentlib:jdwp lze vypustit, slouží pro možnost remote debuggingu

  • pracovní adresář je automaticky adresář z nějž je aplikace spuštěna, lze změnit přepínačem -Duser.dir={cesta}

Spuštění aplikace jako služby

  • badatelna.service - vzorový konfigurační soubor pro systemd službu

[Unit]
Description=Badatelna
After=syslog.target

[Service]
Type=simple
User=ais
Group=ais
WorkingDirectory=/opt/ais/badatelna
ExecStart=/opt/ais/badatelna/badatelna.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target
  • badatelna.conf - konfigurační soubor systemd služby - vložit do pracovního adresáře aplikace

JAVA_OPTS="-Xmx2g -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"

13.1.2. Konfigurace

Systém

Aplikace je konfigurovatelná skrze soubor application.yml který se nachází v pracovním adresáři. Konfigurační hodnoty v tomto souboru překrývají defaultní konfigurační hodnoty v souboru application.yml nacházejícím se ve složce src/main/resources. Po přepsání souboru je pro projevení změn nutné aplikaci restartovat. Při konfigurování atributů cest na souborovém systému lze zadat relativní cestu vzhledem k pracovnímu adresáři.

Cron používaný aplikací musí být ve formátu: second, minute, hour, day of month, month, day(s) of week.

13.1.3. Databáze

  • Všechny entity používají UUID.

  • Tabulky jsou generovány při prvním spuštění aplikace.

  • Aplikačnímu serveru musí být povolen přístup k DB s přihlašováním typu “md5”

13.1.4. Instalační balíček

Pro instalaci je dodán samostatný instalační balíček Badatelny.

Databáze je iniciována automaticky při prvním startu aplikace.

Jsou dodány tyto přílohy:

  • badatelna.jar - zkompilovaná aplikace

  • application.yml - konfigurační soubor překrývající defaultní konfiguraci - vložit do pracovního adresáře aplikace. Jedná se o vzorový soubor, jednotlivé konfigurační hodnoty může být nutné upravit dle konkrétního prostředí.

  • reportTemplates.zip - soubory se šablonami pro generování PDF dokumentů, nutné rozbalit do složky shodné s hodnotou v application.yml files.templatesPath, v případě hodnoty ../dataspace/archival tedy musí být .jrxml šablony umístěné v ../dataspace/archival/reportTemplates

  • httpd.conf - hlavní konfigurační soubor Apache

  • conf.d.zip - další konfigurační soubory Apache

  • web-build.zip - build GUI aplikace - rozbalit a nakopírovat obsah složky „build“ do /inet/www/html-ais/badatelna (dle httpd konfigurace)

  • .htaccess - konfigurační soubor Apache, který je potřebné umístit do složky kde byl rozbalený web-build.zip (předvoleně tedy do /inet/www/html-ais/badatelna)

13.1.5. Reindex

Z uživatelského rozhraní

Reindexace je možná z administrační části badatelny selektivně pro vybrané entity na url ${base-url}/badatelna/admin/reindex (Nástroje vývojáře->Skripty->Reindex API). Reindex probíhá synchronně, pro entity s mnoha záznamami je tedy možné, že request timeoutne dříve než reindex skončí, na jeho provedení to ale vliv nemá.

Z příkazové řádky

Kompletní reindex je možné spustit POST requestem na URL http://localhost:8080/badatelna/api/admin/index s HTTP hlavičky

X-SSO-Username=99673495` (casId libovolného správce)
authenticationlevel=urn:cuni:authenticationlevel:basic

např. curl -X POST -H ‚X-SSO-Username: 99673495‘ -H ‚authenticationlevel: urn:cuni:authenticationlevel:basic‘ ‚http://localhost:8080/badatelna/api/admin/index‘