Odoo 14 ERP Software installeren op Ubuntu 20.04
Odoo (vroeger bekend als OpenERP) is een zelf gehoste suite van meer dan 10.000 open source toepassingen die geschikt zijn voor uiteenlopende bedrijfsbehoeften, zoals CRM, eCommerce, boekhouding, voorraadbeheer, projectbeheer en verkooppunt. Deze toepassingen zijn volledig geïntegreerd en toegankelijk via een gemeenschappelijke webinterface.
In deze handleiding leren we Odoo 14 Stack te installeren op een Ubuntu 20.04 gebaseerde server.
Vereisten
Een Ubuntu 20.04 gebaseerde server met een minimum van 2GB RAM om Odoo Stack te hosten.
Een tweede Ubuntu 20.04 gebaseerde server met minimaal 2GB RAM voor het hosten van de PostgreSQL database. Je kunt de database wel op dezelfde server als Odoo installeren, maar voor productie-omgevingen is het sterk aan te bevelen dat je ze op een aparte server installeert. Je kunt ook kiezen voor een van de beheerde database opties van een aanbieder naar keuze.
Het benodigde RAM geheugen hangt af van het aantal gelijktijdige gebruikers dat de stack zal gebruiken. Een gedetailleerde gids over hoe je de systeemvereisten berekent, vind je in Odoo’s documentatie.
Houd je systemen bijgewerkt.
$ sudo apt update $ sudo apt upgrade
Een niet-root gebruiker met sudo rechten op beide servers.
Stel firewall regels in
Voor het doel van deze handleiding nemen we aan dat je ufw
firewall op beide servers geïnstalleerd hebt.
Op de Odoo server moeten de poorten 22, 80, 443, 6010, 5432 en 8069 open staan. 22 wordt gebruikt voor SSH, 80 is voor HTTP, 443 is voor HTTPS, 6010 wordt gebruikt voor Odoo communicatie, 5432 wordt gebruikt door PostgreSQL en 8069 wordt gebruikt door de Odoo server toepassing.
Voer de volgende commando's uit om de vereiste poorten op de Odoo server te openen.
$ 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
Op de PostgreSQL server moeten we poorten 22, 6010 en 5432 openen. Open ze met de commando's die we zojuist bespraken.
Hostnamen toekennen
Je kunt de IP adressen van de servers gebruiken of hun Fully Qualified Domain Names (FQDN), indien beschikbaar. Voor onze handleiding zullen we FQDNs gebruiken en daarvoor moeten we op beide servers hostnamen instellen.
Open op de Odoo server het /etc/hosts
bestand.
$ sudo nano /etc/hosts
Zorg ervoor dat het er als volgt uitziet.
127.0.0.1 localhost
127.0.0.1 odoo.yourdomain.com odoo
10.1.1.10 postgresql.yourdomain.com postgresql
Open op de PostgreSQL server het bestand en zorg dat het er uitziet als het volgende.
127.0.0.1 localhost
127.0.0.1 postgresql.yourdomain.com postgresql
10.1.2.10 odoo.yourdomain.com odoo
Druk op Ctrl + X om de editor te sluiten en druk op Y als gevraagd wordt om het bestand op te slaan.
Installeer en configureer PostgreSQL
Ubuntu 20.04 wordt standaard geleverd met PostgreSQL 12 en we zullen dat installeren. Voer het volgende commando uit op de PostgreSQL server.
$ sudo apt install postgresql-12 postgresql-server-dev-12
Vervolgens moeten we een database gebruiker aanmaken odoo.
$ sudo -u postgres createuser odoo -U postgres -dP
De optie -u
voert het commando uit als gebruiker postgres
.
De optie -U
geeft de gebruikersnaam aan om mee te verbinden.
De optie -d
geeft de gebruiker toestemming om databases aan te maken.
De optie -p
vraagt om het wachtwoord van de nieuwe gebruiker.
Configureer Host-Based Authentication
We moeten toestemming geven aan de PostgreSQL dienst om verbinding te kunnen maken met de Odoo server.
Stop eerst de PostgreSQL dienst.
$ sudo systemctl stop postgresql
Open het bestand /etc/postgresql/12/main/pg_hba.conf
om het te bewerken.
$ sudo nano /etc/postgresql/12/main/pg_hba.conf
Plak de volgende regel aan het eind.
host all odoo odoo.yourdomain.com md5
Deze regel geeft toestemming aan de odoo
gebruiker om verbinding te maken met alle databases binnen deze server. Je kunt ook de naam van de databases opgeven in plaats van het sleutelwoord all
te gebruiken.
Druk op Ctrl + X om de editor te sluiten en op Y wanneer je gevraagd wordt het bestand op te slaan.
Stel het PostgreSQL luisteradres in
Vervolgens moeten we de databaseserver toestaan te luisteren naar verbindingen op afstand. Open het bestand /etc/postgresql/12/main/postgresql.conf
om het te bewerken.
$ sudo nano /etc/postgresql/12/main/postgresql.conf
Verander de regel listen_addresses
van
#listen_addresses = 'localhost' # what IP address(es) to listen on;
in.
#From CONNECTIONS AND AUTHENTICATION Section
listen_addresses = '*'
De *
betekent dat hij naar alle IP adressen zal luisteren. Je kunt het veranderen in het IP adres van je odoo instantie.
Druk op Ctrl + X om de editor te sluiten en druk op Y als gevraagd wordt om het bestand op te slaan.
Schakel de PostgreSQL dienst in en start hem
Nu onze configuratie klaar is, is het tijd om de PostgreSQL dienst te starten en in te schakelen.
$ sudo systemctl start postgresql && sudo systemctl enable postgresql
Installeer Odoo
Installeer afhankelijkheden en bereid de installatie voor
Maak een nieuwe systeemgebruiker aan voor het beheer van de Odoo processen op de Odoo server.
$ sudo adduser --system --home=/opt/odoo --group odoo
We moeten enkele systeem afhankelijkheden installeren, maar eerst moeten we bron repositories inschakelen. Maak daarvoor een back-up van de oorspronkelijke bronnenlijst en schakel dan alle bronrepositories in en werk de repository lijst bij.
$ 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
Installeer systeemafhankelijkheden die nodig zijn voor de opzet van 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
Installeer Nodejs.
$ sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt install nodejs
Installeer het Less CSS pakket met behulp van Node.
$ sudo npm install -g less less-plugin-clean-css
Download het pakket wkhtmltopdf
versie 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
Installeer het pakket.
$ sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
Om te zorgen dat wkhtmltopdf
goed werkt, kopieer je de binaries naar /usr/bin
en geef je ze de juiste permissies.
$ sudo cp /usr/local/bin/wkhtmlto* /usr/bin/
$ sudo chmod a+x /usr/bin/wk*
$ cd ~
Odoo bestanden downloaden
Kloon Odoo's Github repository naar je systeem.
$ sudo git clone https://github.com/odoo/odoo.git --depth 1 --branch 14.0 --single-branch /opt/odoo
Voor ons doel kopiëren we Odoo naar de /opt/odoo
directory van waaruit het geïnstalleerd zal worden.
Zet Virtualenv Python omgeving op
Deze stap is optioneel maar wordt aanbevolen omdat een virtuele python omgeving voor Odoo conflicten met Python modules van het besturingssysteem helpt voorkomen, vooral bij het uitvoeren van OS upgrades.
Hiervoor zullen we virtualenv
gebruiken .
Maak een nieuwe
virtualenv
omgeving voor Odoo.$ python3 -m venv /home/<username>/odoo-env
Activeer de virtuele omgeving. We maken een omgeving onder de thuismap van de systeemgebruiker. Je bent vrij om een locatie naar keuze te kiezen.
$ source /home/<username>/odoo-env/bin/activate
Werk PIP bij voor het geval dat.
(odoo-env) $ pip3 install --upgrade pip
Installeer het wiel van Python in de virtuele omgeving.
$ pip3 install wheel
Installeer de afhankelijkheden van Python
Installeer de Python afhankelijkheden die nodig zijn voor Odoo 14.
$ pip3 install -r /opt/odoo/doc/requirements.txt
$ pip3 install -r /opt/odoo/requirements.txt
De installatie van de vereisten zal enige tijd in beslag nemen, dus wees geduldig.
Controleer of de vereisten correct geïnstalleerd zijn door de lijst van geïnstalleerde Python modules te controleren.
$ 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
Sluit de virtuele Python omgeving af.
$ deactivate
Configureer Odoo
Kopieer het standaard Odoo configuratiebestand om een nieuw te maken.
$ sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server.conf
Open het bestand om het te bewerken.
$ sudo nano /etc/odoo-server.conf
Bewerk het bestand zodat het er als volgt uitziet.
[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
Druk op Ctrl + X om de editor te sluiten en druk op Y als gevraagd wordt om het bestand op te slaan.
De optie admin_passwd
is het wachtwoord dat administratieve bewerkingen binnen de Odoo GUI mogelijk maakt. Kies beslist een veilig wachtwoord.
De optie db_host
is de FQDN of het IP adres van de PostgreSQL server.
De optie db_port
is op false gezet omdat de standaard PostgreSQL poort 5432 gebruikt wordt. Als je een andere poort wilt gebruiken, moet je deze waarde bijwerken.
De optie db_user
is de naam van de PostgreSQL gebruiker.
De optie db_password
is het PostgreSQL 'odoo' gebruikerswachtwoord dat we eerder op de PostgreSQL server maakten.
De optie addons_path
is het standaard Addons pad. Je kunt ook een aangepast pad voor Addons toevoegen, waarbij je ze van elkaar scheidt met komma's.
De optie xmlrpc_port
is de poort waarop Odoo luistert.
Creëer Odoo service
Om ervoor te zorgen dat Odoo ook na een herstart van het systeem blijft draaien, moeten we er een service voor maken.
Maak een bestand /lib/systemd/system/odoo-server.service
en open het voor bewerking.
$ sudo nano /lib/systemd/system/odoo-server.service
Plak er de volgende code in.
[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
Vervang /home/<username>
door de plaats die je koos voor de installatie van Python Virtual Environment.
Druk op Ctrl + X om de editor te sluiten en druk op Y als gevraagd wordt om het bestand op te slaan.
Stel bestandspermissies in
Stel de permissies op het odoo-server.service
bestand zo in dat alleen Odoo gebruikers het kunnen lezen of uitvoeren.
$ sudo chmod 755 /lib/systemd/system/odoo-server.service
$ sudo chown odoo: /lib/systemd/system/odoo-server.service
Stel het eigendom in op de Python omgeving en de Odoo installatiedirectory.
$ sudo chown -R odoo: /opt/odoo/
$ sudo chown -R odoo: /home/<username>/odoo-env
Beperk het Odoo configuratiebestand.
$ sudo chown odoo: /etc/odoo-server.conf
$ sudo chmod 640 /etc/odoo-server.conf
Start de Odoo server
Start de Odoo server en schakel hem in.
$ sudo systemctl start odoo-server
$ sudo systemctl enable odoo-server
Controleer de status van de server.
$ sudo systemctl status odoo-server
Open in je browser de URL http://<yourIPaddress>:8069
of http://odoo.yourdomain.com:8069
. Als alles goed werkt, zou je Odoo's scherm voor het maken van een databank moeten zien.
Vul alle velden in. Vink het Demo Data
veld aan om de database te vullen met voorbeeldgegevens en klik dan op de knop Create database.
Vervolgens krijg je een lijst van apps te zien die je kunt kiezen en selecteren.
De eerste keer dat je een databank maakt, zal de addons pagina tijd nodig hebben om te laden, dus ververs de pagina niet.
Installeer en configureer Nginx
Tot nu toe hebben we Odoo's server gebruikt om de stack te draaien. Maar idealiter is het beter om hem op Nginx te draaien met behulp van een proxy, want dan kunnen we er SSL op installeren.
Installeer Nginx.
$ sudo apt install nginx
Om het via Nginx te laten lopen, moeten we Odoo op localhost laten draaien. Om dat te veranderen, stop je de Odoo service.
$ sudo systemctl stop odoo-server
Open het Odoo server configuratie bestand.
$ sudo nano /etc/odoo-server.conf
Voeg er de volgende regels aan toe.
xmlrpc_interface = 127.0.0.1
proxy_mode = True
Maak een Nginx configuratiebestand voor Odoo.
$ sudo nano /etc/nginx/sites-available/odoo.conf
Plak er de onderstaande code in.
#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;
}
Druk op Ctrl + X om de editor te sluiten en druk op Y als gevraagd wordt om het bestand op te slaan.
Activeer dit configuratiebestand door het te koppelen aan de sites-enabled
directory.
$ sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
Test de Nginx configuratie.
$ sudo nginx -t
SSL installeren
We zullen SSL installeren met de Let's Encrypt dienst.
Installeer daarvoor Certbot.
$ sudo apt install certbot
Stop Nginx want dat zal het Certbot proces hinderen.
$ sudo systemctl stop nginx
Genereer het certificaat. We moeten ook een DHParams certificaat maken.
$ 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
We moeten ook een cron job instellen om de SSL automatisch te vernieuwen. Om de crontab editor te openen, voer je het volgende commando uit.
$ sudo crontab -e
Plak de volgende regel onderaan.
25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”
De bovenstaande cron job zal certbot elke dag om 2:25 uur laten lopen. Je kunt het veranderen in wat je maar wilt.
Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom gevraagd wordt.
Start Odoo
Nu alles is ingesteld, kunnen we de Odoo server weer starten.
$ sudo systemctl start odoo-server
Start Odoo in je browser via https://odoo.yourdomain.com
. Je krijgt het eerder beschreven scherm. Voer de vereiste gegevens in om de database aan te maken en je zou in Odoo moeten inloggen en een scherm als dit zien.
Conclusie
Dit is het einde van onze handleiding over het installeren van Odoo op een Ubuntu 20.04 server. Als je nog vragen hebt, stel ze dan in de commentaar hieronder.