Εγκατάσταση του Odoo EPR 17 σε Rocky, Alma, CentOS, RHEL 9|8


Στη στιγμή της συγγραφής αυτού του άρθρου, το Odoo ERP 17 είναι η πιο πρόσφατη έκδοση του εκπληκτικού λογισμικού Διαχείρισης Επιχειρησιακών Πόρων (ERP) ανοιχτού κώδικα, που δημιουργήθηκε για να βοηθήσει τις επιχειρησιακές σας διαδικασίες να παραμείνουν ομαλές. Το Odoo ERP σας προσφέρει μια πλατφόρμα με ενσωματωμένες εφαρμογές για να λύσετε όλα τα επιχειρησιακά σας προβλήματα, από HR, CRM, Διαχείριση Αποθεμάτων, Οικονομικά, Παραγωγή, Πωλήσεις έως Ηλεκτρονικό Εμπόριο. Στο Odoo ERP, όλες αυτές οι ενσωματώσεις διανέμονται μέσω μιας αρθρωτής προσέγγισης που σας επιτρέπει να ξεκινήσετε με λίγα μόνο μοντέλα και να ενσωματώσετε περισσότερα όποτε χρειάζεστε. Αυτό καθιστά το Odoo μια εξαιρετικά ευέλικτη και επεκτάσιμη λύση.

Για να εγκαταστήσετε το Odoo ERP 17 σε Rocky Linux, AlmaLinux, CentOS ή RHEL 9/8, πρέπει να ακολουθήσετε αρκετά βήματα:

  • Εγκατάσταση των εξαρτήσεων που απαιτούνται για τη λειτουργία του Odoo 17
  • Δημιουργία εικονικού περιβάλλοντος Python
  • Εγκατάσταση του Odoo 17 σε Rocky/AlmaLinux/RHEL 9|8
  • Διαμόρφωση του Odoo και του διαδικτυακού διακομιστή
  • Πρόσβαση και χρήση του Odoo

Για χαρακτηριστικά του Odoo ERP 17, δείτε τις Σημειώσεις Έκδοσης του Odoo 17

Προαπαιτούμενα

Πριν προχωρήσετε, θα χρειαστεί να πληροίτε τις ακόλουθες προϋποθέσεις.

Απαιτήσεις συστήματος:
  1. Λειτουργικό Σύστημα: Εγκατεστημένα Rocky, Alma, CentOS Stream ή RHEL 8/9
  2. CPU: Ελάχιστη διπύρηνη CPU (Αν έχετε τετραπύρηνη, ακόμα καλύτερα).
  3. RAM: Ελάχιστη μνήμη 2GB (Αν έχετε 4GB ή περισσότερη, τόσο το καλύτερο).
  4. Δίσκος: Ελάχιστος ελεύθερος χώρος 20GB για την αποθήκευση δεδομένων Odoo.
Απαιτήσεις λογισμικού:
  1. Python: Python 3.10 ή νεότερη.
  2. PostgreSQL: PostgreSQL 12 ή νεότερη έκδοση.
  3. Node.js και npm: Node.js 12.x ή νεότερο και npm για διαχείριση πόρων.
  4. Wkhtmltopdf: Απαιτείται συγκεκριμένη έκδοση του wkhtmltopdf (0.12.5 ή 0.12.6) για την εκτύπωση αναφορών PDF.
  5. Nginx ή Apache: Για αντίστροφη διαμεσολάβηση (συνήθως προτιμάται το Nginx).

Ας ξεκινήσουμε την εγκατάσταση του Odoo ERP.

Βήμα 1 – Εγκατάσταση των εξαρτήσεων κατασκευής

Ενημερώστε το σύστημά σας πριν από οποιεσδήποτε εγκαταστάσεις:

sudo dnf -y update

Αν έχετε ενημερώσεις του πυρήνα, σκεφτείτε να επανεκκινήσετε το σύστημα πριν προχωρήσετε περαιτέρω:

sudo reboot

Στη συνέχεια, εγκαταστήστε τα εργαλεία ανάπτυξης στο σύστημά σας.

sudo dnf groupinstall -y "Development Tools"

Εγκαταστήστε επιπλέον βιβλιοθήκες που ενδέχεται να απαιτούνται κατά την εγκατάσταση του Odoo από τον πηγαίο κώδικα:

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

Βήμα 2 – Εγκατάσταση Python 3.11 & Node.js

Χρειαζόμαστε να εγκαταστήσουμε την Python 3.10 ή νεότερη. Σε αυτό το άρθρο θα χρησιμοποιήσουμε την Python 3.11.

sudo dnf install python3.11 python3.11-devel python3.11-pip

Επιβεβαιώστε ότι εγκαταστάθηκε με επιτυχία ελέγχοντας την έκδοση.

$ python3.11 --version
Python 3.11.9

Ας εγκαταστήσουμε επίσης το Node.js. Δεν υπάρχει συγκεκριμένη έκδοση, θα χρησιμοποιήσουμε το Nodejs v18.

 sudo dnf module reset nodejs -y
sudo dnf module install nodejs:18 -y

Επαληθεύστε ελέγχοντας τον αριθμό έκδοσης του Node.js.

$ node --version
v18.20.2

Εγκαταστήστε το module rtlcss για node χρησιμοποιώντας το npm:

sudo npm install -g rtlcss

Εγκαταστήστε επίσης το Less και το πρόσθετο Less Plugin Clean CSS:

sudo npm install -g less less-plugin-clean-css

Βήμα 3 – Εγκατάσταση και ρύθμιση της βάσης δεδομένων PostgreSQL

Απαιτείται PostgreSQL 12 ή νεότερη έκδοση. Μπορούμε να εγκαταστήσουμε την PostgreSQL 16 που είναι διαθέσιμη στα αποθετήρια APPStream του λειτουργικού συστήματος. Επαναφέρετε το τρέχον module της PostgreSQL.

sudo dnf module -y disable postgresql

Ενεργοποιήστε το module PostgreSQL 16.

sudo dnf install -y @postgresql:16

Εγκαταστήστε επίσης το πακέτο postgresql-devel.

sudo dnf install -y  postgresql-devel

Αρχικοποιήστε τον διακομιστή βάσης δεδομένων.

sudo postgresql-setup initdb

Ξεκινήστε και ενεργοποιήστε την υπηρεσία βάσης δεδομένων.

sudo systemctl enable --now postgresql

Τέλος, δημιουργήστε τον χρήστη βάσης δεδομένων odoo. Δώστε έναν κωδικό πρόσβασης για τον χρήστη όταν σας ζητηθεί.

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

Για να δημιουργήσετε έναν χρήστη με κωδικό, εκτελέστε:

sudo -u postgres createuser odoo -U postgres -dP

Για απομακρυσμένο διακομιστή βάσης δεδομένων PostgreSQL, θα ενεργοποιήσετε τις απομακρυσμένες συνδέσεις στον διακομιστή βάσης σας ώστε το Odoo να μπορεί να συνδεθεί σε αυτόν.

Βήμα 4 – Εγκατάσταση του wkhtmltopdf

Wkhtmltopdf είναι ένα εργαλείο ανοικτού κώδικα CLI που χρησιμοποιείται από το Odoo για τη μετατροπή HTML σε PDF και άλλες μορφές εικόνας μέσω της ισχυρής μηχανής απόδοσης Webkit. Αυτό απαιτείται για τη δημιουργία εγγράφων όπως τιμολόγια, αναφορές και άλλα έγγραφα προς εκτύπωση.

Κατεβάστε και εγκαταστήστε το πακέτο RPM του wkhtmltopdf.

  • Συστήματα βασισμένα σε RHEL 9
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm
sudo dnf install -y ./wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm
  • Συστήματα βασισμένα σε RHEL 8
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm
sudo dnf install -y ./wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm

Επαληθεύστε την εγκατάσταση:

$ wkhtmltopdf --version
wkhtmltopdf 0.12.6.1 (with patched qt)

Βήμα 5 – Ρύθμιση του Περιβάλλοντος Python για το Odoo

Δημιουργήστε χρήστη με όνομα odoo που θα εκτελεί τις υπηρεσίες Odoo.

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

Εγκατάσταση virtualenv:

sudo pip3.11 install virtualenv

Αλλάξτε στον δημιουργημένο λογαριασμό χρήστη odoo.

sudo su - odoo

Κλωνοποιήστε το αποθετήριο Github του Odoo τοπικά.

git clone --depth 1 --branch 17.0 --single-branch https://github.com/odoo/odoo.git

Χρησιμοποιήστε την εντολή virtualenv για να δημιουργήσετε ένα εικονικό περιβάλλον Python για το Odoo ERP.

virtualenv odoo-venv

Ενεργοποιήστε το δημιουργημένο εικονικό περιβάλλον.

source odoo-venv/bin/activate

Αναβαθμίστε το pip αφού το ενεργοποιήσετε.

pip3.11 install --upgrade pip

Εγκαταστήστε το πακέτο Python wheel στο περιβάλλον

pip3.11 install wheel

Εγκατάσταση των απαιτήσεων Python για το Odoo 17

pip3.11 install -r odoo/requirements.txt

Για να καταγράψετε όλα τα πακέτα Python που είναι εγκατεστημένα στο εικονικό περιβάλλον, εκτελέστε την ακόλουθη εντολή:

pip3.11 list

Δημιουργήστε έναν φάκελο που θα αποθηκεύει όλα τα πρόσθετα τρίτων.

mkdir odoo/custom-addons

Βγες από το εικονικό περιβάλλον.

exit

Βήμα 6 – Διαμόρφωση Odoo ERP

Αντιγράψτε το δείγμα αρχείου ρύθμισης Odoo στον κατάλογο /etc στο σύστημά σας.

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

Το αρχείο odoo.conf περιέχει βασικές ρυθμίσεις που απαιτούνται για τη σωστή λειτουργία του Odoo. Ανοίξτε το αρχείο για επεξεργασία.

# Open with vim
sudo vim /etc/odoo.conf

# Open with nano
sudo nano /etc/odoo.conf

Ρύθμισε τις επιλογές ώστε να φαίνονται όπως παρακάτω.

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

Για απομακρυσμένο διακομιστή PostgreSQL, ορίστε:

  • db_host: Διεύθυνση IP του διακομιστή βάσης δεδομένων PostgreSQL
  • db_password: Κωδικός πρόσβασης για τον χρήστη που δημιουργήθηκε στη απομακρυσμένη βάση δεδομένων
  • db_user: Δημιουργήθηκε απομακρυσμένος χρήστης βάσης δεδομένων.

Δώστε στο αρχείο τα κατάλληλα δικαιώματα:

sudo chown odoo:odoo /etc/odoo.conf
sudo chmod 640 /etc/odoo.conf

Δημιουργήστε υπηρεσία systemd για το Odoo.

sudo tee /etc/systemd/system/odoo.service<<EOF
[Unit]
Description=Odoo ERP System
Documentation=http://www.odoo.com
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
SyslogIdentifier=odoo
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo-venv/bin/python3.11 /opt/odoo/odoo/odoo-bin \
  --config=/etc/odoo.conf \
  --addons-path=/opt/odoo/odoo/addons/ \
  --logfile /var/log/odoo/odoo-server.log
StandardOutput=journal+console
KillMode=mixed

[Install]
WantedBy=multi-user.target
EOF

Δημιουργήστε φάκελο καταγραφών.

sudo mkdir /var/log/odoo/
sudo chown -R odoo:odoo /var/log/odoo/

Ξεκινήστε και ενεργοποιήστε την υπηρεσία odoo.

sudo systemctl daemon-reload
sudo systemctl enable --now odoo.service

Ελέγξτε την κατάσταση της υπηρεσίας αν λειτουργεί σωστά.

$ systemctl status odoo
● odoo.service - Odoo ERP System
   Loaded: loaded (/etc/systemd/system/odoo.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-07-18 11:34:34 UTC; 21s ago
     Docs: http://www.odoo.com
 Main PID: 70809 (python3.11)
    Tasks: 4 (limit: 48750)
   Memory: 88.2M
   CGroup: /system.slice/odoo.service
           └─70809 /opt/odoo/odoo-venv/bin/python3.11 /opt/odoo/odoo/odoo-bin --config=/etc/odoo.conf --addons-path=/opt/odoo/odoo/addons/ --logfile /var/log/odoo/odoo-server.log

Jul 18 11:34:34 rocky8.cloudspinx.com systemd[1]: Started Odoo ERP System.

Βήμα 7 – Διαμόρφωση του firewalld

Η υπηρεσία ακούει στην θύρα 8069.

$ ss -tunelp | grep 8069
tcp   LISTEN 0      128          0.0.0.0:8069      0.0.0.0:*    users:(("python3.11",pid=70809,fd=4)) uid:989 ino:115353 sk:5 <->

Αν έχετε firewalld, επιτρέψτε τη θύρα 8069

sudo firewall-cmd --add-port=8069/tcp --permanent
sudo firewall-cmd --reload

Μπορείτε να αποκτήσετε πρόσβαση στην web κονσόλα του Odoo στο http://serverip:8069 και να ολοκληρώσετε τη ρύθμιση.

Εισάγετε την τιμή admin_passwd που έχει οριστεί στο odoo.conf για τον Κύριο κωδικό. Καθορίστε το όνομα της βάσης δεδομένων για δημιουργία, για παράδειγμα odoo17. Στη συνέχεια, δημιουργήστε τον πρώτο διαχειριστή παρέχοντας διεύθυνση email και κωδικό. Προαιρετικά, μπορείτε να ορίσετε αριθμό τηλεφώνου, γλώσσα και χώρα.

Αφού ολοκληρώσετε τη ρύθμιση, συνδεθείτε με τον διαχειριστή που δημιουργήσατε και τον κωδικό του.

Θα μεταβείτε στον πίνακα ελέγχου του Odoo για να ενεργοποιήσετε τα modules κ.λπ.

Βήμα 8 – Ρύθμιση του Nginx Proxy

Μπορούμε να χρησιμοποιήσουμε το Nginx για να προωθούμε αιτήματα στο Odoo ERP. Εγκαταστήστε το πακέτο nginx.

sudo dnf -y install nginx

Ενεργοποιήστε την υπηρεσία ώστε να ξεκινά αυτόματα κατά την εκκίνηση του συστήματος.

sudo systemctl enable nginx

Δημιουργήστε αρχείο διαμόρφωσης Nginx για την υπηρεσία Odoo.

 sudo vim /etc/nginx/conf.d/odoo.conf

Επικόλλησε και επεξεργάσου τα παρακάτω περιεχόμενα. Πρέπει να αντικαταστήσεις το odoo.example.com με το πραγματικό όνομα του τομέα σου.

# Odoo Upstreams
upstream odooserver {
 server 127.0.0.1:8069;
}

server {
    listen 80;
    server_name odoo.example.com;
    access_log /var/log/nginx/odoo_access.log;
    error_log /var/log/nginx/odoo_error.log;

    # Proxy settings
    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;
    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;

    # Request for root domain
    location / {
       proxy_redirect off;
       proxy_pass http://odooserver;
    }

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

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

Επαληθεύστε τις ρυθμίσεις του nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Αν όλα φαίνονται σωστά, επανεκκινήστε την υπηρεσία.

sudo systemctl restart nginx

Πρόσβαση στον ιστό πίνακα ελέγχου του Odoo στο http://yourdomain.com

Βήμα 9 – Χρήση SSL από το Let's Encrypt

Για διακομιστές σε δημόσιο τομέα, μπορείτε να χρησιμοποιήσετε δωρεάν SSL από το Let’s Encrypt.

Εγκαταστήστε το certbot και το πρόσθετο για Nginx.

sudo dnf install epel-release
sudo dnf install certbot python3-certbot-nginx -y

Αίτημα για SSL από το Let’s Encrypt.

DOMAIN=odoo.example.com #replace with your actual domain
sudo certbot --nginx -d $DOMAIN --agree-tos

Εάν δεν θέλετε να δώσετε διεύθυνση email, χρησιμοποιήστε τοL

sudo certbot --nginx -d $DOMAIN --agree-tos --register-unsafely-without-email

Δείγμα αποτελέσματος:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for odoo.example.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/odoo.example.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/odoo.example.com/privkey.pem
This certificate expires on 2024-10-16.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for odoo.cloudlabske.com to /etc/nginx/conf.d/odoo.conf
Congratulations! You have successfully enabled HTTPS on https://odoo.example.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Θα διαμορφώσει αυτόματα το /etc/nginx/conf.d/odoo.conf για να περιλαμβάνει SSL.

cat /etc/nginx/conf.d/odoo.conf

Συμπέρασμα

Έχουμε ολοκληρώσει το σεμινάριό μας για την εγκατάσταση του Odoo στα συστήματα Linux Rocky, AlmaLinux, CentOS και RHEL 9. Ξεκινήσαμε προετοιμάζοντας τον διακομιστή με τις απαραίτητες εξαρτήσεις και στη συνέχεια προχωρήσαμε στην εγκατάσταση και διαμόρφωση του Odoo ERP. Με την εκτενή συλλογή μονάδων του Odoo, τις ευέλικτες και ισχυρές προσαρμογές, καθίσταται μια κατάλληλη επιχειρηματική λύση για την αυτοματοποίηση των διαδικασιών.