Konténerek

Áttekintés

Minden build saját konténerében (Linux névtérrel rendelkező konténer) van elkülönítve.

Az alap egy Ubuntu rendszer, ahol az Odoo összes szükséges függősége, valamint általános hasznos csomagok vannak telepítve.

If your project requires additional Python dependencies, or more recent releases, you can define a requirements.txt file in the root of your branches listing them. The platform will take care to install these dependencies in your containers. The pip requirements specifiers documentation can help you write a requirements.txt file. To have a concrete example, check out the requirements.txt file of Odoo.

A szubmodulok requirements.txt fájljait is figyelembe veszik. A platform az Odoo modulokat tartalmazó mappákban keresi a requirements.txt fájlokat: Nem magában a modul mappájában, hanem a szülő mappájukban.

Könyvtárstruktúra

Mivel a konténerek Ubuntu alapúak, könyvtárstruktúrájuk követi a linux Fájlrendszer Hierarchia Szabványt. Ubuntu fájlrendszer fa áttekintése magyarázza a fő könyvtárakat.

Itt vannak az Odoo.sh releváns könyvtárai:

.
├── home
│    └── odoo
│         ├── src
│         │    ├── odoo                Odoo Community source code
│         │    │    └── odoo-bin       Odoo server executable
│         │    ├── enterprise          Odoo Enterprise source code
│         │    ├── themes              Odoo Themes source code
│         │    └── user                Your repository branch source code
│         ├── data
│         │    ├── filestore           database attachments, as well as the files of binary fields
│         │    └── sessions            visitors and users sessions
│         └── logs
│              ├── install.log         Database installation logs
│              ├── odoo.log            Running server logs
│              ├── update.log          Database updates logs
│              └── pip.log             Python packages installation logs
└── usr
     ├── lib
     │    ├── python2.7
     │         └── dist-packages       Python 2.7 standard libraries
     │    ├── python3
     │         └── dist-packages       Python 3 standard libraries
     │    └── python3.5
     │         └── dist-packages       Python 3.5 standard libraries
     ├── local
     │    └── lib
     │         ├── python2.7
     │         │    └── dist-packages  Python 2.7 third-party libraries
     │         └── python3.5
     │              └── dist-packages  Python 3.5 third-party libraries
     └── usr
          └── bin
               ├── python2.7           Python 2.7 executable
               └── python3.5           Python 3.5 executable

Mind a Python 2.7, mind a 3.5 telepítve van a konténerekben. Azonban:

  • Ha a projektje Odoo 10.0 használatára van konfigurálva, az Odoo szerver Python 2.7-tel fut.

  • Ha a projektje Odoo 11.0 vagy újabb verzió használatára van konfigurálva, az Odoo szerver Python 3.5-tel fut.

Adatbázis shell

Amikor a shell segítségével hozzáfér egy konténerhez, az adatbázist psql használatával érheti el.

[email protected]:~$ psql
psql (9.5.2, server 9.5.11)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

odoo-addons-master-1=>

Legyen óvatos! Használjon tranzakciókat (BEGIN…COMMIT/ROLLBACK) minden sql utasításhoz, amely változásokat eredményez (UPDATE, DELETE, ALTER, …), különösen a termelési adatbázis esetében.

A tranzakciós mechanizmus a biztonsági hálója hibák esetén. Egyszerűen vissza kell vonnia a változtatásait, hogy visszaállítsa az adatbázist az előző állapotába.

Például előfordulhat, hogy elfelejti beállítani a WHERE feltételt.

odoo-addons-master-1=> BEGIN;
BEGIN
odoo-addons-master-1=> UPDATE res_users SET password = '***';
UPDATE 457
odoo-addons-master-1=> ROLLBACK;
ROLLBACK

Ilyen esetben visszaállíthatja a nem kívánt változtatásokat, amelyeket véletlenül végrehajtott, és újraírhatja a kifejezést:

odoo-addons-master-1=> BEGIN;
BEGIN
odoo-addons-master-1=> UPDATE res_users SET password = '***' WHERE id = 1;
UPDATE 1
odoo-addons-master-1=> COMMIT;
COMMIT

Azonban ne felejtse el elkötelezni vagy visszavonni a tranzakcióját, miután ezt megtette. A nyitott tranzakciók zárolhatják a rekordokat a tábláiban, és a futó adatbázis várhat a felszabadításukra. Ez a szerver végtelen ideig tartó lefagyását okozhatja.

Ezenkívül, ha lehetséges, használja a tesztelési adatbázisait a kifejezések előzetes tesztelésére. Ez egy extra biztonsági hálót nyújt.

Odoo szerver futtatása

Odoo szerver példányt indíthat egy konténer shellből. Nem fogja tudni elérni a külvilágból böngészővel, de például megteheti:

  • használja az Odoo shellt,

$  odoo-bin shell
>>> partner = env['res.partner'].search([('email', '=', '[email protected]')], limit=1)
>>> partner.name
'ASUSTeK'
>>> partner.name = 'Odoo'
>>> env['res.partner'].search([('email', '=', '[email protected]')], limit=1).name
'Odoo'
  • telepítsen egy modult,

$  odoo-bin -i sale --without-demo=all --stop-after-init
  • frissítsen egy modult,

$  odoo-bin -u sale --stop-after-init
  • futtassa a teszteket egy modulhoz,

$  odoo-bin -i sale --test-enable --log-level=test --stop-after-init

A fenti parancsokban az argumentum:

  • --without-demo=all megakadályozza, hogy a demó adatok betöltődjenek az összes modulhoz

  • --stop-after-init azonnal leállítja a szerver példányt, miután befejezte a kért műveleteket.

További lehetőségek elérhetők és részletezve vannak a CLI dokumentációban.

You can find in the logs (~/logs/odoo.log) the addons path used by Odoo.sh to run your server. Look for „odoo: addons paths”:

2018-02-19 10:51:39,267 4 INFO ? odoo: Odoo version 18.0
2018-02-19 10:51:39,268 4 INFO ? odoo: Using configuration file at /home/odoo/.config/odoo/odoo.conf
2018-02-19 10:51:39,268 4 INFO ? odoo: addons paths: ['/home/odoo/data/addons/18.0', '/home/odoo/src/user', '/home/odoo/src/enterprise', '/home/odoo/src/themes', '/home/odoo/src/odoo/addons', '/home/odoo/src/odoo/odoo/addons']

Legyen óvatos, különösen a termelési adatbázisával. Az Odoo szerver példány futtatása során végzett műveletek nincsenek elszigetelve: A változások hatással lesznek az adatbázisra. Mindig végezze el a teszteket a tesztelési adatbázisaiban.

Hibakeresés az Odoo.sh-ban

Az Odoo.sh build hibakeresése nem igazán különbözik egy másik Python alkalmazástól. Ez a cikk csak az Odoo.sh platform sajátosságait és korlátait magyarázza el, és feltételezi, hogy már tudja, hogyan kell használni egy hibakeresőt.

Megjegyzés

Ha még nem tudja, hogyan kell hibakeresni egy Python alkalmazást, számos bevezető tanfolyam található könnyen az interneten.

Használhatja a pdb, pudb vagy ipdb eszközöket a kód hibakeresésére az Odoo.sh-ban. Mivel a szerver egy shell-en kívül fut, nem indíthatja el közvetlenül a hibakeresőt az Odoo példány háttérből, mivel a hibakeresőnek szüksége van egy shell-re a működéshez.

  • pdb alapértelmezetten telepítve van minden konténerben.

  • Ha a pudb vagy ipdb használatát tervezi, először telepítenie kell azt.

    Ehhez két lehetősége van:

    • ideiglenes (csak az aktuális buildben):

      $  pip install pudb --user
      

      vagy

      $  pip install ipdb --user
      
    • állandó: adja hozzá a pudb vagy ipdb csomagot a projekt requirements.txt fájljához.

Ezután szerkessze a kódot ott, ahol a hibakeresőt szeretné elindítani, és adja hozzá ezt:

import sys
if sys.__stdin__.isatty():
    import pdb; pdb.set_trace()

A sys.__stdin__.isatty() feltétel egy trükk, amely érzékeli, ha az Odoo-t egy shellből futtatja.

Mentse el a fájlt, majd futtassa az Odoo Shell-t:

$ odoo-bin shell

Végül az Odoo Shell-en keresztül elindíthatja azt a kódrészletet/funkciót/metódust, amelyet hibakeresni szeretne.

Konzol képernyőkép, amelyen a ``pdb`` fut egy Odoo.sh shellben.