Odoo (dříve známý jako OpenERP) je samostatně hostovaná sada více než 10 000 aplikací s otevřeným zdrojovým kódem vhodných pro různé obchodní potřeby, včetně CRM, eCommerce, účetnictví, inventáře, projektového řízení a prodejního místa. Tyto aplikace jsou plně integrované a přístupné přes společné webové rozhraní.
V tomto tutoriálu se naučíme nainstalovat Odoo 14 Stack na server založený na Ubuntu 20.04.
Předpoklady
-
Server založený na Ubuntu 20.04 s minimálně 2 GB RAM pro hostování Odoo Stack.
-
Druhý server založený na Ubuntu 20.04 s minimálně 2 GB RAM pro hostování databáze PostgreSQL. Můžete však nainstalovat databázi na stejný server jako Odoo, ale pro produkční prostředí se důrazně doporučuje nainstalovat ji na samostatný server. Můžete si také vybrat kteroukoli z možností spravované databáze dostupných od libovolného poskytovatele dle vašeho výběru.
-
Požadavky na RAM budou záviset na počtu souběžných uživatelů, kteří budou zásobník používat. Podrobný návod, jak vypočítat systémové požadavky, lze nalézt v dokumentaci Odoo.
-
Udržujte své systémy aktualizované.
$ sudo apt update $ sudo apt upgrade
-
Uživatel bez oprávnění root s právy sudo na obou serverech.
Konfigurace pravidel brány firewall
Pro účely tohoto tutoriálu budeme předpokládat, že máte ufw
firewall nainstalovaný na obou serverech.
Na serveru Odoo budeme potřebovat, aby byly otevřené porty 22, 80, 443, 6010, 5432 a 8069. 22 se používá pro SSH, 80 je pro HTTP, 443 je pro HTTPS, 6010 se používá pro Odoo komunikaci, 5432 je používáno PostgreSQL a 8069 je používáno serverovou aplikací Odoo.
Spuštěním následujících příkazů otevřete požadované porty na serveru Odoo.
$ sudo ufw allow "OpenSSH"
$ sudo ufw allow 80,443,6010,5432,8069,8072/tcp
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw allow 6010/tcp
$ sudo ufw allow 5432/tcp
$ sudo ufw allow 8069/tcp
$ sudo ufw allow 8072/tcp
Na serveru PostgreSQL musíme otevřít porty 22, 6010 a 5432. Otevřete je pomocí příkazů, které jsme právě probrali.
Přiřadit názvy hostitelů
Můžete použít adresy IP serverů nebo použít jejich plně kvalifikované názvy domén (FQDN), pokud jsou k dispozici. V našem tutoriálu budeme používat FQDN a k tomu potřebujeme nastavit názvy hostitelů na obou serverech.
Na serveru Odoo otevřete /etc/hosts
soubor.
$ sudo nano /etc/hosts
Ujistěte se, že to vypadá následovně.
127.0.0.1 localhost
127.0.0.1 odoo.yourdomain.com odoo
10.1.1.10 postgresql.yourdomain.com postgresql
Na serveru PostgreSQL otevřete soubor a ujistěte se, že vypadá následovně.
127.0.0.1 localhost
127.0.0.1 postgresql.yourdomain.com postgresql
10.1.2.10 odoo.yourdomain.com odoo
Stiskněte Ctrl + X zavřete editor a stiskněte Y až budete vyzváni k uložení souboru.
Instalace a konfigurace PostgreSQL
Ubuntu 20.04 se standardně dodává s PostgreSQL 12 a my to nainstalujeme. Spusťte následující příkaz na serveru PostgreSQL.
$ sudo apt install postgresql-12 postgresql-server-dev-12
Dále musíme vytvořit databázového uživatele odoo.
$ sudo -u postgres createuser odoo -U postgres -dP
Možnost -u
provede příkaz jako postgres
uživatel.
Možnost -U
označte uživatelské jméno, ke kterému se chcete připojit.
Možnost -d
uděluje uživateli oprávnění k vytváření databází.
Možnost -p
vyzve k zadání nového hesla uživatele.
Konfigurace hostitelského ověřování
Abychom se mohli připojit k serveru Odoo, potřebujeme udělit oprávnění službě PostgreSQL.
Nejprve zastavte službu PostgreSQL.
$ sudo systemctl stop postgresql
Otevřete soubor /etc/postgresql/12/main/pg_hba.conf
pro úpravy.
$ sudo nano /etc/postgresql/12/main/pg_hba.conf
Vložte následující řádek na konec.
host all odoo odoo.yourdomain.com md5
Tento řádek uděluje oprávnění odoo
pro připojení ke všem databázím na tomto serveru. Místo použití all
můžete zadat i název databází klíčové slovo.
Stiskněte Ctrl + X zavřete editor a stiskněte Y až budete vyzváni k uložení souboru.
Konfigurovat adresu pro poslech PostgreSQL
Dále musíme povolit databázovému serveru naslouchat vzdáleným připojením. Otevřete soubor /etc/postgresql/12/main/postgresql.conf
pro úpravy.
$ sudo nano /etc/postgresql/12/main/postgresql.conf
Změňte řádek listen_addresses
od
#listen_addresses = 'localhost' # what IP address(es) to listen on;
do.
#From CONNECTIONS AND AUTHENTICATION Section
listen_addresses = '*'
*
znamená, že bude naslouchat všem IP adresám. Můžete ji změnit na IP adresu vaší instance odoo.
Stiskněte Ctrl + X zavřete editor a stiskněte Y až budete vyzváni k uložení souboru.
Povolení a spuštění služby PostgreSQL
Protože je naše konfigurace hotová, je čas spustit a povolit službu PostgreSQL.
$ sudo systemctl start postgresql && sudo systemctl enable postgresql
Instalovat Odoo
Instalace závislostí a příprava na instalaci
Vytvořte nového uživatele systému pro správu procesů Odoo na serveru Odoo.
$ sudo adduser --system --home=/opt/odoo --group odoo
Potřebujeme nainstalovat některé systémové závislosti, ale nejprve musíme povolit zdrojová úložiště. Chcete-li to provést, zálohujte původní seznam zdrojů a poté povolte všechna zdrojová úložiště a aktualizujte seznam úložišť.
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list~
$ sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
$ sudo apt update
Nainstalujte systémové závislosti požadované pro nastavení Odoo 14.
$ sudo apt install python3-pip python3-suds python3-all-dev python3-venv python3-dev python3-setuptools python3-tk libxml2-dev libxslt1-dev libevent-dev libsasl2-dev libldap2-dev pkg-config libtiff5-dev libjpeg8-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev liblcms2-utils libwebp-dev tcl8.6-dev tk8.6-dev libyaml-dev fontconfig xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils libpq-dev
$ sudo apt build-dep lxml
Nainstalujte Nodejs.
$ sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt install nodejs
Nainstalujte balíček Less CSS pomocí Node.
$ sudo npm install -g less less-plugin-clean-css
Stáhněte si wkhtmltopdf
balíček verze 0.12.6.
$ cd /tmp
$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
Nainstalujte balíček.
$ sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
Aby bylo zajištěno, že wkhtmltopdf
funguje správně, zkopírujte binární soubory do /usr/bin
a udělte jim patřičná oprávnění.
$ sudo cp /usr/local/bin/wkhtmlto* /usr/bin/
$ sudo chmod a+x /usr/bin/wk*
$ cd ~
Stáhnout soubory Odoo
Naklonujte úložiště Github Odoo do svého systému.
$ sudo git clone https://github.com/odoo/odoo.git --depth 1 --branch 14.0 --single-branch /opt/odoo
Pro naše účely zkopírujeme Odoo do /opt/odoo
adresář, odkud bude nainstalován.
Nastavení prostředí Virtualenv Python
Tento krok je volitelný, ale doporučuje se, protože virtuální prostředí pythonu pro Odoo pomůže vyhnout se konfliktům s moduly Pythonu operačního systému, zejména při provádění upgradů OS.
K tomu použijeme virtualenv
.
-
Vytvořte nový
virtualenv
prostředí pro Odoo.$ python3 -m venv /home/<username>/odoo-env
-
Aktivujte virtuální prostředí. Vytváříme prostředí pod domovským adresářem uživatele systému. Můžete si vybrat libovolné umístění.
$ source /home/<username>/odoo-env/bin/activate
-
Pro každý případ aktualizujte PIP.
(odoo-env) $ pip3 install --upgrade pip
-
Nainstalujte Pythonovo kolo do virtuálního prostředí.
$ pip3 install wheel
Instalovat závislosti Pythonu
Nainstalujte závislosti Pythonu požadované Odoo 14.
$ pip3 install -r /opt/odoo/doc/requirements.txt
$ pip3 install -r /opt/odoo/requirements.txt
Instalace požadavků bude nějakou dobu trvat, takže buďte trpěliví.
Zkontrolujte, zda jsou požadavky nainstalovány správně, v seznamu nainstalovaných modulů Pythonu.
$ pip3 list
Package Version
----------------------------- ---------
alabaster 0.7.12
appdirs 1.4.4
attrs 20.3.0
Babel 2.6.0
beautifulsoup4 4.9.3
cached-property 1.5.2
certifi 2020.12.5
chardet 3.0.4
decorator 4.3.0
defusedxml 0.7.1
docutils 0.14
ebaysdk 2.1.5
feedparser 5.2.1
freezegun 0.3.15
gevent 20.9.0
greenlet 0.4.17
html2text 2018.1.9
idna 2.6
imagesize 1.2.0
isodate 0.6.0
Jinja2 2.11.2
libsass 0.17.0
lxml 4.6.1
Mako 1.0.7
MarkupSafe 1.1.0
num2words 0.5.6
ofxparse 0.19
packaging 20.9
passlib 1.7.1
Pillow 8.0.1
pip 21.0.1
pkg-resources 0.0.0
polib 1.1.0
psutil 5.6.6
psycopg2 2.8.5
pyasn1 0.4.8
pyasn1-modules 0.2.8
pydot 1.4.1
Pygments 2.8.1
pyparsing 2.4.7
PyPDF2 1.26.0
pyserial 3.4
python-dateutil 2.7.3
python-ldap 3.1.0
python-stdnum 1.8
pytz 2019.1
pyusb 1.0.2
qrcode 6.1
reportlab 3.5.55
requests 2.21.0
requests-toolbelt 0.9.1
setuptools 44.0.0
six 1.15.0
snowballstemmer 2.1.0
soupsieve 2.2
Sphinx 3.5.2
sphinx-patchqueue 1.0.4
sphinxcontrib-applehelp 1.0.2
sphinxcontrib-devhelp 1.0.2
sphinxcontrib-htmlhelp 1.0.3
sphinxcontrib-jsmath 1.0.1
sphinxcontrib-qthelp 1.0.3
sphinxcontrib-serializinghtml 1.1.4
unidiff 0.6.0
urllib3 1.24.3
vobject 0.9.6.1
Werkzeug 0.16.1
wheel 0.36.2
xlrd 1.2.0
XlsxWriter 1.1.2
xlwt 1.3.0
zeep 3.2.0
zope.event 4.5.0
zope.interface 5.2.0
Ukončete virtuální prostředí Pythonu.
$ deactivate
Konfigurovat Odoo
Zkopírujte výchozí konfigurační soubor Odoo a vytvořte nový.
$ sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server.conf
Otevřete soubor pro úpravy.
$ sudo nano /etc/odoo-server.conf
Upravte soubor tak, aby vypadal následovně.
[options]
; This is the password that allows database operations:
admin_passwd = admin
db_host = postgresql.yourdomain.com
db_port = False
db_user = odoo
db_password = odoo_password
addons_path = /opt/odoo/addons
xmlrpc_port = 8069
Stiskněte Ctrl + X zavřete editor a stiskněte Y až budete vyzváni k uložení souboru.
Možnost admin_passwd
je heslo, které umožňuje administrativní operace v rámci GUI Odoo. Ujistěte se, že jste zvolili bezpečné heslo.
Možnost db_host
je FQDN nebo IP adresa serveru PostgreSQL.
Možnost db_port
je nastaven na false, protože se používá výchozí port PostgreSQL 5432. Pokud chcete použít jiný port, budete muset tuto hodnotu aktualizovat.
Možnost db_user
je jméno uživatele PostgreSQL.
Možnost db_password
je uživatelské heslo PostgreSQL 'odoo', které jsme dříve vytvořili na serveru PostgreSQL.
Možnost addons_path
je výchozí cesta k doplňkům. Můžete také přidat vlastní cestu pro doplňky a oddělit je čárkami.
Možnost xmlrpc_port
je port, na kterém Odoo naslouchá.
Vytvořit službu Odoo
Abychom zajistili, že Odoo bude fungovat i po restartu systému, musíme pro něj vytvořit službu.
Vytvořte soubor /lib/systemd/system/odoo-server.service
a otevřete jej pro úpravy.
$ sudo nano /lib/systemd/system/odoo-server.service
Vložte do něj následující kód.
[Unit]
Description=Odoo Open Source ERP and CRM
[Service]
Type=simple
PermissionsStartOnly=true
SyslogIdentifier=odoo-server
User=odoo
Group=odoo
ExecStart=/home/<username>/odoo-env/bin/python3 /opt/odoo/odoo-bin --config=/etc/odoo-server.conf --addons-path=/opt/odoo/addons/
WorkingDirectory=/opt/odoo/
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
Nahraďte /home/<username>
s umístěním, které jste vybrali pro instalaci virtuálního prostředí Python.
Stiskněte Ctrl + X zavřete editor a stiskněte Y až budete vyzváni k uložení souboru.
Nastavit oprávnění souboru
Nastavte oprávnění na odoo-server.service
soubor, takže jej může číst nebo spustit pouze uživatel Odoo.
$ sudo chmod 755 /lib/systemd/system/odoo-server.service
$ sudo chown odoo: /lib/systemd/system/odoo-server.service
Nastavte vlastnictví v prostředí Pythonu a instalačním adresáři Odoo.
$ sudo chown -R odoo: /opt/odoo/
$ sudo chown -R odoo: /home/<username>/odoo-env
Omezte konfigurační soubor Odoo.
$ sudo chown odoo: /etc/odoo-server.conf
$ sudo chmod 640 /etc/odoo-server.conf
Spustit server Odoo
Spusťte a povolte server Odoo.
$ sudo systemctl start odoo-server
$ sudo systemctl enable odoo-server
Zkontrolujte stav serveru.
$ sudo systemctl status odoo-server
V prohlížeči otevřete adresu URL http://<yourIPaddress>:8069
nebo http://odoo.yourdomain.com:8069
. Pokud vše funguje správně, měli byste vidět obrazovku vytváření databáze Odoo.
Vyplňte všechna pole. Zkontrolujte Demo Data
do pole naplňte databázi ukázkovými daty a poté klikněte na Vytvořit databázi tlačítko.
Dále se vám zobrazí seznam aplikací, které si můžete vybrat a vybrat.
Při prvním vytvoření databáze bude načítání stránky doplňků chvíli trvat, takže stránku neobnovujte.
Instalace a konfigurace Nginx
Doposud jsme ke spuštění zásobníku používali server Odoo. Ale v ideálním případě je lepší jej spustit na Nginx pomocí proxy, protože to nám umožní nainstalovat na něj SSL.
Nainstalujte Nginx.
$ sudo apt install nginx
Abychom to mohli spustit přes Nginx, musíme spustit Odoo na localhost. Chcete-li to změnit, zastavte službu Odoo.
$ sudo systemctl stop odoo-server
Otevřete konfigurační soubor serveru Odoo.
$ sudo nano /etc/odoo-server.conf
Přidejte k tomu následující řádky.
xmlrpc_interface = 127.0.0.1
proxy_mode = True
Vytvořte konfigurační soubor Nginx pro Odoo.
$ sudo nano /etc/nginx/sites-available/odoo.conf
Vložte kód níže.
#odoo server
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
# http -> https
server {
listen 80;
server_name odoo.yourdomain.com;
rewrite ^(.*) https://$host$1 permanent;
}
server {
listen 443 ssl http2;
server_name odoo.yourdomain.com;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
# Add Headers for odoo proxy mode
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
# SSL parameters
ssl_certificate /etc/letsencrypt/live/odoo.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.yourdomain.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# log
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
# Redirect longpoll requests to odoo longpolling port
location /longpolling {
proxy_pass http://odoochat;
}
# Redirect requests to odoo backend server
location / {
proxy_redirect off;
proxy_pass http://odoo;
}
# common gzip
gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
Stiskněte Ctrl + X zavřete editor a stiskněte Y až budete vyzváni k uložení souboru.
Tento konfigurační soubor aktivujte jeho propojením s sites-enabled
adresář.
$ sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
Otestujte konfiguraci Nginx.
$ sudo nginx -t
Instalovat SSL
Nainstalujeme SSL pomocí služby Let's Encrypt.
Za tímto účelem si nainstalujte Certbot.
$ sudo apt install certbot
Zastavte Nginx, protože to bude narušovat proces Certbot.
$ sudo systemctl stop nginx
Vygenerujte certifikát. Potřebujeme také vytvořit certifikát DHParams.
$ sudo certbot certonly --standalone -d odoo.yourdomain.com --preferred-challenges http --agree-tos -n -m [email protected] --keep-until-expiring
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Musíme také nastavit úlohu cron pro automatické obnovení SSL. Chcete-li otevřít editor crontab, spusťte následující příkaz.
$ sudo crontab -e
Vložte následující řádek do spodní části.
25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”
Výše uvedená úloha cron spustí certbot každý den ve 2:25. Můžete jej změnit na cokoli chcete.
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Spustit Odoo
Nyní, když je vše nastaveno, můžeme znovu spustit server Odoo.
$ sudo systemctl start odoo-server
Spusťte Odoo ve svém prohlížeči přes https://odoo.yourdomain.com
. Zobrazí se obrazovka popsaná dříve. Zadejte požadované údaje pro vytvoření databáze a měli byste se přihlásit do Odoo a zobrazit obrazovku jako je tato.
Závěr
Tímto končí náš tutoriál o instalaci Odoo na server Ubuntu 20.04. Pokud máte nějaké dotazy, napište je do komentářů níže.