So installieren Sie Odoo 14 unter Ubuntu 20.04

Odoo ist eine Suite von Open-Source-Geschäftsanwendungen. Es besteht aus CRM, eCommerce, Inventar, Point of Sale, Projektmanagement und mehr. Diese Anwendungen sind vollständig integriert und können über eine gemeinsame Webschnittstelle aufgerufen werden. Mit Odoo können Sie Ihre Apps integrieren und das Geschäftsleben einfacher machen.

Es gibt zwei Editionen von Oddo – die Community- und die Enterprise-Version. Die Community-Edition ist für alle kostenlos.

Odoo bietet nur wenige Installationsoptionen, z. B. aus dem APT-Repository, über Docker oder die Installation in einer virtuellen Umgebung.

In diesem Tutorial erklären wir, wie man Odoo 14 CE installieren an Ubuntu 20.04 innerhalb einer virtuellen Python-Umgebung. Gehostetes Odoo auf Nginx als SSL Termination Proxy mit Let’s Encrypt Zertifikat.

Voraussetzungen

  1. Eine Ubuntu 20.04-Instanz mit mindestens 2 GB RAM
  2. Für die Datenbankverwaltung benötigt Odoo PostgreSQL
  3. Ein Nicht-Root-Benutzer mit sudo Privileg

Schritt 1. Abhängigkeiten installieren

Aktualisieren Sie zuerst Ihr System.

sudo apt update
sudo apt upgrade

Der folgende Befehl installiert alle Odoo-Abhängigkeiten.

sudo apt install git python3-pip build-essential wget python3-dev python3-venv python3-wheel libfreetype6-dev libxml2-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less libjpeg-dev zlib1g-dev libpq-dev libxslt1-dev libldap2-dev libtiff5-dev libjpeg8-dev libopenjp2-7-dev liblcms2-dev libwebp-dev libharfbuzz-dev libfribidi-dev libxcb1-dev

Schritt 2. Erstellen eines Systembenutzers

Um Odoo ausführen zu können, müssen wir ein neues System erstellen Benutzer und Gruppe mit einem Home-Verzeichnis unter dem Pfad /opt/odoo14, das in der Lage sein muss, einen Odoo-Dienst auszuführen.

sudo useradd -m -d /opt/odoo14 -U -r -s /bin/bash odoo14

Schritt 3. PostgreSQL installieren und konfigurieren

Installieren Sie zunächst PostgreSQL mit apt.

sudo apt install postgresql

Sobald die PostgreSQL-Installation abgeschlossen ist, müssen wir einen PostgreSQL-Benutzer erstellen. Denken Sie daran, dass wir denselben Namen verwenden werden, den wir zuvor als Systembenutzer erstellt haben. Das ist ungerade14.

sudo su - postgres -c "createuser -s odoo14"

Schritt 4. wkhtmltopdf installieren

wkhtmltopdf – ist ein Open-Source-Befehlszeilentool, das das Rendern von HTML-Seiten in PDF und andere ähnliche Formate unterstützt.

Um PDF-Formate und Berichte in Odoo drucken zu können, müssen Sie das Paket wkhtmltopdf installieren.

Laden Sie zuerst das Paket mit dem Befehl wget herunter.

sudo wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb

Sobald der Download abgeschlossen ist, installieren Sie wkhtmltopdf mit dem Befehl apt:

sudo apt install ./wkhtmltox_0.12.6-1.bionic_amd64.deb

Schritt 5. Odoo 14 . installieren und konfigurieren

Wie in der Einleitung erwähnt, installieren wir Odoo aus der Quelle als isolierte virtuelle Python-Umgebung.

Ändern Sie zunächst einen Benutzer mit dem folgenden Befehl in odoo14.

sudo su - odoo14

Zu Klonen Sie den Odoo 14 offizieller Quellcode von GitHub, Typ:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 14.0 /opt/odoo14/odoo

Wechseln Sie dann in das Verzeichnis /opt/odoo14

cd /opt/odoo14

Erstellen Sie von dort aus eine neue virtuelle Python-Umgebung für Odoo mit dem folgenden Befehl.

python3 -m venv odoo-venv

Und aktivieren Sie die virtuelle Umgebung.

source odoo-venv/bin/activate

Installieren Sie nach der Aktivierung der virtuellen Umgebung alle erforderlichen Python-Module mit pip3.

(odoo-venv) $ pip3 install wheel

Und installieren

(odoo-venv) $ pip3 install -r odoo/requirements.txt

Dies kann einige Zeit dauern, wenn es fertig ist, deaktivieren Sie die Umgebung mit dem folgenden Befehl.

(odoo-venv) $ deactivate

Erstellen Sie ein neues Verzeichnis im Pfad /opt/odoo14, das die Addons von Drittanbietern enthält, die wir in die Konfiguration aufnehmen werden.

mkdir /opt/odoo14/odoo-custom-addons

Wir fügen dieses Verzeichnis dem Parameter addons_path hinzu. Dieser Parameter definiert eine Liste von Verzeichnissen, in denen Odoo nach Modulen sucht.

Beenden Sie als Nächstes den odoo-Benutzer und wechseln Sie zurück zu Ihrem sudo Nutzer.

exit

Erstellen Sie eine Konfigurationsdatei:

sudo nano /etc/odoo14.conf

Und fügen Sie den folgenden Inhalt in die Datei ein:

[options]
; This is the password that allows database operations:
admin_passwd = put_your_secure_password
db_host = False
db_port = False
db_user = odoo14
db_password = False
addons_path = /opt/odoo14/odoo/addons,/opt/odoo14/odoo-custom-addons

Schritt 6. Erstellen Sie eine Systemd-Unit-Datei

Ein … kreieren Service-Unit-Datei aufgerufen odoo14.service im Verzeichnis /etc/systemd/system/.

sudo nano /etc/systemd/system/odoo14.service

Und hinter der folgenden Konfiguration:

[Unit]
Description=Odoo14
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
SyslogIdentifier=odoo14
PermissionsStartOnly=true
User=odoo14
Group=odoo14

ExecStart=/opt/odoo14/odoo-venv/bin/python3 /opt/odoo14/odoo/odoo-bin -c /etc/odoo14.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

Teilen Sie systemd mit, dass eine neue Unit-Datei erstellt wurde.

sudo systemctl daemon-reload

Und starten Sie den Odoo-Dienst und aktivieren Sie ihn beim Booten mit dem folgenden Befehl:

sudo systemctl enable --now odoo14

Ausgabe:

Created symlink /etc/systemd/system/multi-user.target.wants/odoo14.service → /etc/systemd/system/odoo14.service.

Servicestatus überprüfen:

sudo systemctl status odoo14

Die Ausgabe, die den Odoo-Dienst anzeigt, ist betriebsbereit:

● odoo14.service - Odoo14
Loaded: loaded (/etc/systemd/system/odoo14.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-07-22 00:42:45 UTC; 48s ago
Main PID: 149632 (python3)
Tasks: 4 (limit: 1073)
Memory: 63.7M
CGroup: /system.slice/odoo14.service
└─149632 /opt/odoo14/odoo-venv/bin/python3 /opt/odoo14/odoo/odoo-bin -c /etc/odoo14.conf


Jul 22 00:42:45 li1129-224 systemd[1]: Started Odoo14.
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,927 149632 INFO ? odoo: Odoo version 14.0
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,932 149632 INFO ? odoo: Using configuration file at /etc/odoo14.conf
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,932 149632 INFO ? odoo: addons paths: ['/opt/odoo14/odoo/odoo/addons', '/opt/odoo14/.local/share/Odoo/addons/14.0', '/opt/odoo14/odoo/addons', '/opt/odoo14/odoo-custom-addons>
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,932 149632 INFO ? odoo: database: odoo14@default:default
Jul 22 00:42:46 li1129-224 odoo14[149632]: 2021-07-22 00:42:46,525 149632 INFO ? odoo.service.server: HTTP service (werkzeug) running on linoxide:8069

Um die vom Odoo-Dienst protokollierten Nachrichten anzuzeigen, führen Sie Folgendes aus:

sudo journalctl -u odoo14

Ausgabe:

-- Logs begin at Tue 2021-07-13 12:50:08 UTC, end at Thu 2021-07-22 00:45:23 UTC. --
Jul 22 00:42:45 li1129-224 systemd[1]: Started Odoo14.
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,927 149632 INFO ? odoo: Odoo>
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,932 149632 INFO ? odoo: Usin>
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,932 149632 INFO ? odoo: addo>
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,932 149632 INFO ? odoo: data>
Jul 22 00:42:46 li1129-224 odoo14[149632]: 2021-07-22 00:42:46,210 149632 INFO ? odoo.addon>
Jul 22 00:42:46 li1129-224 odoo14[149632]: 2021-07-22 00:42:46,525 149632 INFO ? odoo.servi>

Öffnen Sie Ihren Browser und geben Sie ein: https://<your_domain_or_IP_address>:8069

Odoo14-Anmeldung

Setzen Master Passwort die Sie zuvor im Konfigurationspfad /etc/odoo14.conf definiert haben, und geben Sie andere Anmeldeinformationen ein, um eine Datenbank zu erstellen.

Odoo14-Dashboard

Nach erfolgreicher Erstellung der Datenbank wird auf das Odoo14 Dashboard umgeleitet.

Schritt 7. Konfigurieren von Nginx als SSL-Terminierungs-Proxy (optional)

Wenn Sie Odoo für Ihre Umgebung sicherer machen möchten, können wir festlegen Nginx als SSL-Terminierungs-Proxy die den Datenverkehr über HTTPS bereitstellt, anstelle des standardmäßigen Odoo-Webserving-Datenverkehrs über HTTP.

SSL Termination Proxy stellt einen Proxyserver bereit, der die SSL-Verschlüsselung übernimmt. In unserem Fall ist der Termination Proxy Nginx, er verarbeitet und entschlüsselt eingehende TLS-Verbindungen (HTTPS) und leitet die unverschlüsselte Anfrage an den Odoo-Dienst weiter.

Voraussetzungen

  1. Domänenname, der auf Ihre öffentliche Server-IP verweist
    Für diesen Artikel verwenden wir example.conf
  2. Nginx installiert
  3. Lassen Sie uns das SSL-Zertifikat verschlüsseln

Vergewissern Sie sich, dass Let’s Encrypt oder ein anderes SSL-Zertifikat korrekt eingerichtet ist.

Zu Installieren Sie Let’s Encrypt SSL Zertifikat müssen wir zuerst certbot installieren:

# apt install certbot
# apt install python3-certbot-nginx

Führen Sie als nächstes den folgenden Befehl mit aus example.com-Domainnamen und geben Sie die erforderlichen Informationen ein:

# certbot --nginx -d example.com -d www.example.com

Ausgabe:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):

1. Erstellen oder bearbeiten Sie den Domänenserverblock

sudo nano /etc/nginx/sites-enabled/example.com.conf

Und hinter der folgenden Konfiguration:

# Odoo servers
upstream odoo {
server 127.0.0.1:8069;
}

upstream odoochat {
server 127.0.0.1:8072;
}

# HTTP -> HTTPS
server {
listen 80;
server_name www.example.com example.com;
return 301 https://example.com$request_uri;
}

# WWW -> NON WWW
server {
listen 443 ssl http2;
server_name www.example.com;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

return 301 https://example.com$request_uri;
}


server {
listen 443 ssl http2;
server_name example.com;

proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;

# Proxy headers
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/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

# log files
access_log /var/log/nginx/odoo.access.log;

error_log /var/log/nginx/odoo.error.log;

# Handle longpoll requests
location /longpolling {
proxy_pass https://odoochat;
}

# Handle / requests
location / {
proxy_redirect off;
proxy_pass https://odoo;
}

# Cache static files
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass https://odoo;
}

# Gzip
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}

HINWEIS: Vergessen Sie nicht zu ersetzen example.com mit Ihrer Odoo-Domain und stellen Sie den richtigen Pfad zu den SSL-Zertifikatsdateien ein.

2. Starten Sie den Nginx-Dienst neu

sudo systemctl restart nginx

Nach dem Neustart des Nginx-Dienstes müssen wir Odoo anweisen, diesen konfigurierten Proxy zu verwenden.

3. Öffnen Sie die Konfigurationsdatei.

sudo nano /etc/odoo14.conf

4. Und füge die folgende Zeile hinzu.

proxy_mode = True

5. Starten Sie abschließend den Odoo-Dienst neu.

sudo systemctl restart odoo14

Wenn Sie alle Schritte befolgt haben, können Sie unter https:// auf Ihre Odoo-Webinstanz zugreifen.example.mit

Fazit

In diesem Tutorial haben wir gelernt, wie man Odoo 14 auf Ubuntu 20.04 installiert und konfiguriert. Sie können beginnen zu entdecken, wie leistungsstark das Open-Source-ERP Odoo ist, oder Sie können ADempiere ausprobieren, eine andere Open-Source-ERP-Lösung, die Odoo ähnlich ist.