Z balíčků pro Python - PyPI¶
Tato část popisuje instalaci Trytonu v OS Ubuntu-server LTS 18.04_amd64. Pro úplnost jen uvedu v základních bodech instalaci a konfiguraci virtuálního Ubuntu-serveru.
Instalace serveru Ubuntu 18.04 LTS¶
- instalace ve virtualizaci KVM, volbou F4 vybráno => minimalistický virtuální stroj
- po instalaci povolen (odkomentován) repozitář „partner“ v
/etc/apt/sources.list
- v souboru
/etc/default/apport
nastavitenabled=0
- update & dist-upgrade
- nainstalovat:
ssh
mc
htop
nano
ntp
- pomocí
netplan
nastavit pevnou IP adresu- restart
Poznámka
Uvedl jsem svoje první rutinní kroky, při instalaci. Nic ovšem nebrání postupovat i jinak.
Instalace SQL serveru¶
Projekt serveru PostgreSQL má vlastní repozitáře s aktuálními verzemi pro vybrané distribuce. V případě OS Ubuntu pak existují repozitáře pro tzv. LTS verze - aktuálně Ubuntu_16.04 a Ubuntu_18.04. V tomto případě tedy pro instalaci PostgreSQL serveru použijeme balíčky z repozitáře projektu PostgreeSQL.
Postup bude následující:
Nejdříve si přidáme repozitář pro LTS verzi a nainstalujeme server postgresql
:
pepa@ubnt: sudo touch /etc/apt/sources.list.d/pgdg.list
pepa@ubnt: sudo nano /etc/apt/sources.list.d/pgdg.list
.. přidáme řádek s adresou a uložíme
..
deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main
..
pepa@ubnt:
.. importujeme klíč a provedeme aktualizaci seznamu balíčků
..
pepa@ubnt: wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
pepa@ubnt: sudo apt-get update
pepa@ubnt:
.. nainstalujeme server PostgreSQL (aktuálně je poslední uvolněná verze 12)
..
pepa@ubnt: sudo apt-get install postgresql-12
Pokračujeme úpravou konfiguračního souboru /etc/postgresql/12/main/postgresql.conf
, kde nastavíme, na jakém rozhraní má přijímat spojení :
pepa@ubnt: sudo nano /etc/postgresql/12/main/postgresql.conf
Vyhledáme sekci Connection Settings
, odkomentujeme listen_addresses
a uvedeme nastavenou 'ip adresu serveru'
, příp. '*'
# - Connection Settings -
listen_addresses = 'ip-adresa-serveru'
.. nebo
listen_addresses = '*'
V konfiguračním souboru /etc/postgresql/12/main/pg_hba.conf
následně povolíme, resp. nastavíme, z jakého rozsahu IP adres a s jakou úrovní autentizace má přijímat spojení :
pepa@ubnt: sudo nano /etc/postgresql/12/main/pg_hba.conf
Poznámka
Předpokládejme, že rozsah lokální sítě bude 192.168.1.0/24
# IPv4 local connections:
host all all 192.168.1.0/24 trust
Nyní si nastavíme heslo pro uživatele postgres
pepa@ubnt: sudo su postgres
postgres@ubnt: psql
postgres=# \password postgres
postgres=# Enter new password:
postgres=# Enter it again:
postgres=# \q
postgres@ubnt: exit
Pro kontrolu můžeme restartovat postgresql
server
pepa@ubnt: sudo systemctl restart postgresql
Přistoupíme k vytvoření uživatele pro budoucí databázi Trytonu a samotné databáze. Postup v terminálu bude následující:
.. přihlásíme se do postgresql
..
pepa@ubnt: sudo -u postgres psql
postgres=#
.. a můžeme iniciovat vytvoření role ~ uživatele a databáze
..
postgres=# CREATE ROLE nazev_uzivatele WITH LOGIN NOSUPERUSER CREATEDB NOCREATEROLE INHERIT NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'HesloUzivatele';
postgres=#
.. nebo
..
postgres=# CREATE USER nazev_uzivatele password 'HesloUzivatele' CREATEDB;
postgres=#
.. nyní vytvoříme databázi pro Tryton
..
postgres=# CREATE DATABASE nazev_databaze WITH OWNER = nazev_uzivatele ENCODING = 'UTF8' LC_COLLATE = 'cs_CZ.UTF-8' LC_CTYPE = 'cs_CZ.UTF-8' TABLESPACE = pg_default CONNECTION LIMIT = -1 TEMPLATE template0;
postgres=#
.. ukončíme
..
postgres=# \q
pepa@ubnt:
.. a restartujeme postgresql server
..
admin@ubn : sudo systemctl restart postgresql
Nyní se můžete přihlásit do PostgreSQL serveru z jiného pc v síti prostřednictvím grafického klinta pgAdmin pod nově vytvořeným uživatelem a zkontrolovat, zda má přístupnou databázi vytvořenou pro Tryton.
Instalace Trytonu¶
Tato část popisuje instalaci Trytonu pomocí balíčkovacího systému pro Python PyPI, kde je projekt registrován. Výhoda tohoto postupu je v tom, že je v naší režii, která verze Trytnu bude instalována vč. stanovení kdy a co bude aktualizováno. Nevýhodou pak je manuální integrace do systému, především vytvoření konfiguračních souborů a startovacích scriptů. Nicméně, vše uvedu na příkladech.
Budeme potřebovat program pip
a protože Tryton od verze 5.0 používá Python verze 3
, nainstalujeme pip
pro Python 3.
pepa@ubnt: sudo apt-get install python3-pip
Základ Trytonu se na rozdíl od distribučních balíčků nejmenuje tryton-server
, ale zkráceně trytond
. Nejdříve si nainstalujeme požadované závislosti, které pro verzi Trytonu 5.0 najdeme na stránkách projektu.
V terminálu zadáme:
.. instalace vyžadovaných závislostí
..
pepa@ubnt: sudo apt-get install python3-werkzeug python3-wrapt python3-lxml python3-relatorio python3-dateutil python3-polib python3-passlib
Poznámka
Vyžadovaný python3
by měl být již automaticky nainstalován v průběhu „“čisté“ instalace Ubuntu-serveru 18.04, balíčky python3-genshi
a python3-magic
byly nainstalovány během instalace balíčku python3-relatorio
.
Může nainstalovat i volitelné závislosti. Zůstaneme v terminálu a zadáme:
.. instalace volitelných závislostí
..
pepa@ubnt: sudo apt-get install python3-psycopg2 python3-pydot python3-levenshteinpython3-bcrypt python3-html2text
Poznámka
psycopg2cffi
není zahrnut do distribučních balíčků, nutno jej tedy instalovat pomocí pip3
V této fázi můžeme přikročit k instalaci Tryton serveru trytond
. Nejdříve si můžeme zjistit, jaké verze máme k dispozici - využijeme faktu, že balíčkovací systém při požadavku instalace neexistujícího balíčku nabídne pro výběr seznam dostupných …
V terminálu zadáme:
.. výpis dostupných balíčků
..
pepa@ubnt: pip3 install trytond==
..
.. a vypsal se nám seznam všech dostupných verzí ...
..
pepa@ubnt:
..
.. pokud požadujeme konkrétní balíček např. z verze 5.0, můžeme rovnou zadat
..
pepa@ubnt: sudo pip3 install "trytond==5.0.15"
..
.. pokud požadujeme nejaktuálnější balíček např. z verze 5.0, zadáme
..
pepa@ubnt: sudo pip3 install "trytond>=5.0,<5.1"
Pro inicializaci databáze a spouštění Tryton vyžaduje konfigurační soubor trytond.conf
. Zůstaneme u zvyklostí a umístíme jej do /etc/tryton/
spolu s konfiguračním souborem trytond_log.conf
pro vytváření log souborů.
pepa@ubnt: sudo mkdir /etc/tryton
pepa@ubnt: sudo touch /etc/tryton/trytond.conf
pepa@ubnt: sudo touch /etc/tryton/trytond_log.conf
Do vytvořených konfiguračních souborů můžeme následně zkopírovat obsah dle níže uvedených vzorů:
/etc/tryton/trytond.conf |
zobrazit |
/etc/tryton/trytond_log.conf |
zobrazit |
Konfigurační soubor Trytonu /etc/tryton/trytond.conf
je ovšem nutno přizpůsobit skutečné realitě. Je nezbytné uvést minimálně dva parametry:
- v sekci
[web]
nastavit na jakém rozhraní a portu bude server naslouchat- v sekci
[database]
nastavit databázové spojení
Dále je dobré v sekci [web]
uvést root adresář pro web klienta (nabízí se domovský adresář systémového uživatele Tryton), hostname pro jmenné zadávání adresy a v sekci [database]
pak root adresář, kde bude server trytond
ukládat soubory - samozřejmě, že uživatel, pod kterým je spouštěn trytond
musí mít do daného adresáře právo zápisu.
[web]
# Settings for the web interface
# Listen on all interfaces (IPv4)
listen = 0.0.0.0:8000
# The hostname for this interface
hostname = tryton.vasedomena.cz
# The root path to retrieve data for GET requests
root = /var/www/tryton-sao
[database]
uri = postgresql://uzivatel_databaze_tryton:heslo_uzivatele_databaze_tryton@localhost:5432/
# The path to the directory where the Tryton Server stores files.
# The server must have write permissions to this directory.
path = /var/lib/tryton
Pro kontrolu si můžeme vypsat nastavené direktivy v trytond.conf
. V terminálu zadáme:
pepa@ubnt: cat /etc/tryton/trytond.conf | egrep -v '^$|^#'
Nyní je třeba provést inicializaci databáze serveru trytond
, během které se nakonfiguruje databáze vytvořená při instalaci PostgreSQL
. Budete vyzváni k zadání emailové adresy administrátora Trytonu, hesla a jeho potvrzení.
V terminálu tedy zadáme příkaz:
pepa@ubnt: sudo trytond-admin -c /etc/tryton/trytond.conf -d nazev_databaze_tryton --all
"admin" email for "tryton": tryton@vasedomena.cz
"admin" password for "tryton": Heslo_pro uživatele_tryton
"admin" password confirmation: Heslo_pro uživatele_tryton
V této fázi je základ Trytonu nastaven nikoliv však spuštěn. Pro zkušební spuštění zadáme v terminálu následující příkaz:
.. start trytond
..
pepa@ubnt: sudo /usr/local/bin/trytond --config /etc/tryton/trytond.conf
V této chvíli jsme schopni se do Trytonu přihlásit prostřednictvím desktopového klienta.
Integrace Trytonu do OS Ubuntu 18.04
Integrace Trytonu do OS Ubuntu představuje manuální vytvoření konfiguračních souborů a startovacích scriptů tak, aby se tryton spouštěl automaticky po startu OS a zapisoval výstupy do logu.
V hlavních bodech se jedná o:
- vytvoření konfiguračního souboru
/etc/tryton/trytond.conf
- vytvoření konfiguračního souboru
/etc/tryton/trytond_log.conf
- vytvoření systémového uživatele, pod kterým se bude server
trytond
spouštět (pokud ho nechceme spouštět podroot(em)
)- vytvoření startovacích scriptů
AD 1. - Konfigurační soubor /etc/tryton/trytond.conf
máme již vytvořený a otestovaný při inicializaci databáze a zkušebním spuštění serveru trytond
.
AD 2. - Rovněž konfigurační soubor trytond_log.conf
v adresáři /etc/tryton/
již máme vytvořen v předchozích krocích. Nyní jen nastavíme požadovanou úroveň logování: DEBUG, INFO, WARNING, ERROR, CRITICAL
v sekci [logger_root]
, resp. direktivě level=
. Současně musíme vytvořit adresář do kterého se mají logy zapisovat - viz. sekce [handler_rotate]
.
Vzor obsahu konfiguračního souboru:
/etc/tryton/trytond_log.conf |
vzor |
Příkaz v terminálu pro vytvoření adresáře logování:
pepa@ubnt: sudo mkdir /var/log/tryton
AD 3. - Tryton je dobré spouštět pod vlastním uživatelem. Přidáme proto systémového uživatele a skupinu tryton, domovský adresář pak využijeme pro ukládání souborů serveru trytond
- jak je uvedeno v /etc/tryton/trytond.conf
v sekci [database]
. Dále musíme zajistit, aby vytvořený uživatel mohl číst konfigurační soubory trytond.conf
a trytond_log.conf
v adresáři /etc/tryton/
(a nikdo jíný, protože obsahují údaje pro přístup do databáze) a taky mohl zapisovat do adresáře /var/log/tryton/
kdy budou vytvářeny logy. Vše zajistíme násedujícími příkazy v terminálu :
pepa@ubnt: sudo adduser --system --home /var/lib/tryton --group tryton
..
.. úprava práv /etc/tryton/*
..
pepa@ubnt: sudo chown -R root:tryton /etc/tryton
pepa@ubnt: sudo chmod -R o-r /etc/tryton
..
.. úprava práv /var/log
..
pepa@ubnt: sudo chown root:tryton /var/log/tryton
pepa@ubnt: sudo chmod g+w /var/log/tryton
AD 4. - V případě instalace Trytonu pomocí distribučních balíčků (Ubuntu 19.10) byly vytvořeny startovací scripty jako pro systemd
, tak pro sysvinit
. V Ubuntu 18.04 však postačí začlenit start Trytonu do systemd
. Z níže poskytnutého vzoru zkopírujeme obsah do souboru trytond.service
v adresáři /etc/systemd/system/
.
Vzor souboru trytond.service
/etc/systemd/system/trytond.service |
vzor |
Postup v terminálu bude následující:
pepa@ubnt: sudo touch /etc/systemd/system/trytond.service
pepa@ubnt: sudo nano /etc/systemd/system/trytond.service
..
.. zkopírujeme obsah ze vzoru a uložíme
..
.. aktivujeme pomocí systemctl
..
pepa@ubnt: sudo systemctl enable trytond.service
..
.. sputíme server trytond
..
pepa@ubnt: sudo systemctl start trytond.service
..
.. a můžeme zkontrolovat stav
..
pepa@ubnt: sudo systemctl status trytond.service
V tuto chvíli máme server trytond
integrován do systému, tj. bude spouštěn automaticky při startu Ubuntu 18.04 a to pod vlastním uživatelem.
Analogicky budeme postupovat pro vytvoření /etc/systemd/system/trytond-cron@.service
a /etc/systemd/system/trytond-worker@.service
.
Přidávání a aktualizace modulů
Nyní si ukážeme, jak se pomocí v balíčkovacím systému PyPI přidávají moduly, které jsme nenainstalovali při prvotní instalaci serveru trytond
. Přehled všech modulů najdete zde. Jako minimum pro vedení účetnictví doporučuji tyto moduly : account
, account_eu
, bank
a account_statement
.
Poznámka
Při instalaci je třeba k názvu modulu přidat trytond_
. Např. - modul account
se přidává jako trytond_account
, modul account_eu
pak jako trytond_account_eu
… atd.
Postup je následující :
- pomocí
pip3
nainstalujeme příslušné balíčky s požadovanými moduly- v serveru
trytond
zaregistrujeme nově nainstalované moduly- po přihlášení do sytému moduly aktivujeme a následně pomocí průvodce nakonfigurujeme.
pepa@ubnt: sudo pip3 install "trytond_account>=5.0,<5.1"
Před aktivací a konfigurací modulu account
musíme přidat schéma pro minimální účtový rozvrh. Soubor se jmenuje minimal_chart_cs.xml
a stáhnout si jej můžete zde
. Nakopírujeme jej do adresáře modulu account
- umístění v našem případě je : /usr/local/lib/python3.6/dist-packages/trytond/modules/account
. V tomto adresáři se nachází rovněž konfigurační soubor tryton.cfg
, který musíme aktualizovat o přidání českého min. účtového rozvrhu - název jednoduše přidáme do seznamu minimálních účtových rozvrhů v sekci xml:
xml:
account.xml
configuration.xml
fiscalyear.xml
period.xml
journal.xml
move.xml
move_template.xml
tax.xml
party.xml
minimal_chart_bg.xml
minimal_chart_ca.xml
minimal_chart_cs.xml
minimal_chart_de.xml
Ukázka instalace vícero modulů najednou:
pepa@ubnt: sudo pip3 install "trytond_account_eu>=5.0,<5.1" "trytond_sale>=5.0,<5.1" "trytond_bank>=5.0,<5.1" "trytond_account_statement>=5.0,<5.1"
- Po nainstralování požadovaných modulů je vhodné nahrát nejaktuálnější překlady - pokud jsou k dispozici. Umístění
.po
souborů je v našem případě následující: - pro zákl. modul
ir
=>/usr/local/lib/python3.6/dist-packages/trytond/ir/locale
- pro zákl. modul
res
=>/usr/local/lib/python3.6/dist-packages/trytond/res/locale
- pro ostatní moduly =>
/usr/local/lib/python3.6/dist-packages/trytond/modules/nazev_modulu/locale
- pro zákl. modul
Po nainstalování modulů musíme aktualizovat seznam modulů zaregistrovaných v serveru trytond
. Po přihlášení na teminál serveru zadáme:
pepa@ubnt: sudo trytond-admin -c /etc/tryton/trytond.conf -d nazev_databaze-trytonu --update-modules-list
..
.. příp. můžeme pro kontrolu restartovat server trytond
..
pepa@ubnt: sudo systemctl restart trytond.service
Soubory Tryton (pro Ubuntu 18.04)
Pozn. - umístění a obsah odpobvídá souborům nainstalovaných pomocí balíčkovacího systému PyPI. Instalace jiným způsobem (např. pomocí distribučních balíčků) může znamenat jiné výchozí umístění souborů.
Konfigurační soubory, které je nutno manuálně vytvořit
/etc/systemd/system/trytond.service |
vzor |
/etc/systemd/system/trytond-cron@.service |
vzor |
/etc/systemd/system/trytond-worker@.service |
vzor |
/etc/tryton/trytond.conf |
vzor |
/etc/tryton/trytond_log.conf |
vzor |
Umístění ostatních souborů
/usr/local/bin/trytond |
/usr/local/bin/trytond-admin |
/usr/local/bin/trytond-cron |
/usr/local/bin/trytond-worker |
/usr/local/lib/python3.6/dist-packages/trytond |
Užitečné odkazy