Giao diện người dùng Odoo 12

Cài đặt và triển khai Odoo 12 trên Máy chủ Ubuntu 22.04

Trong bài viết này, tôi sẽ hướng dẫn bạn 6 bước để cài đặt Odoo 12 chạy với Python 3.7 và 3.8 trên Máy chủ Ubuntu 22.04 với PostgreSQL 10 và PostgreSQL 12.

Xin lưu ý rằng nếu bạn đang tìm cách cài đặt các phiên bản Odoo khác, bạn có thể đọc các bài liên quan khác của tôi:

Nếu bạn là nhà phát triển Odoo, bạn có thể quan tâm đến Cách thiết lập môi trường phát triển Odoo trên Ubuntu 22.04.

Tóm tắt

Trong bài đăng này, tôi sẽ hướng dẫn bạn 6 bước để cài đặt Odoo 12 trên máy chủ Ubuntu 22.04 để đạt được những điều sau:

  1. Odoo 12 chạy với Python 3.7:
    • Tài khoản Unix chạy Odoo: odoo12_37
    • Phiên bản PostgreSQL: 10
    • Cổng HTTP: 8089, để người dùng có thể truy cập bằng trình duyệt web với địa chỉ kiểu như http://ip_cua_server:8089
  2. Odoo 12 chạy với Python 3.8
    • Tài khoản Unix chạy Odoo: odoo12_38
    • Phiên bản PostgreSQL: 12
    • Cổng HTTP: 8099, để người dùng có thể truy cập bằng trình duyệt web với địa chỉ như http://your_ip: 8099
  3. Các bản Odoo nói trên (hay còn gọi là các instance) sẽ chạy như một dịch vụ với tính năng tự động khởi động.
  4. Các instance cũng sẽ được cách ly trong một môi trường chuyên biệt
  5. Chúng cũng sẽ được đặt master password để bảo vệ cơ sở dữ liệu của chúng. Người dùng có mật khẩu chính sẽ có thể tạo / xóa / sao lưu / khôi phục cơ sở dữ liệu

Bước 1 - Tạo nhóm và người dùng để chạy Odoo

Để bảo mật, chúng ta nên chạy các phiên bản Odoo bằng các tài khoản người dùng Linux riêng biệt có các thông số kỹ thuật sau:

  1. Đối với Odoo 12 chạy Python 3.7:
    • Tên tài khoản: odoo12_37
    • Thư mục home: /home/odoo12_37
  2. Đối với Odoo 12 chạy Python 3.8:
    • Tên tài khoản: odoo12_38
    • Thư mục home: /home/odoo12_38
  3. Tài khoản người dùng sẽ không thể đăng nhập vì mục đích bảo mật. Chúng cũng phải là tài khoản hệ thống mà daemon và các quy trình khác có thể dùng nó để chạy;
  4. Các tài khoản người dùng sẽ thuộc về một nhóm có quyền truy cập vào mã nguồn Odoo 12 (cụ thể là odoo);

Tạo nhóm unix

Chạy lệnh sau để tạo nhóm odoo:

sudo addgroup odoo

Tạo tài khoản odoo12_37

Chạy lệnh sau để tạo tài khoản odoo12_37 và thêm nó vào nhóm odoo:

sudo adduser odoo12_37 --system \
--home=/home/odoo12_37 --disabled-login \
--disabled-password --ingroup odoo

Tạo người dùng odoo12_38

Chạy lệnh sau để tạo tài khoản odoo12_38 và thêm nó vào nhóm odoo:

sudo adduser odoo12_38 --system \
--home=/home/odoo12_38 --disabled-login \
--disabled-password --ingroup odoo

Bước 2 – Cài đặt PostgreSQL cho Odoo 12

Tôi chưa thử nghiệm đầy đủ Odoo 12 với phiên bản PostgreSQL mới nhất là PostgreSQL 14 đi kèm với Ubuntu 22.04 nhưng tôi tin rằng nó sẽ hoạt động. Tuy nhiên, như đã thảo luận trong phần Tóm tắt, chúng ta sẽ cài đặt PostgreSQL 10 và 12. Nếu bạn muốn các phiên bản khác của PostgreSQL, bạn có thể làm theo một bài khác của tôi để cài đặt nhiều phiên bản PostgreSQL trên Ubuntu 22.04 trong trường hợp bạn muốn một phiên bản PostgreSQL khác.

Thêm PPA PostgreSQL chính thức

Vì Ubuntu 22.04 không có biết gì về các phiên bản PostgreSQL ngoài 14, chúng ta cần thêm PPA chính thức từ tác giả PostgreSQL

# Create the file repository configuration: 
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' 
# Import the repository signing key: 
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg 
# Update the package lists: 
sudo apt-get update 

Như thường lệ, chúng ta nên cập nhật hệ thống trước khi cài đặt bất kỳ thứ gì:

sudo apt dist-upgrade

Cài đặt PostgreSQL 10 và 12

sudo apt install postgresql-10
sudo apt install postgresql-12

Sau khi cài đặt hoàn tất và tôi giả sử rằng bạn chưa cài đặt bất kỳ postgreSQL nào trước đó, cổng lắng nghe của các cụm PostgreSQL mới được cài đặt sẽ là:

  • PostgreSQL 10: 5432
  • PostgreSQL 12: 5433

Trong trường hợp bạn có các phiên bản PostgreSQL khác đang chạy và bạn muốn sắp xếp lại việc gán các cổng, vui lòng làm theo hướng dẫn thay đổi cổng PostgreSQL.

Tạo các role cho cơ sở dữ liệu

Trong phần này, chúng ta sẽ tạo các vai trò (role) SQL cơ sở dữ liệu có cùng tên với tài khoản người dùng unix để Odoo có thể xác thực PosgreSQL bằng phương pháp ident (không sử dụng mật khẩu):

  • Odoo 12 chạy Python 3.7 sẽ kết nối PostgreSQL 10 trên cổng 5432 bằng cách sử dụng role odoo12_37,
  • Odoo 12 chạy Python 3.8 sẽ kết nối PostgreSQL 12 trên cổng 5433 bằng cách sử dụng role odoo12_38

Tạo Role odoo12_37

Lệnh dưới đây sẽ tạo một role có tên odoo12_37 trong PostgreSQL 10 đang lắng nghe trên cổng 5432:

sudo -u postgres createuser odoo12_37 --interactive -p 5432

Khi được hỏi trong phiên tương tác, vui lòng nhập như sau:

Tạo role odoo12_37 trong PostgreSQL 10
Tạo role odoo12_37 trong PostgreSQL 10

Tạo Role odoo12_38

Lệnh dưới đây sẽ tạo một role có tên odoo12_38 trong PostgreSQL 12 đang lắng nghe trên cổng 5433:

sudo -u postgres createuser odoo12_38 --interactive -p 5433

Khi được hỏi trong phiên tương tác, vui lòng nhập như sau:

Tạo role odoo12_33 trong PostgreSQL 12
Tạo role odoo12_33 trong PostgreSQL 12

Bước 3 - Tải xuống mã nguồn Odoo 12 từ GitHub

Trong phần này, chúng ta sẽ tải xuống mã nguồn Odoo 12 từ GitHub và thực hiện chính sách bảo mật cho quyền truy cập đọc cho người dùng trong nhóm odoo.

Để tải xuống mã nguồn của Odoo 12 từ GitHub, chỉ cần chạy lệnh bên dưới để sao chép nó bằng git qua HTTP:

git clone -b 12.0 https://github.com/odoo/odoo.git /opt/odoo/odoo12

Hoặc, bạn có thể sao chép kho lưu trữ từ GitHub qua SSH để có hiệu suất và bảo mật tốt hơn bằng cách sử dụng lệnh sau:

git clone -b 12.0 git@github.com:odoo/odoo.git /opt/odoo/odoo12

Tùy thuộc vào tốc độ kết nối internet của bạn, quá trình này có thể mất vài phút hoặc hơn. Hãy kiên nhẫn hoặc mở một phiên khác để thực hiện các bước tiếp theo của việc cài đặt Python một cách song song.

Sau khi quá trình hoàn tất, bạn sẽ tìm thấy mã nguồn Odoo 12 trong thư mục /opt/odoo/odoo12/.

Bây giờ, hãy bảo mật mã nguồn của bạn để chỉ cho phép những người dùng của nhóm odoo có thể đọc nó bằng cách thay đổi quyền truy cập cho nhóm odoo.

sudo chown -hR root:odoo /opt/odoo/odoo12

Bước 4 - Cài đặt Python 3.7 và 3.8

Như đã thảo luận, Odoo 12 hỗ trợ chính thức Python 3.7 và 3.8. Tuy nhiên, phiên bản Python đi kèm với Ubuntu 22.04 là 3.10 nên chúng ta cần tự cài đặt Python 3.7 và 3.8. Bạn có thể làm theo hướng dẫn về cách cài đặt nhiều phiên bản Python để hoàn thành bước này. Một cách tóm tắt thì các công việc sẽ như sau:

Thêm PPA Deadsnakes

sudo add-apt-repository ppa:deadsnakes/ppa

Cài đặt Python 3.7 và công cụ Môi trường ảo của nó

Vì chúng ta cần tạo một môi trường Python riêng biệt để Odoo 12 chạy để tránh làm hỏng những thứ hiện có, chúng ta cũng cần cài đặt Công cụ môi trường ảo Python. Đây là lệnh để cài đặt cả Python 3.7 và công cụ môi trường ảo của nó:

sudo apt install python3.7 python3.7-venv

Bây giờ, hãy chạy lệnh bên dưới để xác minh xem Python 3.7 có được cài đặt đúng cách hay không:

python3.7 -V

Bạn sẽ thấy kết quả như bên dưới

Xác minh xem Python 3.7 có được cài đặt đúng cách hay không
Xác minh xem Python 3.7 có được cài đặt đúng cách hay không

Cài đặt Python 3.8 và công cụ Môi trường ảo của nó

sudo apt install python3.8 python3.8-venv

Bây giờ, hãy chạy lệnh bên dưới để xác minh xem Python 3.8 có được cài đặt đúng cách hay không:

python3.8 -V

Bạn sẽ thấy kết quả như bên dưới

Xác minh xem Python 3.8 có được cài đặt đúng hay không
Xác minh xem Python 3.8 có được cài đặt đúng hay không

Bước 5 - Cài đặt Odoo 12

Các yêu cầu tiên quyết

Cài đặt phần mềm Ubuntu và các gói được yêu cầu để chạy Odoo 12 sau này:

sudo apt install python3.7-dev python3.8-dev \
build-essential libsass-dev libjpeg-dev \
libjpeg8-dev libldap-dev libldap2-dev \
libpq-dev libsasl2-dev libxslt1-dev zlib1g-dev

Cài đặt wkhtmltopdf

Odoo tạo PDF từ HTML, đó là lý do tại sao chúng ta cần wkhtmltopdf.

Tải xuống wkhtmltopdf:

wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb

Cài đặt wkhtmltopdf:

sudo dpkg -i wkhtmltox_0.12.6.1-2.jammy_amd64.deb
# force install dependencies
sudo apt -f install -y

Cài đặt Odoo 12 với Python 3.7 và PostgreSQL 10

Tạo môi trường ảo Odoo 12 Python 3.7

Tạo thư mục mẹ cho Odoo 12 với môi trường ảo Python 3.7:

sudo mkdir -p /python-venv/3.7/odoo12

Bảo mật môi trường ảo:

sudo chown -hR odoo12_37:odoo /python-venv/3.7/odoo12

Chuyển tài khoản người dùng hiện tại sang bash của odoo12_37:

sudo su - odoo12_37 -s /bin/bash

Tạo môi trường ảo:

python3.7 -m venv /python-venv/3.7/odoo12

Cài đặt các thư viện Python bắt buộc cho Odoo 12

Kích hoạt môi trường ảo mà chúng ta đã tạo ở trên:

source /python-venv/3.7/odoo12/bin/activate

Như thường lệ, trước tiên chúng ta cần nâng cấp pip lên phiên bản mới nhất cho môi trường ảo hiện hành trước:

pip install --upgrade pip

Bây giờ, hãy bắt đầu cài đặt các thư viện theo yêu cầu của Odoo 12 cho môi trường ảo. Hãy chắc chắn rằng bạn đã hoàn thành việc tải về mã nguồn Odoo 12.

pip install -r /opt/odoo/odoo12/requirements.txt

Khởi động Odoo 12

Bây giờ, chúng ta có thể khởi động Odoo 12 trong môi trường ảo bằng cách chạy lệnh sau kết nối PostgreSQL trên cổng 5432 và cung cấp cổng HTTP 8089 để client có thể truy cập:

/opt/odoo/odoo12/odoo-bin --db_port=5432 --http-port=8089

Bạn sẽ thấy kết quả ở terminal như hình dưới đây:

Chạy Odoo 12 với PostgreSQL 10 từ giao diện dòng lệnh
Chạy Odoo 12 với PostgreSQL 10 từ giao diện dòng lệnh

Bây giờ, bạn có thể mở trình duyệt của mình và nhập địa chỉ kiểu như http://ip_cua_server:8089 để thấy Giao diện tạo cơ sở dữ liệu của Odoo 12 như hình dưới đây:

Giao diện tạo cơ sở dữ liệu Odoo 12
Giao diện tạo cơ sở dữ liệu Odoo 12

Bây giờ, bạn có thể nhập tên cơ sở dữ liệu, email, v.v. sau đó nhấn nút Create database để khởi tạo cơ sở dữ liệu đầu tiên cho Odoo 12 của bạn.

Dừng Odoo 12 và Thoát

Để dừng Odoo 12, chỉ cần quay terminal và nhấn Ctrl + C hai lần.

Bây giờ, hãy sẵn sàng cho các bước tiếp theo để cài đặt Odoo 12 với Python 3.8 bằng cách chạy các lệnh bên dưới.

Hủy kích hoạt môi trường ảo

deactivate

Quay lại tài khoản người dùng unix trước đó:

exit

Cài đặt Odoo 12 với Python 3.8 và PostgreSQL 12

Cài đặt Odoo 12 với Python 3.8 tương tự như Cài đặt Odoo 12 với Python 3.7.

Tạo thư mục cha cho môi trường ảo Python 3.8 cho Odoo12

sudo mkdir -p /python-venv/3.8/odoo12
sudo chown -hR odoo12_38:odoo /python-venv/3.8/odoo12

Chuyển sang tài khoản odoo12_38:

sudo su - odoo12_38 -s /bin/bash

Tạo môi trường ảo Python 3.8 cho Odoo 12:

python3.8 -m venv /python-venv/3.8/odoo12

Kích hoạt môi trường ảo:

source /python-venv/3.8/odoo12/bin/activate

Nâng cấp pip

pip install --upgrade pip

Cài đặt các thư viện bắt buộc cho Odoo 12:

pip install -r /opt/odoo/odoo12/requirements.txt

Khởi động Odoo 12 kết nối PostgreSQL 12:

/opt/odoo/odoo12/odoo-bin --db_port=5433 --http-port=8099

Sau khi xác minh rằng Odoo 12 hoạt động bình thường, hãy thoát:

deactivate
exit

Bước 6 - Chạy Odoo 12 dưới dạng dịch vụ / daemon

Trong phần này, tôi sẽ hướng dẫn bạn cách tạo các dịch vụ tự động khởi chạy cho các phiên bản Odoo 12 mới được cài đặt của bạn để chúng sẽ chạy dưới dạng dịch vụ và khởi động mỗi khi máy chủ được khởi động.

Odoo 12 Python 3.7 Daemon

Tạo tệp cấu hình Odoo 12

Tệp cấu hình là tệp lưu trữ các chỉ thị cấu hình cho phép Odoo biết cách chạy (ví dụ: đường dẫn đến các module bổ trợ, cổng cơ sở dữ liệu, v.v.).

Trong phần này, tôi sẽ tạo một tệp cấu hình có tên odoo12_37.conf và lưu trữ trong /home/odoo12_37. Tôi sẽ sử dụng trình soạn thảo nano để tạo tệp:

sudo nano /home/odoo12_37/odoo12_37.conf

Bây giờ, hãy copy và paste những thứ sau vào giao diện người dùng trình soạn thảo nano của bạn:

[options]
addons_path = /opt/odoo/odoo12/odoo/addons,/opt/odoo/odoo12/addons
admin_passwd = admin # please change this master password
csv_internal_sep = ,
data_dir = /home/odoo12_37/.local/share/Odoo
db_host = False
db_maxconn = 64
db_name = False
db_password = False
db_port = 5432
db_sslmode = prefer
db_template = template0
db_user = False
dbfilter =
demo = {}
email_from = False
geoip_database = /usr/share/GeoIP/GeoLite2-City.mmdb
http_enable = True
http_interface =
http_port = 8089
import_partial =
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 8192
limit_time_cpu = 60
limit_time_real = 120
limit_time_real_cron = -1
list_db = True
log_db = False
log_db_level = warning
log_handler = :INFO
log_level = info
logfile = None
logrotate = False
longpolling_port = 8090
max_cron_threads = 2
osv_memory_age_limit = 1.0
osv_memory_count_limit = False
pg_path = None
pidfile = None
proxy_mode = False
reportgz = False
server_wide_modules = base,web
smtp_password = False
smtp_port = 25
smtp_server = localhost
smtp_ssl = False
smtp_user = False
syslog = False
test_enable = False
test_file = False
test_tags = None
translate_modules = ['all']
unaccent = False
without_demo = False
workers = 0

Bây giờ, lưu tệp và thoát bằng cách nhấn Ctrl + X, sau đó nhập y và nhấn nút Enter.

Để cho phép odoo12_37 truy cập tệp cấu hình:

sudo chown odoo12_37:root /home/odoo12_37/odoo12_37.conf

Tạo tệp dịch vụ

sudo nano /lib/systemd/system/odoo12_37.service

Bây giờ, sao chép và dán nội dung sau vào giao diện trình soạn thảo nano của bạn

[Unit]
Description=Odoo12_37
After=network.target postgresql.service

[Service]
Type=simple
PermissionsStartOnly=true
User=odoo12_37
Group=odoo
SyslogIdentifier=odoo12_37
PIDFile=/run/odoo12_37/odoo12_37.pid
ExecStartPre=/usr/bin/install -d -m755 -o odoo12_37 -g odoo /run/odoo12_37
ExecStart=/python-venv/3.7/odoo12/bin/python /opt/odoo/odoo12/odoo-bin -c /home/odoo12_37/odoo12_37.conf --pid=/run/odoo12_37/odoo12_37.pid
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID

[Install]
Alias=odoo12_37.service
WantedBy=multi-user.target

Bây giờ, lưu tệp và thoát bằng cách nhấn Ctrl + X, sau đó nhập y và nhấn nút Enter.

Chạy lệnh sau để thông báo cho systemd rằng có một tệp đơn vị dịch vụ mới:

sudo systemctl daemon-reload

Bây giờ, hãy kích hoạt dịch vụ và yêu cầu nó chạy khi khởi động:

sudo systemctl enable --now odoo12_37

Bây giờ, hãy khởi động Odoo 12 của bạn bằng systemd:

sudo systemctl start odoo12_37

Giờ bạn có thể mở trình duyệt của mình và nhập địa chỉ kiểu như http://ip_cua_server:8089 để thấy Giao diện tạo cơ sở dữ liệu của Odoo 12.

Để dừng nó, chỉ cần chạy:

sudo systemctl stop odoo12_37

Odoo 12 Python 3.8 Daemon

Tạo tệp cấu hình Odoo 12

Tệp cấu hình là tệp lưu trữ các chỉ thị cấu hình cho phép Odoo biết cách chạy (ví dụ: đường dẫn đến các module bổ trợ, cổng cơ sở dữ liệu, v.v.).

Trong phần này, tôi sẽ tạo một tệp cấu hình có tên odoo12_38.conf và lưu trữ trong / home / odoo12_38. Tôi sẽ sử dụng trình soạn thảo nano để tạo tệp:

sudo nano /home/odoo12_38/odoo12_38.conf

Bây giờ, hãy copy và paste những thứ sau vào giao diện người dùng trình soạn thảo nano của bạn:

[options]
addons_path = /opt/odoo/odoo12/odoo/addons,/opt/odoo/odoo12/addons
admin_passwd = admin # please change this master password
csv_internal_sep = ,
data_dir = /home/odoo12_38/.local/share/Odoo
db_host = False
db_maxconn = 64
db_name = False
db_password = False
db_port = 5433
db_sslmode = prefer
db_template = template0
db_user = False
dbfilter =
demo = {}
email_from = False
geoip_database = /usr/share/GeoIP/GeoLite2-City.mmdb
http_enable = True
http_interface =
http_port = 8099
import_partial =
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 8192
limit_time_cpu = 60
limit_time_real = 120
limit_time_real_cron = -1
list_db = True
log_db = False
log_db_level = warning
log_handler = :INFO
log_level = info
logfile = None
logrotate = False
longpolling_port = 8100
max_cron_threads = 2
osv_memory_age_limit = 1.0
osv_memory_count_limit = False
pg_path = None
pidfile = None
proxy_mode = False
reportgz = False
server_wide_modules = base,web
smtp_password = False
smtp_port = 25
smtp_server = localhost
smtp_ssl = False
smtp_user = False
syslog = False
test_enable = False
test_file = False
test_tags = None
translate_modules = ['all']
unaccent = False
without_demo = False
workers = 0

Bây giờ, lưu tệp và thoát bằng cách nhấn Ctrl + X, sau đó nhập y và nhấn nút Enter.

Để cho phép odoo12_38 truy cập tệp cấu hình:

sudo chown odoo12_38:root /home/odoo12_38/odoo12_38.conf

Tạo tệp dịch vụ

sudo nano /lib/systemd/system/odoo12_38.service

Bây giờ, sao chép và dán nội dung sau vào giao diện trình soạn thảo nano của bạn

[Unit]
Description=Odoo12_38
After=network.target postgresql.service

[Service]
Type=simple
PermissionsStartOnly=true
User=odoo12_38
Group=odoo
SyslogIdentifier=odoo12_38
PIDFile=/run/odoo12_38/odoo12_38.pid
ExecStartPre=/usr/bin/install -d -m755 -o odoo12_38 -g odoo /run/odoo12_38
ExecStart=/python-venv/3.8/odoo12/bin/python /opt/odoo/odoo12/odoo-bin -c /home/odoo12_38/odoo12_38.conf --pid=/run/odoo12_38/odoo12_38.pid
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID

[Install]
Alias=odoo12_38.service
WantedBy=multi-user.target

Bây giờ, lưu tệp và thoát bằng cách nhấn Ctrl + X, sau đó nhập y và nhấn nút Enter.

Chạy lệnh sau để thông báo cho systemd rằng có một tệp đơn vị dịch vụ mới:

sudo systemctl daemon-reload

Bây giờ, hãy kích hoạt dịch vụ và yêu cầu nó chạy khi khởi động:

sudo systemctl enable --now odoo12_38

Bây giờ, hãy khởi động Odoo 12 của bạn bằng systemd:

sudo systemctl start odoo12_38

Giờ bạn có thể mở trình duyệt của mình và nhập địa chỉ kiểu như http://ip_cua_server:8099 để thấy Giao diện tạo cơ sở dữ liệu của Odoo 12.

Để dừng nó, chỉ cần chạy:

sudo systemctl stop odoo12_38

Để lại một câu trả lời