Skip to Content

Izvajalne in posodobitvene storitve PMISuite 18

pmisuite18.service zažene Odoo običajno. Ne posodablja repozitorijev, ne namešča prevodnih datotek, ne aktivira jezikov in ne nadgrajuje baz. Ponovni zagon ne sme implicitno izvajati -u all.

pmisuite18-update.service je ločena ročno zagnana nadgradnja baz. Pred delom ustavi pmisuite18.service in jo po uspehu ali napaki pusti ustavljeno.

pmisuite18-update-modules.service uporablja isti vzdrževalni življenjski cikel, vendar namesti in nadgradi izrecne sezname modulov. Odoo lahko doda odvisnosti, samodejne module ali nadgradi prizadete odvisne module.

Priprava in namestitev

Korake izvedite kot skrbnik strežnika v odobrenem vzdrževalnem oknu. Urejanje repozitorija ne namešča ali spreminja tekočih storitev.

  1. Predlogo primerjajte s ciljnim gostiteljem. Uporabnik pmisuite18 in skupina pmiverse morata obstajati. Instanca je /srv/pmiverse/_pmisuite18, njen venv/bin/python mora že imeti odvisnosti; aktivacija okolja ni potrebna. Odoo je repos/OCB/odoo-bin; pot in addons_path uskladite s postavitvijo gostitelja.

Konfiguracija je config/pmisuite18.conf. Ločena predloga je izhodišče, ne gotova produkcijska konfiguracija. Preglejte poverilnice, povezavo/filter baz, dodatke, proxy, vrata in delavce. --database=example_database nadomestite z imenom ali seznamom baz, ločenim z vejicami; nadomestnega imena ne namestite. dbfilter za usmerjanje HTTP preglejte ločeno.

--load izrecno izbira strežniške module; vsi morajo biti na addons_path. Seznam prilagodite gostitelju. CLI nadomesti ustrezne nastavitve konfiguracije. Račun potrebuje branje kode/konfiguracije in pisanje v data_dir ter obstoječi data/log/ zaradi --logfile. Ne spreminjajte rekurzivno lastništva repozitorijev.

Requires=postgresql.service vključi lokalni PostgreSQL in poveže življenjska cikla; vrstni red ne zagotavlja pripravljenosti baze. Pri oddaljenem PostgreSQL odstranite zahtevo in pripadajoči After, uporabite Wants=network-online.target in After=network-online.target. Zaustavljanje dovoli 300 sekund pred prisilnim koncem procesov; po potrebi povečajte TimeoutStopSec. 2. Pripravite in preverite gostiteljsko kopijo; preverjanje ne zažene Odoo:

unit_dir=$(mktemp -d)
cp /srv/pmiverse/_pmiconfig/templates/systemd/odoo18/pmisuite18.service "$unit_dir/"
"${EDITOR:-vi}" "$unit_dir/pmisuite18.service"
systemd-analyze verify "$unit_dir/pmisuite18.service"
  1. Pred nadaljevanjem odpravite napake. Obstoječo enoto in dopolnitve preglejte z systemctl cat pmisuite18.service ter ohranite gostiteljske nastavitve. Nato namestite pregledano kopijo:
sudo install -m 0644 "$unit_dir/pmisuite18.service" /etc/systemd/system/pmisuite18.service
sudo systemctl daemon-reload
sudo systemctl enable pmisuite18.service
sudo systemctl restart pmisuite18.service
sudo systemctl status pmisuite18.service --no-pager
sudo journalctl -u pmisuite18.service -n 100 --no-pager

restart zažene tudi neaktivno storitev. stdout gre v dnevnik in konzolo, stderr v dnevnik. Aplikacijski dnevnik Odoo prek --logfile je /srv/pmiverse/_pmisuite18/data/log/pmisuite.log.

Vzdrževanje repozitorijev in prevodov

Enkratna namestitev posodobitvene storitve

Za pmisuite18-update.service uporabite isti postopek kopiranja/urejanja/preverjanja kot za izvajalno enoto. Uskladite poti, račun/skupino, odvisnost PostgreSQL in seznam --load. example_database nadomestite z izrecnim imenom ali seznamom baz. Račun mora pisati data/log/pmiupgrade18.log. Pred zamenjavo preglejte obstoječo enoto in dopolnitve.

Obe nadgradni predlogi zahtevata /usr/bin/flock (util-linux) in isto datoteko ključavnice v zapisljivi data/ instance. Pot mora biti v obeh nameščenih enotah enaka. Prekrivajoči zagon odpove takoj brez Odoo in ne prekine tekoče nadgradnje. Ključavnice nikoli ne brišite za obhod. Zaščita velja samo za ukaze s to ključavnico, ne druge instance ali ročne nadgradnje. Ob dodajanju modularne enote namestite tudi popravljeno celotno enoto.

Po pregledu in preverjanju kopije v $unit_dir:

sudo install -m 0644 "$unit_dir/pmisuite18-update.service" /etc/systemd/system/pmisuite18-update.service
sudo systemctl daemon-reload

Enote ne omogočite ob zagonu sistema. Namenoma nima [Install], ponavljanja napak ali časovne omejitve zagona. Prej omogočeno posodobitveno enoto onemogočite z sudo systemctl disable pmisuite18-update.service, po potrebi s starim imenom. Ne puščajte druge posodobitvene storitve omogočene vzporedno.

Ukaz doda --i18n-overwrite za ponovno nalaganje obstoječih prevodov in --no-http za preprečitev zahtev. --dev=assets izpusti, ker razvojni način ni potreben za nadgradnje ali uvoz prevodov.

Izvedba posodobitve

Spletna prijava Odoo ni potrebna; delajte v ukazni vrstici strežnika.

  1. Potrdite izrecni seznam baz in uporaben načrt kopije/okrevanja.
  2. Pred spremembo izvajalnih repozitorijev ali nameščenih prevodov izvedite sudo systemctl stop pmisuite18.service. Ustavite tudi druge procese Odoo za iste baze. Izrecna ustavitev ne sproži Restart.
  3. Posodobite repozitorije in namestite zgrajeni i18n_extra po README pmis-i18n-extra.
  4. Zaženite posodobitev in počakajte:
sudo systemctl start pmisuite18-update.service
sudo systemctl show pmisuite18-update.service -p Result -p ExecMainStatus
sudo tail -n 100 /srv/pmiverse/_pmisuite18/data/log/pmiupgrade18.log

Pričakujte Result=success in ExecMainStatus=0 ter preglejte dnevnik. Uspešni oneshot se vrne v inactive (dead); to samo ni napaka. Ob težavah zagona preglejte tudi sudo journalctl -u pmisuite18-update.service -n 100 --no-pager.

Med nadgradnjo ne zaganjajte izvajalne storitve: enoti sta v konfliktu, zato bi ustavili nadgradnjo. Varovalo pokriva samo pmisuite18.service, ne drugih instanc ali ročnih procesov.

Nadgradi nameščene module in ponovno naloži aktivne jezike ter prepiše običajne obstoječe prevode. Za aktivacijo slovenščine in italijanščine v ExecStart dodajte --load-language=sl_SI,it_IT in pred zagonom izvedite sudo systemctl daemon-reload, samo če morajo oba jezika dobiti vse navedene baze; sicer uporabite ločene ciljne zagone. Po aktivaciji možnost odstranite in ponovno naložite. To ni popolno čiščenje opuščenih preglasitev; uporabite navodila projekta prevodov za uskladitev.

  1. Šele po uspehu vseh baz izvedite sudo systemctl start pmisuite18.service in preverite stanje/dnevnike. Ob napaki pustite storitev ustavljeno in raziščite; ponovni zagon ni okrevanje.

Namestitev in nadgradnja izbranih modulov

pmisuite18-update-modules.service namestite po istem postopku kot celotno enoto; ne omogočite je ob zagonu. V gostiteljski kopiji nastavite --database, --init=example_new_module nadomestite s seznamom novih modulov in --update=example_module s seznamom nameščenih za nadgradnjo. Nepotrebno možnost odstranite in ne puščajte nadomestnih imen. Uskladite izvajalni --load; račun mora pisati data/log/pmiupgrade18-modules.log. Po spremembi nameščene enote izvedite sudo systemctl daemon-reload.

Po istih korakih kopije, ustavitve, posodobitve repozitorijev in namestitve prevodov uporabite to enoto:

sudo systemctl start pmisuite18-update-modules.service
sudo systemctl show pmisuite18-update-modules.service -p Result -p ExecMainStatus
sudo tail -n 100 /srv/pmiverse/_pmisuite18/data/log/pmiupgrade18-modules.log

Pred ponovnim zagonom pmisuite18.service preverite uspeh in dnevnik. Ob napaki jo pustite ustavljeno, raziščite in preglejte journal. Konflikt ključavnice povzroči neuspeh brez novega dnevnika nadgradnje Odoo. Obeh nadgradenj ne izvajajte sočasno. Izbrani moduli ne naložijo prevodov vseh nepovezanih modulov; za popravke čez instanco uporabite celotno posodobitev.

Izbira ciljev namestitve in nadgradnje

--init=example_new_module oziroma -i namesti modul; --update=example_module oziroma -u nadgradi nameščenega. -i ... -u all namesti izbrane in nadgradi vse nameščene module; to ni omejena nadgradnja.

Predloga vključuje obe možnosti. Za samo namestitev odstranite --update, za samo nadgradnjo --init. Za namestitev in nadgradnjo vsega podajte seznam --init ter --update=all. Prej preglejte odvisnosti in samodejne namestitve. Pred ponovno uporabo odstranite dokončane namestitvene cilje in po vsaki spremembi enote ponovno naložite systemd.