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

  1. Ein Ubuntu 20.04 basierter Server mit mindestens 2GB RAM, um Odoo Stack zu hosten.
  2. 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.
  3. 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.
  4. Halten Sie Ihre Systeme auf dem neuesten Stand.
    $ sudo apt update
    $ sudo apt upgrade
    
  5. 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.

  1. Erstellen Sie eine neue virtualenv Umgebung für Odoo.
    $ python3 -m venv /home/<username>/odoo-env
    
  2. 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
    
  3. Aktualisieren Sie vorsichtshalber PIP.
    (odoo-env) $ pip3 install --upgrade pip
    
  4. 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.

Odoo Installationsbildschirm

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.

Odoo-Startseite

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.

Das könnte dich auch interessieren …