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. .. |Ubuntu-server_LTS_18.04_amd64| raw:: html Ubuntu-server LTS 18.04_amd64 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 .. note:: 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``: .. code-block:: none 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í : .. code-block:: none 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. ``'*'`` .. code-block:: none # - 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í : .. code-block:: none pepa@ubnt: sudo nano /etc/postgresql/12/main/pg_hba.conf .. note:: Předpokládejme, že rozsah lokální sítě bude ``192.168.1.0/24`` .. code-block:: none # IPv4 local connections: host all all 192.168.1.0/24 trust Nyní si nastavíme heslo pro uživatele **postgres** .. code-block:: none 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 .. code-block:: none 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í: .. code-block:: none .. 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. .. code-block:: none 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: .. |stránkách projektu| raw:: html stránkách projektu .. code-block:: none .. 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 .. note:: 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: .. code-block:: none .. instalace volitelných závislostí .. pepa@ubnt: sudo apt-get install python3-psycopg2 python3-pydot python3-levenshteinpython3-bcrypt python3-html2text .. note:: ``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: .. code-block:: none .. 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ů. .. code-block:: none 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ů: .. list-table:: :widths: 60 15 :header-rows: 0 * - ``/etc/tryton/trytond.conf`` - :download:`zobrazit <../../../config_files/etc_tryton_trytond.conf>` * - ``/etc/tryton/trytond_log.conf`` - :download:`zobrazit <../../../config_files/etc_tryton_trytond_log.conf>` 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. .. literalinclude:: ../../../config_files/etc_tryton_trytond.conf :lines: 11,12,17,18,22,23,24,26,30,31,35,51,53,54,56 :emphasize-lines: 4,7,9,12,15 Pro kontrolu si můžeme vypsat nastavené direktivy v ``trytond.conf``. V terminálu zadáme: .. code-block:: none 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: .. code-block:: none 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: .. code-block:: none .. 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. .. rubric:: 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: .. list-table:: :widths: 70 15 :header-rows: 0 * - ``/etc/tryton/trytond_log.conf`` - :download:`vzor <../../../config_files/etc_tryton_trytond_log.conf>` Příkaz v terminálu pro vytvoření adresáře logování: .. code-block:: none 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 : .. code-block:: none 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`` .. list-table:: :widths: 70 15 :header-rows: 0 * - ``/etc/systemd/system/trytond.service`` - :download:`vzor <../../../config_files/etc_systemd_system_trytond.service>` Postup v terminálu bude následující: .. code-block:: none 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``. .. rubric:: 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 |list_modules|. **Jako minimum pro vedení účetnictví** doporučuji tyto moduly : ``account``, ``account_eu``, ``bank`` a ``account_statement``. .. note:: 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. .. |list_modules| raw:: html zde 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. .. code-block:: none 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 :download:`zde <../../../accounting/minimal_chart_cs.xml>`. 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:`` .. literalinclude:: ../../../config_files/modules_account_tryton.cfg :lines: 9-22 :emphasize-lines: 1,13 Ukázka instalace vícero modulů najednou: .. code-block:: none 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: .. code-block:: none 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 .. rubric:: 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 .. list-table:: :widths: 70 15 :header-rows: 0 * - ``/etc/systemd/system/trytond.service`` - :download:`vzor <../../../config_files/etc_systemd_system_trytond.service>` * - ``/etc/systemd/system/trytond-cron@.service`` - :download:`vzor <../../../config_files/etc_systemd_system_trytond-cron@.service>` * - ``/etc/systemd/system/trytond-worker@.service`` - :download:`vzor <../../../config_files/etc_systemd_system_trytond-worker@.service>` * - ``/etc/tryton/trytond.conf`` - :download:`vzor <../../../config_files/etc_tryton_trytond.conf>` * - ``/etc/tryton/trytond_log.conf`` - :download:`vzor <../../../config_files/etc_tryton_trytond_log.conf>` Umístění ostatních souborů .. list-table:: :widths: 60 :header-rows: 0 * - ``/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`` .. rubric:: Užitečné odkazy * |Tryton verze 5.0_en| * |Kombinace příkazů pip| * |Server trytond| * |Přehled modulů| * |Projekt pip-check| .. |Tryton verze 5.0_en| raw:: html Tryton verze 5.0_en .. |kombinace příkazů pip| raw:: html Kombinace příkazů pip .. |server trytond| raw:: html Server trytond .. |přehled modulů| raw:: html Přehled modulů .. |projekt pip-check| raw:: html Projekt pip-check