-
Notifications
You must be signed in to change notification settings - Fork 0
Instalace
- 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)
#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
-
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
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.
-
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.
#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
#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
- Grainery je aplikace postavená na frameworku Flask, který je napsaný v Pythonu a je testovaný na Pythonu 3.7.0
- Grainery ke svému chodu vyžaduje MongoDB, nejprve vytvořte databázi grainery a v ní tři kolekce: harvest, container, cdx
- 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" } )
- Připojení aplikace k MongoDB se nastavuje v config souboru frontend/config/config.py (při první instalaci přepište
config_default.py
naconfig.py
)
Grainery má defaultně nastavenou produkční konfiguraci, v případě potřeby je to možné změnit v souboru app.py, kde se přepíše řádek Configuration = cfg.ProductionConfig
na Configuration = cfg.DevelopmentConfig
Postup extrakce provozních metadat
Grainery frontend