Tìm kiếm trang web

Cài đặt Odoo EPR 17 trên Rocky, Alma, CentOS, RHEL 9|8


Tại thời điểm viết bài viết này, Odoo ERP 17 là phiên bản mới nhất của phần mềm Quản trị Nguồn lực Doanh nghiệp (ERP) mã nguồn mở tuyệt vời, được tạo ra để giúp các quy trình kinh doanh của bạn luôn được tối ưu hóa. Odoo ERP cung cấp cho bạn một nền tảng với các ứng dụng tích hợp để giải quyết tất cả các vấn đề kinh doanh của bạn, từ nhân sự, quản lý quan hệ khách hàng (CRM), quản lý kho, tài chính, sản xuất, bán hàng đến thương mại điện tử. Trong Odoo ERP, tất cả các tích hợp này được phân phối thông qua phương pháp mô-đun, cho phép bạn bắt đầu với vài mô-đun và tích hợp thêm khi có nhu cầu. Điều này giúp Odoo trở thành một giải pháp cực kỳ linh hoạt và có khả năng mở rộng cao.

Để cài đặt Odoo ERP 17 trên Rocky Linux, AlmaLinux, CentOS hoặc RHEL 9/8, bạn cần thực hiện theo một số bước sau:

  • Cài đặt các phụ thuộc cần thiết để chạy Odoo 17
  • Tạo môi trường ảo Python
  • Cài đặt Odoo 17 trên Rocky/AlmaLinux/RHEL 9|8
  • Cấu hình Odoo và máy chủ web
  • Truy cập và sử dụng Odoo

Để biết các tính năng của Odoo ERP 17, xem Ghi chú phát hành Odoo 17

Điều kiện tiên quyết

Trước khi bạn có thể tiếp tục, bạn sẽ cần đáp ứng các yêu cầu sau.

Yêu cầu Hệ thống:
  1. Hệ điều hành: Đã cài đặt Rocky, Alma, CentOS Stream hoặc RHEL 8/9
  2. CPU: Tối thiểu CPU lõi kép (Nếu có lõi tứ thì càng tốt).
  3. RAM: Tối thiểu 2GB bộ nhớ (Nếu bạn có 4GB hoặc hơn thì càng tốt).
  4. Ổ đĩa: Tối thiểu 20GB dung lượng trống để lưu trữ dữ liệu Odoo.
Yêu cầu phần mềm:
  1. Python: Python 3.10 trở lên.
  2. PostgreSQL: PostgreSQL 12 trở lên.
  3. Node.js và npm: Node.js 12.x trở lên và npm để quản lý tài nguyên.
  4. Wkhtmltopdf: Yêu cầu một phiên bản cụ thể của wkhtmltopdf (0.12.5 hoặc 0.12.6) để in báo cáo PDF.
  5. Nginx hay Apache: Dùng để làm reverse proxy (thường ưu tiên Nginx).

Hãy bắt đầu cài đặt Odoo ERP.

Bước 1 – Cài đặt các phụ thuộc xây dựng

Cập nhật hệ thống của bạn trước khi cài đặt bất kỳ thứ gì:

sudo dnf -y update

Nếu bạn có các bản cập nhật kernel, hãy cân nhắc khởi động lại hệ thống trước khi tiếp tục:

sudo reboot

Tiếp theo, cài đặt các công cụ phát triển trên hệ thống của bạn.

sudo dnf groupinstall -y "Development Tools"

Cài đặt các thư viện bổ sung có thể cần thiết khi xây dựng Odoo từ mã nguồn:

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

Bước 2 – Cài đặt Python 3.11 & Node.js

Chúng ta cần cài đặt Python 3.10 trở lên. Trong bài viết này, chúng ta sẽ sử dụng Python 3.11.

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

Xác nhận đã cài đặt thành công bằng cách kiểm tra phiên bản.

$ python3.11 --version
Python 3.11.9

Chúng ta cũng hãy cài đặt Node.js. Không có phiên bản cụ thể, chúng ta sẽ sử dụng Nodejs v18.

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

Xác minh bằng cách kiểm tra số phiên bản Node.js.

$ node --version
v18.20.2

Cài đặt module node rtlcss bằng npm:

sudo npm install -g rtlcss

Cũng cài đặt Less và Plugin Less Clean CSS:

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

Bước 3 – Cài đặt và cấu hình cơ sở dữ liệu PostgreSQL

Yêu cầu phải có PostgreSQL 12 trở lên. Chúng ta có thể cài đặt PostgreSQL 16, có sẵn trong kho APPStream của hệ điều hành. Đặt lại module PostgreSQL hiện tại.

sudo dnf module -y disable postgresql

Bật mô-đun PostgreSQL 16.

sudo dnf install -y @postgresql:16

Cũng cài đặt gói postgresql-devel.

sudo dnf install -y  postgresql-devel

Khởi tạo máy chủ cơ sở dữ liệu.

sudo postgresql-setup initdb

Khởi động và kích hoạt dịch vụ cơ sở dữ liệu.

sudo systemctl enable --now postgresql

Cuối cùng, tạo người dùng cơ sở dữ liệu odoo. Cung cấp mật khẩu cho người dùng khi được yêu cầu.

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

Để tạo người dùng với mật khẩu, hãy chạy:

sudo -u postgres createuser odoo -U postgres -dP

Đối với máy chủ cơ sở dữ liệu PostgreSQL từ xa, bạn sẽ bật kết nối từ xa trên máy chủ cơ sở dữ liệu của mình để Odoo có thể kết nối với nó.

Bước 4 – Cài đặt wkhtmltopdf

Wkhtmltopdf là một công cụ dòng lệnh mã nguồn mở được Odoo sử dụng để chuyển đổi HTML thành PDF và các định dạng hình ảnh khác thông qua công cụ kết xuất Webkit mạnh mẽ. Điều này là cần thiết để tạo ra các tài liệu như hóa đơn, báo cáo và các tài liệu có thể in khác.

Tải xuống và cài đặt gói RPM wkhtmltopdf.

  • Hệ thống dựa trên 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
  • Hệ thống dựa trên 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

Xác nhận cài đặt:

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

Bước 5 – Cài đặt môi trường Python cho Odoo

Tạo người dùng có tên odoo để chạy các dịch vụ Odoo.

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

Cài đặt virtualenv:

sudo pip3.11 install virtualenv

Chuyển sang tài khoản người dùng odoo đã tạo.

sudo su - odoo

Sao chép kho lưu trữ Github của Odoo về máy cục bộ.

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

Sử dụng lệnh virtualenv để tạo môi trường ảo Python cho Odoo ERP.

virtualenv odoo-venv

Kích hoạt môi trường ảo đã được tạo.

source odoo-venv/bin/activate

Nâng cấp pip sau khi kích hoạt.

pip3.11 install --upgrade pip

Cài đặt gói Python wheel trong môi trường

pip3.11 install wheel

Cài đặt các yêu cầu python của Odoo 17

pip3.11 install -r odoo/requirements.txt

Để liệt kê tất cả các gói Python đã cài đặt trong môi trường ảo, hãy chạy lệnh sau:

pip3.11 list

Tạo một thư mục sẽ lưu trữ tất cả các addon của bên thứ ba.

mkdir odoo/custom-addons

Thoát khỏi môi trường ảo.

exit

Bước 6 – Cấu hình Odoo ERP

Sao chép tệp cấu hình mẫu của Odoo vào thư mục /etc trên hệ thống của bạn.

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

Tệp odoo.conf chứa các cấu hình quan trọng cần thiết để Odoo hoạt động đúng cách. Mở tệp để chỉnh sửa.

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

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

Điều chỉnh các cài đặt giống như bên dưới.

[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

Đối với máy chủ PostgreSQL từ xa, hãy thiết lập:

  • db_host: Địa chỉ IP của máy chủ cơ sở dữ liệu PostgreSQL
  • db_password: Mật khẩu cho người dùng được tạo trên cơ sở dữ liệu từ xa
  • db_user: Người dùng cơ sở dữ liệu từ xa đã được tạo.

Cấp quyền thích hợp cho tệp:

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

Tạo dịch vụ systemd cho 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

Tạo thư mục logs.

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

Khởi động và bật dịch vụ odoo.

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

Kiểm tra trạng thái dịch vụ xem có hoạt động đúng không.

$ 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.

Bước 7 – Cấu hình firewalld

Dịch vụ đang lắng nghe trên cổng 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 <->

Nếu bạn sử dụng firewalld, hãy cho phép cổng 8069

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

Bạn có thể truy cập bảng điều khiển web Odoo tại http://serverip:8069 và hoàn tất quá trình thiết lập.

Nhập giá trị admin_passwd đã được thiết lập trong odoo.conf cho Mật khẩu chính. Chỉ định tên cơ sở dữ liệu để tạo ví dụ là odoo17. Sau đó tạo người dùng quản trị đầu tiên bằng cách cung cấp địa chỉ email và mật khẩu. Tùy chọn có thể thiết lập số điện thoại, ngôn ngữ và quốc gia.

Sau khi hoàn tất cài đặt, đăng nhập bằng tài khoản quản trị viên đã tạo và mật khẩu của nó.

Bạn sẽ vào bảng điều khiển Odoo để kích hoạt các mô-đun, v.v.

Bước 8 – Cấu hình Nginx Proxy

Chúng ta có thể sử dụng Nginx để proxy các yêu cầu đến Odoo ERP. Cài đặt gói nginx.

sudo dnf -y install nginx

Cho phép dịch vụ khởi động tự động khi hệ thống bật.

sudo systemctl enable nginx

Tạo tệp cấu hình Nginx cho dịch vụ Odoo.

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

Dán và chỉnh sửa các nội dung sau. Bạn phải thay thế odoo.example.com bằng tên miền thực tế của bạn.

# 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;
}

Xác minh cấu hình 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

Nếu mọi thứ trông ổn, hãy khởi động lại dịch vụ.

sudo systemctl restart nginx

Truy cập bảng điều khiển web Odoo tại http://yourdomain.com

Bước 9 – Sử dụng SSL của Let’s Encrypt

Đối với các máy chủ trên miền công khai, bạn có thể sử dụng SSL miễn phí của Let’s Encrypt.

Cài đặt certbot và plugin Nginx của nó.

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

Yêu cầu chứng chỉ SSL của Let’s Encrypt.

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

Nếu bạn không muốn cung cấp địa chỉ email, hãy sử dụng L

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

Ví dụ kết quả:

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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Nó sẽ tự động cấu hình /etc/nginx/conf.d/odoo.conf để bao gồm SSL.

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

Kết luận

Chúng tôi đã kết thúc hướng dẫn cài đặt Odoo trên các hệ thống Linux Rocky, AlmaLinux, CentOS và RHEL 9. Chúng tôi bắt đầu bằng việc chuẩn bị máy chủ với các phụ thuộc cần thiết, sau đó tiến hành cài đặt và cấu hình Odoo ERP. Với các mô-đun phong phú của Odoo, khả năng tùy chỉnh linh hoạt và mạnh mẽ, nó trở thành một giải pháp kinh doanh phù hợp để tự động hóa các quy trình.