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

So stellen Sie Odoo 11 auf Ubuntu 18.04 bereit

Odoo ist die beliebteste All-in-One-Unternehmenssoftware der Welt. Es bietet eine Reihe von Geschäftsanwendungen, darunter CRM, Website, E-Commerce, Rechnungsstellung, Buchhaltung, Fertigung, Lager, Projektmanagement, Inventar und vieles mehr, die alle nahtlos integriert sind.

Je nach gewünschtem Anwendungsfall gibt es mehrere Möglichkeiten, Odoo zu installieren. Der einfachste und schnellste Weg, Odoo zu installieren, ist die Verwendung der offiziellen APT-Repositories.

Wenn Sie mehr Flexibilität haben möchten, z. B. mehrere Odoo-Versionen auf demselben System ausführen möchten, können Sie entweder Docker und Docker Compose verwenden oder Odoo in einer virtuellen Umgebung installieren.

Diese Anleitung behandelt die notwendigen Schritte zum Installieren und Konfigurieren von Odoo für die Produktion mit Git-Quelle und virtueller Python-Umgebung auf einem Ubuntu 18.04-System.

Bevor Sie anfangen #

Melden Sie sich als sudo-Benutzer bei Ihrem Ubuntu-Computer an und aktualisieren Sie das System auf die neuesten Pakete:

sudo apt update && sudo apt upgrade

Installieren Sie Git, Pip, Node.js und die Tools, die zum Erstellen von Odoo-Abhängigkeiten erforderlich sind:

sudo apt install git python3-pip build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less

Odoo-Benutzer # erstellen

Erstellen Sie einen neuen Systembenutzer und eine neue Gruppe mit dem Home-Verzeichnis /opt/odoo das den Odoo-Dienst ausführt.

sudo useradd -m -d /opt/odoo -U -r -s /bin/bash odoo
Sie können den Benutzer beliebig benennen, stellen Sie jedoch sicher, dass Sie einen Postgres-Benutzer mit demselben Namen erstellen.

Installieren und konfigurieren Sie PostgreSQL #

Installieren Sie das PostgreSQL-Paket aus den Standard-Repositories von Ubuntu:

sudo apt install postgresql

Erstellen Sie nach Abschluss der Installation einen PostgreSQL-Benutzer mit demselben Namen wie der zuvor erstellte Systembenutzer, in unserem Fall odoo :

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

Installieren Sie Wkhtmltopdf #

Die wkhtmltox Paket bietet eine Reihe von Open-Source-Befehlszeilentools, die HTML in PDF und verschiedene Bildformate rendern können. Um PDF-Berichte zu drucken, benötigen Sie wkhtmltopdf Werkzeug. Die empfohlene Version für Odoo ist 0.12.1 die nicht in den offiziellen Ubuntu 18.04-Repositories verfügbar ist.

Laden Sie das Paket mit dem folgenden wget-Befehl herunter:

wget https://builds.wkhtmltopdf.org/0.12.1.3/wkhtmltox_0.12.1.3-1~bionic_amd64.deb

Sobald der Download abgeschlossen ist, installieren Sie das Paket, indem Sie Folgendes eingeben:

sudo apt install ./wkhtmltox_0.12.1.3-1~bionic_amd64.deb

Installieren und konfigurieren Sie Odoo #

Wir werden Odoo aus dem GitHub-Repository in einer isolierten virtuellen Python-Umgebung installieren, damit wir mehr Kontrolle über Versionen und Updates haben.

Bevor Sie mit der Installation beginnen, stellen Sie sicher, dass Sie zu odoo wechseln Benutzer.

sudo su - odoo

Um zu bestätigen, dass Sie als odoo angemeldet sind Benutzer können Sie den folgenden Befehl verwenden:

whoami

Jetzt können wir mit dem Installationsprozess beginnen. Klonen Sie zuerst das Odoo aus dem GitHub-Repository:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 11.0 /opt/odoo/odoo11
  • Wenn Sie eine andere Odoo-Version installieren möchten, ändern Sie einfach die Versionsnummer nach dem --branch wechseln.
  • Sie können das Verzeichnis beliebig benennen, zB statt odoo11 Sie können den Namen Ihrer Domain verwenden.

Um eine neue virtuelle Umgebung für die Odoo 11-Instanz zu erstellen, führen Sie Folgendes aus:

cd /opt/odoopython3 -m venv odoo11-venv

Aktivieren Sie die Umgebung mit dem folgenden Befehl:

source odoo11-venv/bin/activate

und installieren Sie alle erforderlichen Python-Module mit pip3:

pip3 install wheelpip3 install -r odoo11/requirements.txt

pip3 ist ein Tool zum Installieren und Verwalten von Python-Paketen.

Wenn während der Installation Kompilierungsfehler auftreten, vergewissern Sie sich, dass Sie alle erforderlichen Abhängigkeiten installiert haben, die im Abschnitt Before you begin aufgeführt sind Abschnitt.

Sobald die Installation abgeschlossen ist, deaktivieren Sie die Umgebung und wechseln Sie mit den folgenden Befehlen zu Ihrem sudo-Benutzer zurück:

deactivate
exit

Wenn Sie benutzerdefinierte Module installieren möchten, ist es am besten, diese Module in einem separaten Verzeichnis zu installieren. Um ein neues Verzeichnis für unsere benutzerdefinierten Module zu erstellen, führen Sie Folgendes aus:

sudo mkdir /opt/odoo/odoo11-custom-addonssudo chown odoo: /opt/odoo/odoo11-custom-addons

Als nächstes müssen wir eine Konfigurationsdatei erstellen, wir können entweder eine neue von Grund auf neu erstellen oder die enthaltene Konfigurationsdatei kopieren:

sudo cp /opt/odoo/odoo11/debian/odoo.conf /etc/odoo11.conf

Öffnen Sie die Datei und bearbeiten Sie sie wie folgt:

/etc/odoo11.conf
[options]
; This is the password that allows database operations:
admin_passwd = my_admin_passwd
db_host = False
db_port = False
db_user = odoo
db_password = False
addons_path = /opt/odoo/odoo11/addons
; If you are using custom modules
; addons_path = /opt/odoo/odoo11/addons,/opt/odoo/odoo11-custom-addons
Vergessen Sie nicht, das my_admin_passwd zu ändern zu etwas Sichererem und passen Sie den addons_path an wenn Sie benutzerdefinierte Module verwenden.

Erstellen Sie eine systemd-Unit-Datei #

Um Odoo als Dienst auszuführen, erstellen wir einen odoo11.service Unit-Datei in /etc/systemd/system/ Verzeichnis mit folgendem Inhalt:

/etc/systemd/system/odoo11.service
[Unit]
Description=Odoo11
Requires=postgresql.service
After=network.target postgresql.service

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

[Install]
WantedBy=multi-user.target

Benachrichtigen Sie systemd, dass wir eine neue Unit-Datei erstellt haben, und starten Sie den Odoo-Dienst, indem Sie Folgendes ausführen:

sudo systemctl daemon-reloadsudo systemctl start odoo11

Sie können den Dienststatus mit dem folgenden Befehl überprüfen:

sudo systemctl status odoo11
● odoo11.service - Odoo11
   Loaded: loaded (/etc/systemd/system/odoo11.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-05-03 21:23:08 UTC; 3s ago
 Main PID: 18351 (python3)
    Tasks: 4 (limit: 507)
   CGroup: /system.slice/odoo11.service
           └─18351 /opt/odoo/odoo11-venv/bin/python3 /opt/odoo/odoo11/odoo-bin -c /etc/odoo11.conf

und wenn es keine Fehler gibt, können Sie den Odoo-Dienst so aktivieren, dass er beim Booten automatisch gestartet wird:

sudo systemctl enable odoo11

Wenn Sie die vom Odoo-Dienst protokollierten Nachrichten sehen möchten, können Sie den folgenden Befehl verwenden:

sudo journalctl -u odoo11

Testen Sie die 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 Sie Nginx als SSL-Terminierungsproxy #

Wenn Sie Nginx als SSL-Terminierungsproxy verwenden möchten, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben:

  • Sie haben einen Domainnamen, der auf die IP Ihres öffentlichen Servers verweist. In diesem Tutorial verwenden wir example.com .
  • Sie haben Nginx installiert, indem Sie diese Anweisungen befolgen.
  • Sie haben ein SSL-Zertifikat für Ihre Domain installiert. Sie können ein kostenloses SSL-Zertifikat von Let’s Encrypt installieren, indem Sie diesen Anweisungen folgen.

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

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

Wir müssen Odoo mitteilen, dass wir einen Proxy verwenden werden, die Konfigurationsdatei öffnen und die folgende Zeile hinzufügen:

/etc/odoo11.conf
proxy_mode = True

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

sudo systemctl restart odoo11

Die Verwendung von Nginx als Proxy bietet uns mehrere Vorteile. In diesem Beispiel konfigurieren wir die SSL-Terminierung, die HTTP-zu-HTTPS-Umleitung, die WWW-zu-nicht-WWW-Umleitung, cachen die statischen Dateien und aktivieren die GZip-Komprimierung.

/etc/nginx/sites-enabled/example.com
# 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 diesem Handbuch erstellt.

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

sudo systemctl restart nginx

Ändern Sie die Bindungsschnittstelle #

Dieser Schritt ist optional, aber eine bewährte Sicherheitspraxis. Standardmäßig lauscht der Odoo-Server auf allen Schnittstellen auf Port 8069. Wenn Sie also den direkten Zugriff auf Ihre Odoo-Instanz deaktivieren möchten, können Sie entweder Port 8069 für alle öffentlichen Schnittstellen blockieren oder Odoo zwingen, nur auf der lokalen Schnittstelle zu lauschen.

In dieser Anleitung zwingen wir Odoo, nur auf 127.0.0.1 zu lauschen , öffnen Sie die Odoo-Konfiguration und fügen Sie am Ende der Datei die folgenden zwei Zeilen hinzu:

/etc/odoo11.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 odoo

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 wir 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 verwenden wir zur Berechnung der Worker-Anzahl und der erforderlichen RAM-Speichergröße die folgenden Formeln und Annahmen:

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 Anfragen sind, während 80 % leichtere Anfragen sind. Schwere Anforderungen verwenden etwa 1 GB RAM, während leichtere etwa 150 MB RAM verwenden
  • Benötigter Arbeitsspeicher =Anzahl_der_Arbeiter * ((Verhältnis_leichter_Arbeiter*_Schätzung_des_Arbeitsspeichers_leichter_Arbeiter) + (Verhältnis_schwerer_Arbeiter*_Schätzung_des_Arbeitsspeichers_schwerer_Arbeiter) )

Wenn Sie nicht wissen, wie viele CPUs Sie auf Ihrem System haben, können Sie den folgenden Befehl verwenden:

grep -c ^processor /proc/cpuinfo

Nehmen wir an, wir 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 wir 5 Worker + 1 Worker für den Cron-Worker verwenden, was insgesamt 6 Worker sind.

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

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

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

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

/etc/odoo11.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 odoo11

Der Rest der Systemressourcen wird von anderen Diensten verwendet, die auf unserem Computer ausgeführt werden. In dieser Anleitung haben wir Odoo zusammen mit PostgreSQL und Nginx auf demselben Server installiert und abhängig von Ihrer Einrichtung können Sie auch andere Dienste auf Ihrem Server ausführen.


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