Doporučený způsob nasazení vzhledem k minimalizaci vzájemného ovlivňování výkonu je na 3 oddělené stroje, pokud nepočítáme load-balancing a high-availability, což u NKOD zatím není potřeba:
- NKOD-DB: Zde poběží samotná databáze, GraphQL endpoint a Linked Data Fragments endpoint.
- NKOD-ETL: Zde poběží harvestace lokálních katalogů a transformace dat, vyzvedávání zpráv z ISDS a cache externích číselníků a datových sad (seznam OVM)
- NKOD-FRONTEND: Zde poběží webový server, zadávací formuláře, prohlížeč datových sad, úložiště datových souborů ke stažení
V případě potřeby lze řešení nasadit i jiným způsobem, např. vše na jednom stroji po potřeby vývoje.
Pro zpřístupnění metadat NKOD pro dotazování SPARQLem je použita databáze OpenLink Virtuoso Open-Source.
Pro prohlížení RDF dat v HTML podobě je v databázi nainstalován balíček fct
.
Po nasazení na NKOD-DB běží její HTTP endpoint na portu 8890
, její SQL endpoint na portu 1111
a má přístup do lokálního souborového systému (/data/upload
).
HTTP SPARQL endpoint pro dotazování (https://data.gov.cz/sparql
) a SPARQL 1.1 Graph Store HTTP Protocol endpoint pro dotazování (https://data.gov.cz/sparql-graph-crud
), GraphQL endpoint a Linked Data Fragments endpoint jsou veřejně přístupné přes reverse-proxy na NKOD-FRONTEND (nginx).
Na NKOD-DB také běží SSH server, přes který jsou předávány RDF dumpy k nahrání do databáze.
SQL endpoint (1111
) i celý HTTP endpoint (8890
) včetně SPARQL endpointů pro zápis (/sparql-auth
a /sparql-graph-crud-auth
) jsou přístupné minimálně pro server NKOD-ETL.
V této sekci je popsán doporučený postup instalace databáze na stroji NKOD-DB s OS Ubuntu 21.10 ze zdrojových kódů z GitHubu.
- Openlink Virtuoso Open-Source
- Instalace
- Prerekvizity:
sudo apt-get install dpkg-dev build-essential autoconf automake libtool flex bison gperf gawk m4 make odbcinst libxml2-dev libreadline-dev net-tools libssl-dev
- V adresáři
/opt
: Zdrojové kódy develop verze Virtuosasudo git clone https://github.com/openlink/virtuoso-opensource.git -b develop/7
sudo chown -R user:group virtuoso-opensource
cd /opt/virtuoso-opensource
./autogen.sh
./configure --prefix=/usr/local/ --with-readline --program-transform-name="s/isql/isql-v/" --with-layout=Debian --enable-fct-vad
make
sudo make install
- Prerekvizity:
- Konfigurace
- v
/etc/init.d/virtuoso-opensource
je init script - Databáze je nakonfigurována tak, že její data jsou v
/data/virtuoso/db01
- Konfigurace je pak v
/data/virtuoso/db01/virtuoso.ini
- Data pro upload budou v
/data/virtuoso/upload
- Automatické spouštění po startu systému je zajištěno symlinkem na init script z
/etc/rc4.d
- Je potřeba vytvořit uživatele
uploader
, který bude moci do/data/virtuoso/upload
nahrávat data přes SSH/SCP
- v
- Instalace
- GraphQL endpoint
- Běžným způsobem nainstalovat Node.js
- Naklonovat do
/opt/nkod-graphql
- V
/opt
:sudo git clone https://github.com/datagov-cz/nkod-graphql.git
- Vytvořit uživatele
graphql
:sudo adduser graphql --disabled-login
- Předat mu vlastnictví
sudo chown -R graphql:graphql nkod-graphql
- Nainstalovat prerekvizity
sudo -u graphql bash
npm ci
- V
- Zprovoznit jako
systemd
službu pomocínkod-graphql.service
- vyžaduje existenci NKOD JSON dumpu
- Linked Data Fragments endpoint
- Běžným způsobem nainstalovat Node.js
npm install -g @ldf/server
- Do
/opt/ldf-server
umístitconfig.json
- Vytvořit uživatele
ldf
:sudo adduser ldf --disabled-login
- Zprovoznit jako
systemd
službu pomocíldf-server.service
- vyžaduje existenci NKOD HDT dumpu
- Webhooky
- Běžným způsobem nainstalovat
nginx
aphp8.1-fpm
- v
/etc/php/8.1/fpm/pool.d/www.conf
změnit uživatelewww-data
nanginx
, pokudnginx
běží pod uživatelemnginx
- v
/etc/php/8.1/fpm/php.ini
nastavitmax_execution_time = 300
- restart Virtuosa někdy trvá - v
/etc/systemd/system/multi-user.target.wants/php8.1-fpm.service
nastavit v[Service]
KillMode=process
, což zabraňuje zabití Virtuosa po restartu php-fpm
- v
- Pomocí
sudo visudo
nastavit, aby uživatelnginx
mohl signalizovat službě a restartovat Virtuosonginx ALL=(ALL) NOPASSWD: /usr/sbin/service
nginx ALL=(ALL) NOPASSWD: /etc/init.d/virtuoso-opensource
- Do
/data/www/deploy
umístit PHP webhooky
- Běžným způsobem nainstalovat
V této sekci je popsán doporučený postup instalace stroje NKOD-ETL s OS Ubuntu 22.04.
- OpenJDK 17.0.8.1
- Apache Maven
- Git
- node.js 21.2.0
- nginx
- LinkedPipes ETL
- Vyzvedávátko zpráv z ISDS NKOD-ISDS
- Instalace LinkedPipes ETL dle návodu
- Přidán uživatel
lpetl
, pod kterým bude nástroj běžet /opt/lp
:git clone https://github.com/datagov-cz/etl.git
cd etl
mvn install
- v
/opt/lp/etl/deploy/frontend
:npm i
- Přidán uživatel
- Konfigurace LinkedPipes ETL
- konfigurační soubor
/opt/lp/etl/deploy/configuration.properties
, je třeba upravit dle použitých URL - data budou v
/data/lp/etl/working
- logy budou v
/data/lp/etl/logs
- frontend běží na
localhost:8080
- konfigurační soubor
- LinkedPipes ETL jako služby
- Nahrání všech LP-ETL pipeline a nastavení přístupových údajů v příslušných šablonách
- nginx zpřístupňuje
/data/cache
pro přístup zlocalhost
- Instalace NKOD-ISDS
- v
/opt
:git clone https://github.com/datagov-cz/nkod-isds.git
- v
/opt/nkod-isds
:mvn install
- konfigurační soubor v
/opt/nkod-isds/dist/configuration.properties
- v
V této sekci je popsán doporučený postup instalace stroje NKOD-FRONTEND s OS Ubuntu 22.04.
- OpenJDK 17.0.8.1
- Git
- node.js 21.2.0
- nginx 1.25.2
- certbot (letsencrypt.org) - pokud nebude jiný certifikát
- Apache CouchDB 3.2.0
- Apache Solr 8.11.1 nebo docker
- LinkedPipes DCAT-AP Viewer
- LinkedPipes DCAT-AP Forms
- Aplikace
- Běžným způsobem nainstalována Apache CouchDB, Apache Solr, OpenJDK, Node.js, nginx
- Pro Apache Solr lze použít návod pro zprovoznění a nebo předpřipravený docker image, který zařídí i inicializaci pro DCAT-AP Forms a DCAT-AP Viewer
- Instalace LinkedPipes DCAT-AP Forms
- zřídit uživatele
lpdaf
- v
/opt/lp
:git clone https://github.com/datagov-cz/dcat-ap-forms.git
- dále dle návodu
- Instalováno jako služba v
/etc/systemd/system/dcat-ap-forms.service
- zřídit uživatele
- Instalace LinkedPipes DCAT-AP Viewer
- zřídit uživatele lpdav
- v
/opt/lp
:git clone https://github.com/datagov-cz/nkod-registrovane-aplikace
- Dále dle návodu
- Instalováno jako služba v
/etc/systemd/system/registrovane-aplikace.service
- Instalace Prohlížeče aplikací
- v
/opt/lp
:git clone https://github.com/datagov-cz/dcat-ap-viewer.git
- v
- Je potřeba vytvořit uživatele
uploader
, který bude moci do/data/soubor
nahrávat data přes SSH/SCP - nginx reverse proxy na jednolivé části NKOD
- Konfigurace v
/etc/nginx
- Reverse-proxy na SPARQL endpoint NKOD-DB
- Reverse-proxy na GraphQL endpoint NKOD-DB
- Reverse-proxy na Linked Data Fragments endpoint NKOD-DB
- Reverse-proxy na LinkedPipes DCAT-AP Forms
- Reverse-proxy na LinkedPipes DCAT-AP Viewer
- Reverse-proxy na LinkedPipes ETL na NKOD-ETL (zabezpečeno alespoň heslem)
- Konfigurace v
Před naplánováním stahování z ISDS a spouštění pipeline v LP-ETL je třeba systém inicializovat zejména externími číselníky a datovými sadami. Je tedy třeba (nakonfigurovat a) spustit pipeliny v pořadí daném čísly. Tedy:
- 01 Cache externích zdrojů - stáhne evropské číselníky a použité pomocné dokumenty z Google Drive a z RÚIAN
- 02 Seznam OVM - stáhne aktuální datovou sadu Seznam OVM pro kontrolu datových schránek OVM
- 03 Konverze záznamů z PVS do DCAT-AP - Provede úvodní transformaci původních dat ze starého NKOD do aktuálního formátu
- 04 Nahrát externí data do SPARQL endpointu - Nahraje evropské číselníky do databáze
- 05 Nahrát číselníky do Solr pro LP DCAT-AP Forms - Nahraje evropské číselníky do Apache Solr pro LP-DAF
- 06 Nahrát čísleníky do CouchDB pro LP DCAT-AP Viewer - Nahraje evropské číselníky do Apache CouchDB pro LP-DAV
Pak lze v cronu na NKOD-ETL v /etc/cron.d/nkod
naplánovat spouštění NKOD-ISDS a pipeline 07 Spouštěcí pipeline
v LP-ETL, která spouští ostatní pipeline.