Skip to content

Instalace

Jaroslav Kvasnica edited this page Feb 13, 2019 · 15 revisions

Jak nainstalovat Grainery

Začíname s Grainery

Prerekvizity Extarc a WebApp (1)(2)

  • Git : (1)(2)
  • Python 3.7 a 3.5 : (1) a (2)
  • Pip3 instalátor dependencies : (1)(2)
  • Mongo DB - např. cez docker : (1)(2)
  • Shellová konzole : (1)
  • Gzip>=1.6 : (1)
  • pracujúce napojenie na storage : (1)

Opt:

  • Screen : (1)

Instalace repo a requirements (1)(2)

#Naklonuj repo

git clone https://github.com/WebarchivCZ/grainery.git

#Nainstaluj dependencies pre Extarc a Web Applikáciu
cd grainery
pip3 install -r requirements.txt

1. Rozběhnutí Extarcu

  • pro extarc musí byt v stejný zložce i knihovna extarc_grainary_mod.py

  • v případě běhu na jiným systému než WebApp stačí pustit instalaci lokálnich requirements pre ExtArc

cd extarc
pip3 install -r requirements

a. Security considerations

Aplikace používa nezapouzdřený shellový dotazování, k zjednodušenému běhu, co může být problém v nezabezpečených sítích, případne připojení cez slabo zašifrované tunely. Modifikace příkazů, pomocí command injection, typu "rm -rf /" alebo iných, rafinovanejších kousků kódu může mít nedozírne následky, i když je vaše úložište jenom read-only.

Pouštěj nad úložišťěm jen lokálne vnitru zabezpečený, nebo izolovaný sítě

Pro minimalizaci rizik ( #3) With great power comes great responsibility) je třeba pouštět aplikaci pod uživatelem, který není root a ideálně ani sudoer. V nasledujícich releasech plánujem uvést automatizovanú verzi spuštení, která poběží pod servisním účtem.

b. System requirements

  • Systém produkce a způsob komprese warců Běh programu potřebuje poměrně malou cache, avšak záleží na dimenzování warců a jejich kompresi. Aplikace vychádzi z aproximace 1 warc 10 GB, které sou následně komprimovaný Gunzipem. V případě jinýho kompresního formátu, bude muset uživatel změnit příkaz k čtení vnitru programu.

  • Úložiště a pásmo Nedílnou podmínkou je dostupnost úložiště a pásmový rozsah (v poměru k prostředkům přideleným Extarcu), který umožní pracovat s danou kvantitou, aby prostředky nebyly čerpány zbytečně. Program je však navržen minimalisticky, a teda není třeba mu vyčlenit pásmo, které se ani zdaleka podobá indexačním procesům.

  • Konfigurace paměti a procesoru Pamět stačí 2GB RAM. Program sa dá klidně spouštět i lokálně na NB, ale viď výše, jenom pro testovací účely. Ideál je pouštění na serveru s min. 8-16 GB RAM na min. osmi jádrů (eg. Intel Xeon E5-26xx, v4+), pro vyšší rychlost. Při přidelení nižších prostředku může taky hezky běžet na pozadí, ako dlouhodobý proces.

  • Konexe na instanci MongoDB Systém na kterém běží Extarc musí mít konexi na cílovou databázi. Komunikace ráta s defaultním portem 27017, který musí být povolen i na systémový úrovni. V inom případě sa to musí deklarovat v aplikaci. V připadě instance na jinom serveri se musí nastavit průchodnost spojení, podle vlastní síťový konfigurace.

c. Run MongoDB

#natáhnutí obrazu
sudo docker pull mongo

#standardní spuštění
sudo docker run -d -p 27017:27017 -v ~/data:/data/db mongo 

# create collections

d. Runnin' Extarc

#copy extarc to top directory of your archive
cp ./extarc/extarc.py /archive/mightyTopFolder
cp ./extarc/grainery.py /archive/mightyTopFolder  
cd /archive/mightyTopFolder


#(1)run in background via bg
python3 Extarc.py > ExtarcYYYYMMDD-folder.log &
disown -h %1
jobs # for controll

#(2)run in background either via screen
screen
python3 Extarc.py > ExtarcYYYYMMDD-folder.log
screen -d

# opakuj nad top adresármi obsahujúcimi warc, cdx, crawl logy, linuxfixity
# spojení disparátnich úložišť je otázkou revize

2. Frontend

System requirements

  1. Grainery je aplikace postavená na frameworku Flask, který je napsaný v Pythonu a je testovaný na Pythonu 3.7.0
  2. Grainery ke svému chodu vyžaduje MongoDB, nejprve vytvořte databázi grainery a v ní tři kolekce: harvest, container, cdx

Collections

  1. Dalším krokem je vytvoření indexu pro full textové vyhledávání v kolekci harvest. Vytvoření indexu v Mongo shellu
use grainery

db.harvest.createIndex( { "harvest.harvestName": "text", "harvest.description": "text", "paths.harvestID": "text" } )
  1. Připojení aplikace k MongoDB se nastavuje v config souboru frontend/config/config.py (při první instalaci přepište config_default.py na config.py)

  2. Aby fungovalo logování systémových chyb a vyhledávání musí být v kořenovém adresáři aplikace existovat adresář /logs.

Konfigurace

Veškeré nastavení probíhá v souboru config.py, kde je možné, mimo nastavení připojení k databázi, zapnout debug mód nebo nastavit defaultní počet řádků pro tabulky