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 nastavit enabled=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:

  1. vytvoření konfiguračního souboru /etc/tryton/trytond.conf
  2. vytvoření konfiguračního souboru /etc/tryton/trytond_log.conf
  3. vytvoření systémového uživatele, pod kterým se bude server trytond spouštět (pokud ho nechceme spouštět pod root(em))
  4. 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

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