GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So installieren Sie Odoo 15 auf Ubuntu 20.04

Odoo ist eine beliebte Open-Source-Suite von Geschäftsanwendungen, die Unternehmen bei der Verwaltung und Führung ihres Geschäfts unterstützen. Es umfasst eine breite Palette von Anwendungen wie CRM, E-Commerce, Website-Builder, Rechnungsstellung, Buchhaltung, Fertigung, Lager, Projektmanagement, Inventar und vieles mehr, die alle nahtlos integriert sind.

Odoo kann je nach Anwendungsfall und verfügbaren Technologien auf unterschiedliche Weise installiert werden. Der einfachste und schnellste Weg, Odoo zu installieren, ist die Verwendung der offiziellen Odoo APTrepositories.

Durch die Installation von Odoo in einer virtuellen Umgebung oder die Bereitstellung als Dockercontainer erhalten Sie mehr Kontrolle über die Anwendung und können mehrere Odoo-Instanzen auf demselben System ausführen.

Dieser Artikel behandelt die Installation und Bereitstellung von Odoo 15 in einer virtuellen Python-Umgebung unter Ubuntu 20.04. Wir laden Odoo aus dem offiziellen GitHub-Repository herunter und verwenden Nginx als Reverse-Proxy.

Installation von Abhängigkeiten #

Der erste Schritt ist die Installation von Git, Pip, Node.js und Entwicklung [zum Erstellen erforderliche Tools](https://linuxize.com/post/how-to-install-gcc-on-ubuntu-20-04/ Odoo Abhängigkeiten:

sudo apt updatesudo 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

Erstellen eines Systembenutzers #

Das Ausführen von Odoo unter dem Root-Benutzer stellt ein großes Sicherheitsrisiko dar. Wir erstellen einen neuen Systembenutzer und eine neue Gruppe mit dem Home-Verzeichnis /opt/odoo15 das wird den Odoo-Dienst ausführen. Führen Sie dazu den folgenden Befehl aus:

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

Sie können dem Benutzer einen beliebigen Namen geben, solange Sie einen PostgreSQL-Benutzer mit demselben Namen erstellen.

PostgreSQL installieren und konfigurieren #

Odoo verwendet PostgreSQL als Datenbank-Backend. PostgreSQL ist in den Standard-Ubuntu-Repositories enthalten. Die Installation ist unkompliziert:

sudo apt install postgresql

Sobald der Dienst installiert ist, erstellen Sie einen PostgreSQL-Benutzer mit demselben Namen wie der zuvor erstellte Systembenutzer. In diesem Beispiel ist das odoo15 :

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

Installation von wkhtmltopdf #

wkhtmltopdf ist eine Reihe von Open-Source-Befehlszeilentools zum Rendern von HTML-Seiten in PDF und verschiedene Bildformate. Um PDF-Berichte in Odoo zu drucken, müssen Sie wkhtmltox installieren Paket.

Die in den Ubuntu-Repositories enthaltene Version von wkhtmltopdf unterstützt keine Kopf- und Fußzeilen. Die empfohlene Version für Odoo ist Version 0.12.5 . Wir laden das Paket von Github herunter und installieren es:

sudo wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb

Nachdem die Datei heruntergeladen wurde, installieren Sie sie, indem Sie Folgendes eingeben:

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

Installieren und Konfigurieren von Odoo 15 #

Wir installieren Odoo von der Quelle in einer isolierten virtuellen Python-Umgebung.

Wechseln Sie zunächst zum Benutzer „odoo15“:

sudo su - odoo15

Klonen Sie den Quellcode von Odoo 15 von GitHub:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 15.0 /opt/odoo15/odoo

Erstellen Sie eine neue virtuelle Python-Umgebung für Odoo:

cd /opt/odoo15python3 -m venv odoo-venv

Aktivieren Sie die virtuelle Umgebung:

source odoo-venv/bin/activate

Odoo-Abhängigkeiten sind in der Datei requirements.txt angegeben. Installieren Sie alle erforderlichen Python-Module mit pip3:

pip3 install wheelpip3 install -r odoo/requirements.txt
Wenn während der Installation ein Kompilierungsfehler auftritt, vergewissern Sie sich, dass alle erforderlichen Abhängigkeiten in den Installing Prerequisites aufgeführt sind Abschnitt installiert sind.

Wenn Sie fertig sind, deaktivieren Sie die Umgebung, indem Sie Folgendes eingeben:

deactivate

Wir erstellen ein neues Verzeichnis, ein separates Verzeichnis für die Add-Ons von Drittanbietern:

mkdir /opt/odoo15/odoo-custom-addons

Später werden wir dieses Verzeichnis zum addons_path hinzufügen Parameter. Dieser Parameter definiert eine Liste von Verzeichnissen, in denen Odoo nach Modulen sucht.

Wechseln Sie zurück zu Ihrem sudo-Benutzer:

exit

Erstellen Sie eine Konfigurationsdatei mit folgendem Inhalt:

sudo nano /etc/odoo15.conf
/etc/odoo15.conf
[options]
; This is the password that allows database operations:
admin_passwd = my_admin_passwd
db_host = False
db_port = False
db_user = odoo15
db_password = False
addons_path = /opt/odoo15/odoo/addons,/opt/odoo15/odoo-custom-addons
Vergessen Sie nicht, das my_admin_passwd zu ändern zu etwas Sichererem.

Systemd-Unit-Datei erstellen #

Eine Unit-Datei ist eine Konfigurationsdatei im INI-Stil, die Informationen über einen Dienst enthält.

Öffnen Sie Ihren Texteditor und erstellen Sie eine Datei namens odoo15.service mit folgendem Inhalt:

sudo nano /etc/systemd/system/odoo15.service
/etc/systemd/system/odoo15.service
[Unit]
Description=Odoo15
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
SyslogIdentifier=odoo15
PermissionsStartOnly=true
User=odoo15
Group=odoo15
ExecStart=/opt/odoo15/odoo-venv/bin/python3 /opt/odoo15/odoo/odoo-bin -c /etc/odoo15.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

Systemd benachrichtigen, dass eine neue Unit-Datei existiert:

sudo systemctl daemon-reload

Starten Sie den Odoo-Dienst und ermöglichen Sie ihm, beim Booten zu starten, indem Sie Folgendes ausführen:

sudo systemctl enable --now odoo15

Stellen Sie sicher, dass der Dienst ausgeführt wird:

sudo systemctl status odoo15

Die Ausgabe sollte in etwa so aussehen und zeigen, dass der Odoo-Dienst aktiv ist und ausgeführt wird:

● odoo15.service - Odoo15
     Loaded: loaded (/etc/systemd/system/odoo15.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-10-26 09:56:28 UTC; 28s ago
...

Sie können die vom Odoo-Dienst protokollierten Nachrichten mit dem folgenden Befehl überprüfen:

sudo journalctl -u odoo15

Testen der Installation #

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

Vorausgesetzt, die Installation ist erfolgreich, wird ein Bildschirm ähnlich dem folgenden angezeigt:

Konfigurieren von Nginx als SSL-Terminierungsproxy #

Der standardmäßige Odoo-Webserver bedient Datenverkehr über HTTP. Um die Odoo-Bereitstellung sicherer zu machen, werden wir Nginx als SSL-Terminierungsproxy festlegen, der den Datenverkehr über HTTPS bedient.

Der SSL-Terminierungsproxy ist ein Proxyserver, der die SSL-Verschlüsselung/-Entschlüsselung übernimmt. Das bedeutet, dass der Termination Proxy (Nginx) eingehende TLS-Verbindungen (HTTPS) verarbeitet und entschlüsselt und die Anfragen unverschlüsselt an den internen Dienst (Odoo) weiterleitet. Der Datenverkehr zwischen Nginx und Odoo wird nicht verschlüsselt (HTTP).

Die Verwendung eines Reverse-Proxys bietet Ihnen viele Vorteile wie Load Balancing, SSL-Terminierung, Caching, Komprimierung, Bereitstellung statischer Inhalte und mehr.

Stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben, bevor Sie mit diesem Abschnitt fortfahren:

  • Domänenname, der auf Ihre öffentliche Server-IP verweist. Wir verwenden example.com .
  • Nginx installiert.
  • SSL-Zertifikat für Ihre Domain. Sie können ein kostenloses SSL-Zertifikat von Let’s Encrypt installieren.

Öffnen Sie Ihren Texteditor und erstellen/bearbeiten Sie den Domänenserverblock:

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

Die folgende Konfiguration richtet SSL-Terminierung, HTTP-zu-HTTPS-Umleitung, WWW-zu-Nicht-WWW-Umleitung ein, speichert die statischen Dateien und aktiviert die GZip-Komprimierung.

/etc/nginx/sites-enabled/example.com.conf
# 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;

    include snippets/letsencrypt.conf;
    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;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    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;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    # 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 http://odoochat;
    }

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

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

    # Gzip
    gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
    gzip on;
}
Vergessen Sie nicht, example.com durch Ihre Odoo-Domain zu ersetzen und den richtigen Pfad zu den SSL-Zertifikatsdateien festzulegen. Die in dieser Konfiguration verwendeten Snippets werden in dieser Anleitung erstellt.

Wenn Sie fertig sind, starten Sie den Nginx-Dienst neu:

sudo systemctl restart nginx

Als nächstes müssen wir Odoo sagen, dass es den Proxy verwenden soll. Öffnen Sie dazu die Konfigurationsdatei und fügen Sie die folgende Zeile hinzu:

/etc/odoo15.conf
proxy_mode = True

Starten Sie den Odoo-Dienst neu, damit die Änderungen wirksam werden:

sudo systemctl restart odoo15

An diesem Punkt ist der Reverse-Proxy konfiguriert und Sie können unter https://example.com auf Ihre Odoo-Instanz zugreifen .

Ändern der Bindungsschnittstelle #

Dieser Schritt ist optional, aber eine gute Sicherheitspraxis.

Standardmäßig lauscht der Odoo-Server auf Port 8069 auf allen Schnittstellen. Um den direkten Zugriff auf die Odoo-Instanz zu deaktivieren, können Sie entweder den Port 8069 blockieren für alle öffentlichen Schnittstellen oder zwingen Sie Odoo, nur auf der lokalen Schnittstelle zu lauschen.

Wir werden Odoo so konfigurieren, dass es nur auf 127.0.0.1 lauscht . Öffnen Sie die Konfiguration und fügen Sie am Ende der Datei die folgenden zwei Zeilen hinzu:

/etc/odoo15.conf
xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1

Speichern Sie die Konfigurationsdatei und starten Sie den Odoo-Server neu, damit die Änderungen wirksam werden:

sudo systemctl restart odoo15

Multiprocessing aktivieren #

Standardmäßig arbeitet Odoo im Multithreading-Modus. Für Produktionsbereitstellungen wird empfohlen, auf den Multiprocessing-Server umzusteigen, da er die Stabilität erhöht und die Systemressourcen besser nutzt.

Um Multiprocessing zu aktivieren, müssen Sie die Odoo-Konfiguration bearbeiten und eine Anzahl von Worker-Prozessen ungleich Null festlegen. Die Anzahl der Worker wird basierend auf der Anzahl der CPU-Kerne im System und dem verfügbaren RAM-Speicher berechnet.

Gemäß der offiziellen Odoo-Dokumentation können Sie die folgenden Formeln und Annahmen verwenden, um die Anzahl der Arbeiter und die erforderliche RAM-Speichergröße zu berechnen:

Arbeiterzahlberechnung

  • Theoretische maximale Anzahl an Workern =(system_cpus * 2) + 1
  • 1 Worker kann ~=6 gleichzeitige Benutzer bedienen
  • Cron-Worker benötigen auch CPU

Berechnung der RAM-Speichergröße

  • Wir gehen davon aus, dass 20 % aller Anfragen schwere und 80 % leichtere Anfragen sind. Schwere Anforderungen verwenden etwa 1 GB RAM, während leichtere etwa 150 MB RAM verwenden
  • Benötigter Arbeitsspeicher =number_of_workers * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )

Wenn Sie nicht wissen, wie viele CPUs Sie auf Ihrem System haben, verwenden Sie das folgende grep Befehl:

grep -c ^processor /proc/cpuinfo

Nehmen wir an, Sie haben ein System mit 4 CPU-Kernen, 8 GB RAM-Speicher und 30 gleichzeitigen Odoo-Benutzern.

  • 30 users / 6 = **5** (5 ist die theoretische Anzahl der benötigten Arbeiter)
  • (4 * 2) + 1 = **9** (9 ist die theoretische maximale Anzahl von Arbeitern)

Basierend auf der obigen Berechnung können Sie 5 Worker + 1 Worker für den Cron-Worker verwenden, also insgesamt 6 Worker.

Berechnen Sie den RAM-Speicherverbrauch basierend auf der Anzahl der Worker:

  • RAM = 6 * ((0.8*150) + (0.2*1024)) ~= 2 GB of RAM

Die Berechnung zeigt, dass die Odoo-Installation etwa 2 GB RAM benötigt.

Um in den Multiprocessing-Modus zu wechseln, öffnen Sie die Konfigurationsdatei und hängen Sie die berechneten Werte an:

/etc/odoo15.conf
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1
workers = 5

Starten Sie den Odoo-Dienst neu, damit die Änderungen wirksam werden:

sudo systemctl restart odoo15

Die restlichen Systemressourcen werden von anderen Diensten verwendet, die auf diesem System ausgeführt werden. In dieser Anleitung haben wir Odoo zusammen mit PostgreSQL und Nginx auf demselben Server installiert. Abhängig von Ihrer Einrichtung können auch andere Dienste auf Ihrem Server ausgeführt werden.


Ubuntu
  1. So installieren Sie Odoo 10 auf Ubuntu 16.04

  2. So installieren Sie Odoo 12 auf Ubuntu 16.04

  3. So installieren Sie Odoo 13 auf Ubuntu 18.04

  4. So installieren Sie Odoo 13 auf Ubuntu 20.04

  5. So installieren Sie Odoo 15 auf Ubuntu 22.04

So installieren Sie Odoo auf Ubuntu 18.04 LTS

So installieren Sie Odoo auf Ubuntu 20.04 LTS

So installieren Sie Odoo 13 unter Ubuntu

So installieren Sie Odoo auf Ubuntu 18.04

So installieren Sie Odoo auf Ubuntu 20.04

So installieren Sie Odoo 12 auf Ubuntu 20.04