GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Installieren Sie Odoo 13 auf CentOS 8

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

Dieses Tutorial erklärt, wie man Odoo13 von der Quelle in einer virtuellen Python-Umgebung auf einem CentOS 8-Rechner installiert. Wir laden die Odoo-Quelle von Github herunter und konfigurieren Nginx als Reverse-Proxy.

Voraussetzungen #

Sie müssen als Root oder Benutzer mit sudo-Berechtigungen angemeldet sein, um die Installation abzuschließen.

Installation von Abhängigkeiten #

Installieren Sie Python 3, Git, pip und alle Bibliotheken und Tools, die zum Erstellen von Odoo aus der Quelle erforderlich sind:

sudo dnf install python3 python3-devel git gcc redhat-rpm-config libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel

Erstellen eines Systembenutzers #

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

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

Sie können den Benutzer beliebig benennen, stellen Sie nur sicher, dass Sie einen PostgreSQL-Benutzer mit demselben Namen erstellen.

PostgreSQL installieren und konfigurieren #

Wir installieren PostgreSQL10 aus den Standard-Repositories von CentOS 8:

sudo dnf install @postgresql:10

Erstellen Sie nach Abschluss der Installation einen neuen PostgreSQL-Datenbankcluster:

sudo postgresql-setup initdb

Aktivieren und starten Sie den PostgreSQL-Dienst:

sudo systemctl enable --now postgresql

Erstellen Sie einen PostgreSQL-Benutzer mit demselben Namen wie der zuvor erstellte Systembenutzer, in unserem Fall ist das „odoo13“:

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

Installation von 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.5 , die nicht in den offiziellen CentOS 8-Repositories verfügbar ist.

Installieren Sie die rpm Paket von Github, indem Sie Folgendes eingeben:

sudo dnf install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm

Installieren und Konfigurieren von Odoo 13 #

Bevor Sie mit der Installation beginnen, wechseln Sie zum Benutzer „odoo13“:

sudo su - odoo13

Klonen Sie zunächst den Quellcode von Odoo 13 aus dem Odoo GitHub-Repository:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 13.0 /opt/odoo13/odoo

Navigieren Sie zu /opt/odoo13 Verzeichnis und erstellen Sie eine neue virtuelle Python-Umgebung für die Odoo-Installation:

cd /opt/odoo13python3 -m venv venv

Aktivieren Sie die Umgebung mit source Befehl:

source venv/bin/activate

Installieren Sie die erforderlichen Python-Module:

pip3 install -r odoo/requirements.txt
Wenn während der Installation Kompilierungsfehler auftreten, vergewissern Sie sich, dass Sie alle erforderlichen Abhängigkeiten installiert haben, die im Abschnitt Installing Dependencies aufgeführt sind Sektion.

Deaktivieren Sie nach Abschluss der Installation die Umgebung:

deactivate

Erstellen Sie ein neues Verzeichnis für die benutzerdefinierten Add-Ons:

mkdir /opt/odoo13/odoo-custom-addons

Wechseln Sie zurück zu Ihrem sudo-Benutzer:

exit

Öffnen Sie als Nächstes Ihren Texteditor und erstellen Sie die folgende Konfigurationsdatei:

sudo nano /etc/odoo13.conf
/etc/odoo13.conf
[options]
; This is the password that allows database operations:
admin_passwd = superadmin_passwd
db_host = False
db_port = False
db_user = odoo13
db_password = False
addons_path = /opt/odoo13/odoo/addons, /opt/odoo13/odoo-custom-addons

Speichern und schließen Sie die Datei.

Vergessen Sie nicht, das superadmin_passwd zu ändern zu etwas Sichererem.

Systemd-Unit-Datei erstellen #

Öffnen Sie Ihren Texteditor und erstellen Sie eine Datei namens odoo13.service innerhalb von /etc/systemd/system/ Verzeichnis:

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

Fügen Sie den folgenden Inhalt ein:

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

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

[Install]
WantedBy=multi-user.target

Speichern Sie die Datei und schließen Sie den Editor.

Systemd benachrichtigen, dass eine neue Unit-Datei existiert:

sudo systemctl daemon-reload

Starten und aktivieren Sie den Odoo-Dienst, indem Sie Folgendes ausführen:

sudo systemctl enable --now odoo13

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

sudo systemctl status odoo13
● odoo13.service - Odoo13
   Loaded: loaded (/etc/systemd/system/odoo13.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-12-11 20:04:52 UTC; 5s ago
 Main PID: 28539 (python3)
    Tasks: 4 (limit: 11524)
   Memory: 94.6M
   CGroup: /system.slice/odoo13.service
           └─28539 /opt/odoo13/venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.conf

Verwenden Sie den folgenden Befehl, um die vom Odoo-Dienst protokollierten Nachrichten anzuzeigen:

sudo journalctl -u odoo13

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:

Wenn Sie nicht auf die Seite zugreifen können, blockiert Ihre Firewall wahrscheinlich den Port 8069 .

Verwenden Sie die folgenden Befehle, um den erforderlichen Port zu öffnen:

sudo firewall-cmd --permanent --zone=public --add-port=8069/tcpsudo firewall-cmd --reload

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 konfigurieren, 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/conf.d/example.com

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/conf.d/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;

    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/odoo13.conf
proxy_mode = True

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

sudo systemctl restart odoo13

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

Ä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/odoo13.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 odoo13

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

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/odoo13.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 odoo13

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.


Cent OS
  1. Installieren Sie Jenkins unter CentOS 8

  2. So installieren Sie Odoo 9 auf CentOS 7

  3. Installieren Sie Odoo 10 auf CentOS 7

  4. So installieren Sie Odoo 12 auf CentOS 7

  5. Installieren Sie Odoo 9 auf Ubuntu 14.04

So installieren Sie Apache unter CentOS 7

So installieren Sie Tomcat 8.5 unter CentOS 7

Installieren Sie Odoo 11 auf CentOS 7

Installieren Sie Odoo 12 auf CentOS 7

So installieren Sie Odoo auf CentOS 7

So installieren Sie Odoo auf CentOS 8