Hướng dẫn cài đặt Odoo 14 trên Ubuntu 20

20
0

Hướng dẫn cài đặt Odoo 14 trên Ubuntu 20.

cài đặt Odoo 14 trên Ubuntu 20

I. Giới thiêu.

Odoo là một phần mềm một nguồn mở CRM quản lý kinh doanh tất cả trong một. Cung cấp một bộ ứng dụng kinh doanh khác nhau cho các mục đích sử dụng khác nhau như Thương mại điện tử, quản lý dự án, quầy trợ giúp, kế toán, kiểm kê và một số công cụ xây dựng trang web.

Trong bài viết này, mình sẽ hướng dẫn bạn cách cài đặt Odoo ( Open Source ERP&CRM ) trên Ubuntu 20. Và đề cài đặt được thì tất yếu cần một máy chủ CentOS 8. Nếu bạn chưa có máy chủ VPS thì đừng ngần ngại Order ngay một VPS KVM tại AZDIGI nhé.

II. Hướng dẫn cài Odoo 14 trên máy Ubuntu 20

Bước 1: Cập nhật hệ thống và cài các gói cần thiết

Lệnh dưới sẽ cài đặt git, pip, nodejs. Đây là những công cụ để hỗ trợ cài đặt Odoo

DOTRUNGQUAN.INFO
sudo apt update
sudo 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
    
cài đặt Odoo 14 trên Ubuntu 20

Bước 2: Tạo User Odoo

Việc chạy Odoo dưới tài khoản root không được cho phép vì rủi ro về mặt security khá lớn. Do đó mình sẽ tạo một user và có group với thư mục home /opt/odoo14 – được sử dụng để chạy dịch vụ Odoo 14.

DOTRUNGQUAN.INFO
useradd -m -d /opt/odoo14 -U -r -s /bin/bash odoo14
    

Bạn có thể đặt tên user dùng bất cứ tên nào bạn muốn cũng được, miễn sao tạo tên user giống với user PostgreSQL là được. Và ở đây mình đặt là odoo14

cài đặt Odoo 14 trên máy Ubuntu 20

Bước 3: Cài đặt cấu hình PostgreSQL

Odoo sử dụng PostgreSQL để làm backend database. PostgreSQL có sẵn trong thư viên repository tiêu chuẩn của Ubuntu sẵn rồi, nên để cài đặt PostgreSQL, các bạn chỉ cần thực hiện chạy câu lệnh như sau.

DOTRUNGQUAN.INFO
apt install postgresql -y
    

Sau khi quá trình cài đặt đã hoàn thành, các bạn có thể tạo tài khoản PostgreSQL có cùng tên với tài khoản user mà bạn đã tạo Bước 2. Và ở đây mình cũng sẽ tạo với tên odoo14

DOTRUNGQUAN.INFO
su - postgres -c "createuser -s odoo14"
    

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

wkhtmltopdf là một tập các công cụ mã nguồn mở phục vụ cho mục đích rendering các trang HTML sang dạng PDF và các định dạng hình ảnh phổ biến. Để in các trang report dạng PDF trong Odoo, bạn sẽ cần phải cài đặt package wkhtmltopdf. Phiên bản wkhtmltopdf mình khuyến nghị bạn là 0.12.5 và bạn có thể được download từ github với lệnh wget hoặc git

DOTRUNGQUAN.INFO
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb
apt install ./wkhtmltox_0.12.6-1.bionic_amd64.deb
    
Screenshot 2021 04 09 at 09.36.53
Screenshot 2021 04 09 at 09.37.21

Bước 5: Cài đặt và cấu hình Odoo 14

Mình sẽ cài đặt Odoo 14 trong môi trường riêng biệt với Python virtual environment . Ở bước này bạn sẽ làm việc ở user odoo14.

DOTRUNGQUAN.INFO
su - odoo14
git clone https://www.github.com/odoo/odoo --depth 1 --branch 14.0 /opt/odoo14/odoo
    
Screenshot 2021 04 09 at 09.41.23

Tạo Python virtual environment cho Odoo14

DOTRUNGQUAN.INFO
cd /opt/odoo14
python3 -m venv odoo-venv
source odoo-venv/bin/activate
    
Screenshot 2021 04 09 at 09.42.23
Screenshot 2021 04 09 at 09.48.22

Cài đặt các Module cần thiết với pip3

DOTRUNGQUAN.INFO
cd /opt/odoo14
pip3 install wheel
pip3 install -r odoo/requirements.txt
deactivate
    

Tạo ra một thư mục mới để chứa các addons third-party.

DOTRUNGQUAN.INFO
mkdir /opt/odoo14/odoo-custom-addons
    

Mình sẽ thêm thư mục này vào tham số addons_path. Tham số này định nghĩa một danh sách các thư mục mà Odoo sẽ tìm kiếm để sử dụng các modules. Ở bước này bạn hãy di chuyển sang User ROOT để thực hiện

DOTRUNGQUAN.INFO
exit
    

Tạo file cấu hình odoo14.conf tại /etc/

DOTRUNGQUAN.INFO
vi /etc/odoo14.conf
    
[options]
; This is the password that allows database operations:
admin_passwd = ĐẶT_MẬT_KHẨU ##Đây là Passwd Master dùng để cấu hình các bước tiếp theo
db_host = False
db_port = False
db_user = odoo14
db_password = False
addons_path = /opt/odoo14/odoo/addons,/opt/odoo14/odoo-custom-addons
Screenshot 2021 04 09 at 09.49.06

Tạo file service systemd đặt tên là odoo14.service với nội dung sau đây:

DOTRUNGQUAN.INFO
vi /etc/systemd/system/odoo14.service
    
[Unit]
Description=Odoo14
Requires=postgresql.service
After=network.target postgresql.service

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

[Install]
WantedBy=multi-user.target
Screenshot 2021 04 09 at 09.49.31

Reload daemon lại để thông báo cho systemd biết có file unit service mới.

DOTRUNGQUAN.INFO
systemctl daemon-reload
    

Khởi chạy service Odoo và kích hoạt nó khi khởi động hệ thống.

DOTRUNGQUAN.INFO
systemctl enable --now odoo14
systemctl status odoo14
    
Screenshot 2021 04 09 at 09.49.59

Bước 6: Truy cập và thiết lập Odoo 14

Bây giờ bạn hãy mở trình duyệt web của bạn lên, và truy cập vào địa chỉ có dạng như sau: http://my-IP:8069

Tại đây bạn nhập vào các thông tin sau

  • Master Passwd: Bạn nhập Passwd đã đặt ở bước Tạo file cấu hình odoo14.conf
  • Database Name: Đặt tên Database
  • Email: Nhập vào email của bạn, và đây là email dùng để đăng nhập
  • Passwd: Đặt passwd quản trị. Đây là passwd dùng để đăng nhập với email
  • Phone Number: Nhập vào SĐT
  • Language: Chọn ngôn ngữ sử dụng
  • Country: Nhập vào Quốc gia

Sau khi đã nhập hoàn tất bạn click vào Create Database

Screenshot 2021 04 09 at 10.15.39
Screenshot 2021 04 09 at 10.16.45
Screenshot 2021 04 09 at 10.17.23

Bước 7: Cấu hình Nginx Reverse Proxy

Trước khi cấu hình bạn cần cài đặt Nginx. Để cài đặt bạn dùng lệnh sau

apt install nginx -y

Mặc định web service Odoo chỉ xử lý traffic thông qua giao thức HTTP. Để triển khai Odoo trở nên an toàn hơn, mình sẽ thiết lập Nginx thành proxy server sử dụng SSL để xử lý traffic thông qua HTTPS.

NGINX Proxy server sẽ mã hóa và giải mã SSL, nghĩa là proxy (nginx) sẽ xử lý luồng traffic thông qua kênh kết nối TLS an toàn đảm bảo dữ liệu được truyền tải trên internet của bạn sẽ không bị nghe trộm (man-in-the-middle). Khi sử dụng reverse proxy sẽ cung cấp cho bạn rất nhiều lợi ích khác nhau như: Load Balancing, SSL, Caching, compression, static file.

DOTRUNGQUAN.INFO
vi /etc/nginx/sites-enabled/example.conf
    

Lưu ý: Thay example.com bằng tên miền của bạn.

Cấu hình sau đây thiết lập Kết thúc SSL, chuyển hướng HTTP sang HTTPS, chuyển hướng WWW sang không WWW, lưu vào bộ nhớ cache các tệp tĩnh và bật tính năng nén GZip.

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

Bây giờ bạn hãy khởi động lại NGINX với lệnh sau

DOTRUNGQUAN.INFO
systemctl restart nginx
    

Tiếp theo, chúng ta cần yêu cầu Odoo sử dụng proxy. Để làm như vậy, hãy mở tệp cấu hình và thêm dòng sau:

DOTRUNGQUAN.INFO
vi /etc/odoo14.conf
    
proxy_mode = True

Khởi động lại Odoo để áp dụng các thay đổi

DOTRUNGQUAN.INFO
systemctl restart odoo14
    

Tại đây Proxy ngược được định cấu hình và bạn có thể truy cập phiên bản Odoo của mình tại https://example.com.

Bước 8: Thay đổi Binding Interface

Khi bạn thực hiện xong BƯỚC 7 là đã hoàn tất rồi. Nhưng bạn có thể làm thêm BƯỚC 8 này để bảo mật hơn nữa.

Theo mặc định, máy chủ Odoo lắng nghe cổng 8069 trên tất cả các interface. Để vô hiệu hóa quyền truy cập trực tiếp vào Odoo, bạn có thể chặn cổng 8069 cho tất cả các public interface hoặc buộc Odoo chỉ nghe trên local interface. Và mình sẽ định cấu hình Odoo để chỉ nghe trên 127.0.0.1. Bạn hãy mở cấu hình, thêm hai dòng sau vào cuối tệp:

DOTRUNGQUAN.INFO
vi /etc/odoo14.conf
    
xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1

Sau đó hãy khởi động lại Odoo để áp dụng thay đổi

DOTRUNGQUAN.INFO
systemctl restart odoo14
    

Bước 9: Kích hoạt Multi Processing

Theo mặc định, Odoo đang hoạt động ở chế độ multithreading. Đối với triển khai production, bạn nên thay đổi sang máy chủ đa xử lý (multiprocessing) vì nó tăng tính ổn định và sử dụng tài nguyên hệ thống tốt hơn.

Để enable multiprocessing, bạn cần sửa cấu hình Odoo và thiết lập con số khác 0 vào phần number worker. Số worker được tính toán dựa trên số core CPU trong hệ thống và lượng RAM khả dụng.

Theo tài liệu chính thức của Odoo , để tính toán số lượng công nhân và kích thước bộ nhớ RAM cần thiết , bạn có thể sử dụng các công thức và giả định sau:

Tính toán sốWorker

  • Số Worker tối đa = (system_cpus * 2) + 1
  • 1 Worker có thể phục vụ ~= 6 User cùng lúc.
  • Cron workers cũng cần sử dụng CPU

Tính toán số RAM

  • Ví dụ 20% ​​tổng số yêu cầu (Request) là yêu cầu nặng và 80% là yêu cầu nhẹ hơn. Các yêu cầu nặng đang sử dụng khoảng 1 GB RAM trong khi các yêu cầu nhẹ hơn sử dụng khoảng 150 MB RAM
  • Lượng RAM cần thiết = sốworker * ( (tỉ_lệ_worker_xử_lý_request_nhẹ * lượng_ramước_tính_sửdụng_bởi_worker_xử_lý_request_nhẹ) + (tỉ_lệ_worker_xử_lý_request_nặng * lượng_ramước_tính_sử_dụng_bởi_worker_xử_lý_request_nặng) )

Nếu bạn không biết số CPU trên máy chủ hãy sử dụng lệnh này.

DOTRUNGQUAN.INFO
grep -c ^processor /proc/cpuinfo
    

Giả sử hệ thống có 4 CPU, 8 GB RAM, và 30 Odoo users đồng thời hoạt động thì

  • 30 users / 6 = 5 (5 là số worker cần thiết theo lý thuyết)
  • (4 * 2) + 1 = 9 (9 là số worker tối đa theo lý thuyết)

Dựa vào phép tính trên, bạn có thể sử dụng 5 workers + 1 workers cho cron nghĩa là sẽ cần đến 6 workers.

Tính toán dựa trên mức tiêu thụ RAM của workers

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

Tính toán cho thấy cài đặt Odoo sẽ cần khoảng 2GB RAM. Để chuyển sang chế độ đa xử lý, hãy mở tệp cấu hình và nối các giá trị đã tính toán:

DOTRUNGQUAN.INFO
vi /etc/odoo14.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

Sau đó hãy khởi động lại odoo để áp dụng thay đổi.

DOTRUNGQUAN.INFO
systemctl restart odoo14
    

Phần còn lại của tài nguyên hệ thống sẽ được sử dụng bởi các dịch vụ khác chạy trên hệ thống này. Trong hướng dẫn này, mình đã cài đặt Odoo cùng với PostgreSQL và Nginx trên cùng một máy chủ. Tùy thuộc vào thiết lập của bạn, bạn cũng có thể có các dịch vụ khác đang chạy trên máy chủ của mình.

Như vậy mình vừa hướng dẫn bạn thực hiện cài đặt Odoo lên Ubuntu 20 hoàn tất. Hi vọng bài viết trên sẽ giúp bạn có thể chủ động trong việc cài đặt mà không gặp bất kỳ trở ngại nào. Nếu bạn cần dịch vụ triển khai hãy để lại thông tin bên dưới hoặc Liên hệ trực tiếp với mình nhé.

  • Tài liệu tham khảo: https://linuxize.com/post/how-to-install-odoo-14-on-ubuntu-20-04/

Xem thêm:

Đỗ Trung Quân
WRITTEN BY

Đỗ Trung Quân

Nguồn nội dung này đến từ Website DoTrungQuan.info

Trả lời