Skip to content

Instalace

JanMeritus edited this page Nov 30, 2018 · 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 requirements.txt

1. Rozběhnutí Extarcu

  • pro extarc musí byt v stejný zložce i python mod

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.

Púštaj nad úložišťom len lokálne vnútry zabezpečenej, alebo izolovanej siete

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ě spustiť i lokálně na NB, ale viď výše, jenom pro testovací účely. Ideál pouštění na serveru s min. 8-16 GB RAM na (několika) osmi jádrů (eg. Intel Xeon E5-26xx, v4+), pro vyšší rychlost. Při přidelení nižších prostředku může hezky běžet na pozadí.

  • 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

docker 

d. Runnin' Extarc

#copy extarc to top directory of your archive
cp ./extarc /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

  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
  3. Dalším krokem je vytvoření indexu pro full textové vyhledávání v kolekci harvest. Vytvoření indexu v Mongo shellu
set db grainery

db.harvest.createIndex( { "harvest.name": "text", "harvest.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. Dále potřebuje k chodu Python balíčky uvedené v souboru requirements.txt, instalace na MacOs pomocí PIPu

pip3 install -r requirements.txt

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

Clone this wiki locally