So installieren Sie die ERP-Software Odoo 14 auf Ubuntu 20.04
Odoo (früher bekannt als OpenERP) ist eine selbst gehostete Suite von über 10.000 Open-Source-Anwendungen, die für eine Vielzahl von Geschäftsanforderungen geeignet sind, einschließlich CRM, eCommerce, Buchhaltung, Inventarisierung, Projektmanagement und Point of Sale. Diese Anwendungen sind vollständig integriert und werden über eine gemeinsame Weboberfläche angesprochen.
In diesem Tutorial werden wir lernen, wie man Odoo 14 Stack auf einem Ubuntu 20.04 basierten Server installiert.
Voraussetzungen
- Ein Ubuntu 20.04 basierter Server mit mindestens 2GB RAM, um Odoo Stack zu hosten.
- Ein zweiter Ubuntu 20.04-basierter Server mit mindestens 2 GB RAM für das Hosting der PostgreSQL-Datenbank. Sie können die Datenbank jedoch auf demselben Server wie Odoo installieren, für Produktionsumgebungen wird jedoch dringend empfohlen, sie auf einem separaten Server zu installieren. Sie können auch eine der verwalteten Datenbankoptionen wählen, die von einem Anbieter Ihrer Wahl angeboten werden.
- Der RAM-Bedarf hängt von der Anzahl der gleichzeitigen Benutzer ab, die den Stack verwenden werden. Eine detaillierte Anleitung zur Berechnung der Systemanforderungen finden Sie in der Dokumentation von Odoo.
- Halten Sie Ihre Systeme auf dem neuesten Stand.
$ sudo apt update $ sudo apt upgrade
- Ein Nicht-Root-Benutzer mit sudo-Rechten auf beiden Servern.
Firewall-Regeln konfigurieren
Für diese Anleitung gehen wir davon aus, dass Sie die Firewall ufw
auf beiden Servern installiert haben.
Auf dem Odoo-Server müssen die Ports 22, 80, 443, 6010, 5432 und 8069 geöffnet sein. 22 wird für SSH, 80 für HTTP, 443 für HTTPS, 6010 für die Odoo-Kommunikation, 5432 für PostgreSQL und 8069 für die Odoo-Serveranwendung verwendet.
Führen Sie die folgenden Befehle aus, um die erforderlichen Ports auf dem Odoo-Server zu öffnen.
$ 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
Auf dem PostgreSQL-Server müssen wir die Ports 22, 6010 und 5432 öffnen. Öffnen Sie diese mit den soeben besprochenen Befehlen.
Hostnamen zuweisen
Sie können entweder die IP-Adressen der Server verwenden oder deren Fully Qualified Domain Names (FQDN), falls vorhanden. Für unser Tutorial werden wir FQDNs verwenden, und dafür müssen wir Hostnamen auf beiden Servern festlegen.
Öffnen Sie auf dem Odoo-Server die Datei /etc/hosts
.
$ sudo nano /etc/hosts
Stellen Sie sicher, dass sie wie die folgende aussieht.
127.0.0.1 localhost
127.0.0.1 odoo.yourdomain.com odoo
10.1.1.10 postgresql.yourdomain.com postgresql
Öffnen Sie auf dem PostgreSQL-Server die Datei und stellen Sie sicher, dass sie wie die folgende aussieht.
127.0.0.1 localhost
127.0.0.1 postgresql.yourdomain.com postgresql
10.1.2.10 odoo.yourdomain.com odoo
Drücken Sie Strg + X, um den Editor zu schließen und drücken Sie Y, wenn Sie zum Speichern der Datei aufgefordert werden.
Installieren und konfigurieren Sie PostgreSQL
Ubuntu 20.04 wird standardmäßig mit PostgreSQL 12 ausgeliefert und wir werden dieses installieren. Führen Sie den folgenden Befehl auf dem PostgreSQL-Server aus.
$ sudo apt install postgresql-12 postgresql-server-dev-12
Als nächstes müssen wir einen Datenbankbenutzer anlegen odoo.
$ sudo -u postgres createuser odoo -U postgres -dP
Die Option -u
führt den Befehl als Benutzer postgres
aus.
Die Option -U
gibt den Benutzernamen an, unter dem die Verbindung hergestellt werden soll.
Die Option -d
gewährt dem Benutzer die Berechtigung, Datenbanken zu erstellen.
Die Option -p
fordert zur Eingabe des Passworts des neuen Benutzers auf.
Konfigurieren der Host-basierten Authentifizierung
Wir müssen dem PostgreSQL-Dienst die Berechtigung erteilen, sich mit dem Odoo-Server zu verbinden.
Stoppen Sie zunächst den PostgreSQL-Dienst.
$ sudo systemctl stop postgresql
Öffnen Sie die Datei /etc/postgresql/12/main/pg_hba.conf
zur Bearbeitung.
$ sudo nano /etc/postgresql/12/main/pg_hba.conf
Fügen Sie die folgende Zeile am Ende ein.
host all odoo odoo.yourdomain.com md5
Diese Zeile gewährt dem Benutzer odoo
die Berechtigung, sich mit allen Datenbanken dieses Servers zu verbinden. Sie können auch den Namen der Datenbanken angeben, anstatt das Schlüsselwort all
zu verwenden.
Drücken Sie Strg + X, um den Editor zu schließen, und drücken Sie Y, wenn Sie zum Speichern der Datei aufgefordert werden.
PostgreSQL-Listening-Adresse konfigurieren
Als nächstes müssen wir dem Datenbankserver erlauben, auf Remote-Verbindungen zu lauschen. Öffnen Sie die Datei /etc/postgresql/12/main/postgresql.conf
zur Bearbeitung.
$ sudo nano /etc/postgresql/12/main/postgresql.conf
Ändern Sie die Zeile listen_addresses
von
#listen_addresses = 'localhost' # what IP address(es) to listen on;
zu.
#From CONNECTIONS AND AUTHENTICATION Section
listen_addresses = '*'
Das *
bedeutet, dass er auf alle IP-Adressen lauschen wird. Sie können sie in die IP-Adresse Ihrer Odoo-Instanz ändern.
Drücken Sie Strg + X, um den Editor zu schließen, und drücken Sie Y, wenn Sie zum Speichern der Datei aufgefordert werden.
Aktivieren und starten Sie den PostgreSQL-Dienst
Da unsere Konfiguration abgeschlossen ist, ist es nun an der Zeit, den PostgreSQL-Dienst zu starten und zu aktivieren.
$ sudo systemctl start postgresql && sudo systemctl enable postgresql
Odoo installieren
Installieren Sie die Abhängigkeiten und bereiten Sie die Installation vor
Erstellen Sie einen neuen Systembenutzer für die Verwaltung der Odoo-Prozesse auf dem Odoo-Server.
$ sudo adduser --system --home=/opt/odoo --group odoo
Wir müssen einige Systemabhängigkeiten installieren, aber zuerst müssen wir die Quellcode-Repositories aktivieren. Erstellen Sie dazu eine Sicherungskopie der ursprünglichen Quellcode-Liste und aktivieren Sie dann alle Quellcode-Repositories und aktualisieren Sie die Repository-Liste.
$ 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
Installieren Sie die Systemabhängigkeiten, die für die Einrichtung von Odoo 14 erforderlich sind.
$ 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
Installieren Sie Nodejs.
$ sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt install nodejs
Installieren Sie das Less-CSS-Paket mit Node.
$ sudo npm install -g less less-plugin-clean-css
Laden Sie das Paket wkhtmltopdf
Version 0.12.6 herunter.
$ cd /tmp
$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
Installieren Sie das Paket.
$ sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
Um sicherzustellen, dass wkhtmltopdf
korrekt funktioniert, kopieren Sie die Binärdateien nach /usr/bin
und geben Sie ihnen die richtigen Berechtigungen.
$ sudo cp /usr/local/bin/wkhtmlto* /usr/bin/
$ sudo chmod a+x /usr/bin/wk*
$ cd ~
Odoo-Dateien herunterladen
Klonen Sie das Github-Repository von Odoo auf Ihr System.
$ sudo git clone https://github.com/odoo/odoo.git --depth 1 --branch 14.0 --single-branch /opt/odoo
Für unseren Zweck kopieren wir Odoo in das Verzeichnis /opt/odoo
, von wo aus es installiert werden soll.
Virtualenv Python-Umgebung einrichten
Dieser Schritt ist optional, wird aber empfohlen, da eine virtuelle Python-Umgebung für Odoo dabei hilft, Konflikte mit Python-Modulen des Betriebssystems zu vermeiden, insbesondere bei der Durchführung von Betriebssystem-Upgrades.
Hierfür verwenden wir virtualenv
.
- Erstellen Sie eine neue
virtualenv
Umgebung für Odoo.$ python3 -m venv /home/<username>/odoo-env
- Aktivieren Sie die virtuelle Umgebung. Wir erstellen eine Umgebung unter dem Home-Verzeichnis des Systembenutzers. Es steht Ihnen frei, einen beliebigen Ort zu wählen.
$ source /home/<username>/odoo-env/bin/activate
- Aktualisieren Sie vorsichtshalber PIP.
(odoo-env) $ pip3 install --upgrade pip
- Installieren Sie das Python-Rad in der virtuellen Umgebung.
$ pip3 install wheel
Python-Abhängigkeiten installieren
Installieren Sie die von Odoo 14 benötigten Python-Abhängigkeiten.
$ pip3 install -r /opt/odoo/doc/requirements.txt
$ pip3 install -r /opt/odoo/requirements.txt
Die Installation der Anforderungen wird einige Zeit in Anspruch nehmen, haben Sie also etwas Geduld.
Überprüfen Sie, ob die Anforderungen korrekt installiert sind, indem Sie die Liste der installierten Python-Module überprüfen.
$ 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
Beenden Sie die virtuelle Python-Umgebung.
$ deactivate
Odoo konfigurieren
Kopieren Sie die Standardkonfigurationsdatei von Odoo, um eine neue Datei zu erstellen.
$ sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server.conf
Öffnen Sie die Datei zum Bearbeiten.
$ sudo nano /etc/odoo-server.conf
Bearbeiten Sie die Datei so, dass sie wie die folgende aussieht.
[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
Drücken Sie Strg + X, um den Editor zu schließen, und drücken Sie Y, wenn Sie zum Speichern der Datei aufgefordert werden.
Die Option admin_passwd
ist das Passwort, das administrative Operationen innerhalb der Odoo-GUI erlaubt. Achten Sie darauf, dass Sie ein sicheres Passwort wählen.
Die Option db_host
ist der FQDN oder die IP-Adresse des PostgreSQL-Servers.
Die Option db_port
ist auf false gesetzt, da der Standard-PostgreSQL-Port 5432 verwendet wird. Wenn Sie einen anderen Port verwenden möchten, müssen Sie diesen Wert aktualisieren.
Die Option db_user
ist der Name des PostgreSQL-Benutzers.
Die Option db_password
ist das Passwort des PostgreSQL-Benutzers „odoo“, das wir zuvor auf dem PostgreSQL-Server erstellt haben.
Die Option addons_path
ist der Standardpfad für Addons. Sie können auch einen benutzerdefinierten Pfad für Addons hinzufügen, indem Sie diese mit Kommas trennen.
Die Option xmlrpc_port
ist der Port, auf dem Odoo lauscht.
Odoo-Dienst erstellen
Um sicherzustellen, dass Odoo auch nach einem Systemneustart weiterläuft, müssen wir einen Dienst dafür erstellen.
Erstellen Sie eine Datei /lib/systemd/system/odoo-server.service
und öffnen Sie diese zur Bearbeitung.
$ sudo nano /lib/systemd/system/odoo-server.service
Fügen Sie den folgenden Code darin ein.
[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
Ersetzen Sie /home/<username>
durch den Ort, den Sie für die Installation der virtuellen Python-Umgebung gewählt haben.
Drücken Sie Strg + X, um den Editor zu schließen, und drücken Sie Y, wenn Sie zum Speichern der Datei aufgefordert werden.
Dateiberechtigungen festlegen
Setzen Sie die Berechtigungen für die Datei odoo-server.service
so, dass nur Odoo-Benutzer sie lesen oder ausführen können.
$ sudo chmod 755 /lib/systemd/system/odoo-server.service
$ sudo chown odoo: /lib/systemd/system/odoo-server.service
Legen Sie die Eigentümerschaft für die Python-Umgebung und das Odoo-Installationsverzeichnis fest.
$ sudo chown -R odoo: /opt/odoo/
$ sudo chown -R odoo: /home/<username>/odoo-env
Schränken Sie die Odoo-Konfigurationsdatei ein.
$ sudo chown odoo: /etc/odoo-server.conf
$ sudo chmod 640 /etc/odoo-server.conf
Starten Sie den Odoo-Server
Starten und aktivieren Sie den Odoo-Server.
$ sudo systemctl start odoo-server
$ sudo systemctl enable odoo-server
Überprüfen Sie den Status des Servers.
$ sudo systemctl status odoo-server
Öffnen Sie in Ihrem Browser die URL http://<yourIPaddress>:8069
oder http://odoo.yourdomain.com:8069
. Wenn alles ordnungsgemäß funktioniert, sollten Sie den Bildschirm zum Anlegen der Datenbank von Odoo sehen.
Füllen Sie alle Felder aus. Aktivieren Sie das Feld Demo Data
, um die Datenbank mit Beispieldaten zu füllen, und klicken Sie dann auf die Schaltfläche Datenbank erstellen.
Als nächstes wird Ihnen eine Liste von Anwendungen angezeigt, die Sie auswählen können.
Wenn Sie zum ersten Mal eine Datenbank erstellen, dauert es einige Zeit, bis die Addons-Seite geladen wird, daher sollten Sie die Seite nicht aktualisieren.
Nginx installieren und konfigurieren
Bis jetzt haben wir den Server von Odoo verwendet, um den Stack zu betreiben. Aber idealerweise ist es besser, ihn auf Nginx unter Verwendung eines Proxys laufen zu lassen, weil wir dann SSL darauf installieren können.
Nginx installieren.
$ sudo apt install nginx
Um es über Nginx laufen zu lassen, müssen wir Odoo auf localhost laufen lassen. Um das zu ändern, stoppen Sie den Odoo-Dienst.
$ sudo systemctl stop odoo-server
Öffnen Sie die Konfigurationsdatei des Odoo-Servers.
$ sudo nano /etc/odoo-server.conf
Fügen Sie ihr die folgenden Zeilen hinzu.
xmlrpc_interface = 127.0.0.1
proxy_mode = True
Erstellen Sie eine Nginx-Konfigurationsdatei für Odoo.
$ sudo nano /etc/nginx/sites-available/odoo.conf
Fügen Sie den unten stehenden Code ein.
#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;
}
Drücken Sie Strg + X, um den Editor zu schließen, und drücken Sie Y, wenn Sie zum Speichern der Datei aufgefordert werden.
Aktivieren Sie diese Konfigurationsdatei, indem Sie sie mit dem Verzeichnis sites-enabled
verknüpfen.
$ sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
Testen Sie die Nginx-Konfiguration.
$ sudo nginx -t
SSL installieren
Wir werden SSL mit dem Dienst Let’s Encrypt installieren.
Installieren Sie dazu Certbot.
$ sudo apt install certbot
Stoppen Sie Nginx, da es den Prozess von Certbot stören wird.
$ sudo systemctl stop nginx
Erzeugen Sie das Zertifikat. Wir müssen auch ein DHParams-Zertifikat erstellen.
$ sudo certbot certonly --standalone -d odoo.yourdomain.com --preferred-challenges http --agree-tos -n -m email@yourdomain.com --keep-until-expiring
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Außerdem müssen wir einen Cron-Job für die automatische Erneuerung des SSL einrichten. Um den crontab-Editor zu öffnen, führen Sie den folgenden Befehl aus.
$ sudo crontab -e
Fügen Sie die folgende Zeile am unteren Ende ein.
25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”
Der obige Cron-Job wird certbot jeden Tag um 2:25 Uhr ausführen. Sie können ihn nach Belieben ändern.
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Odoo starten
Jetzt, wo alles eingerichtet ist, können wir den Odoo-Server wieder starten.
$ sudo systemctl start odoo-server
Starten Sie Odoo in Ihrem Browser über https://odoo.yourdomain.com
. Sie erhalten dann den oben beschriebenen Bildschirm. Geben Sie die erforderlichen Daten ein, um die Datenbank zu erstellen, und Sie sollten sich bei Odoo anmelden und einen Bildschirm wie diesen sehen.
Fazit
Damit ist unser Tutorial zur Installation von Odoo auf einem Ubuntu 20.04 Server abgeschlossen. Wenn Sie noch Fragen haben, schreiben Sie sie in die Kommentare unten.