Hướng dẫn này sẽ hướng dẫn bạn cách cài đặt Odoo 16 trên Máy chủ Ubuntu 22.04 mới với Python 3.10 và PostgreSQL 14.
Giới thiệu
Odoo là một bộ công cụ phần mềm quản lý doanh nghiệp bao gồm, ví dụ, CRM, thương mại điện tử, thanh toán, kế toán, sản xuất, kho hàng, quản lý dự án và quản lý hàng tồn kho. Phiên bản Cộng đồng (CE) là một phần mềm tự nhiên, được cấp phép theo GNU LGPLv3 trong khi Phiên bản Doanh nghiệp (EE) có các tính năng bổ sung độc quyền và được cấp phép theo giấy phép Odoo Enterprise.
Để biết thêm thông tin về Bản phát hành Odoo 16, vui lòng truy cập Ghi chú phát hành Odoo 16.
Tóm tắt
Sau khi hoàn thành cài đặt Odoo 16, chúng tôi mong đợi sẽ đạt được những điều sau:
- Thông số kỹ thuật:
- Mã nguồn Odoo 16 sẽ được lưu trữ trong thư mục
/opt/odoo/odoo16
- Bổ sung bổ sung sẽ được lưu trữ trong
/home/odoo16/addons_repo_name
, trong đó addons_repo_name là tên của thư mục chứa các mô-đun addon bổ sung. - Odoo 16 sẽ được chạy trong tài khoản Linux
odoo16
- Chỉ những người dùng Linux trong nhóm odoo mới có thể đọc mã nguồn Odoo 16 và chạy nó.
- Odoo 16 sẽ chạy trong một môi trường ảo biệt lập trong
/python-venv/3.10/odoo16
với Python 3.10 (phiên bản mặc định đi kèm với Ubuntu 22.04) - Cơ sở dữ liệu sẽ PostgreSQL 14 là phiên bản mặc định của PostgreSQL đi kèm với Ubuntu 22.04
- Mã nguồn Odoo 16 sẽ được lưu trữ trong thư mục
- Người dùng sẽ có thể truy cập Odoo 16 bằng trình duyệt web thông qua địa chỉ
http://your_ip:8089
, ở đâuyour_ip
là địa chỉ ip của máy chủ Ubuntu 22.04 của bạn. - Những người dùng mà có mật khẩu chính (master password) sẽ có thể tạo một cơ sở dữ liệu mới hoặc xóa những cơ sở dữ liệu hiện có.
- Odoo 16 sẽ được chạy như một dịch vụ (hay còn gọi là daemon) và sẽ được khởi động tự động mỗi khi máy chủ được khởi động.
Bước 1 - Điều kiện tiên quyết
Đầu tiên, như thường lệ, chúng ta cần cập nhật hệ thống bằng cách chạy các lệnh
sudo apt update; sudo apt dist-upgrade
Bây giờ, hãy bắt đầu cài đặt các gói và phần mềm cần thiết cho các bước sau.
sudo apt install build-essential python3.10-dev \ python3.10-venv libsass-dev libjpeg-dev \ libjpeg8-dev libldap-dev libldap2-dev libpq-dev \ libsasl2-dev libxslt1-dev zlib1g-dev

Bước 2 - Tạo người dùng và nhóm Linux
Nếu bạn đã cài đặt Odoo theo các hướng dẫn trước đây của tôi, có thể bạn đã nhóm odoo
được tạo trước đó. Nếu không, bạn có thể chạy lệnh sau để tạo nhóm odoo
:
sudo addgroup odoo
Bây giờ, hãy chạy lệnh sau để tạo tài khoản người dùng hệ thống có tên odoo16 và thêm nó vào nhóm odoo đã đề cập ở trên:
sudo adduser odoo16 --system \ --home=/home/odoo16 --disabled-login \ --disabled-password --ingroup odoo
Bước 3 - Chuẩn bị PostgreSQL
Odoo được thiết kế để hoạt động với tất cả các phiên bản ổn định và hiện tại của PostgreSQL. Trong hướng dẫn này, để thuận tiện cho bạn, chúng ta sẽ sử dụng phiên bản đi kèm với Ubuntu 22.04 là PostgreSQL 14. Trong trường hợp bạn muốn thử nghiệm nó trên nhiều phiên bản PostgreSQL, vui lòng làm theo hướng dẫn của tôi về installing multiple versions of PostgreSQL.
Cài đặt PostgreSQL 14
sudo apt install postgresql postgresql-contrib

Tạo Role (vai trò)
Chúng tôi sẽ tạo một vai trò có cùng tên với tài khoản unix để tài khoản có thể sử dụng vai trò đó để xác thực và đăng nhập vào phương thức PostgreSQL ident
(không có mật mã). Trong trường hợp này, tên vai trò sẽ là odoo16
.
sudo -u postgres createuser --interactive
Hệ thống sẽ yêu cầu bạn nhập tên vai trò, quyền truy cập siêu người dùng, v.v. Vui lòng nhập như sau:

Xin lưu ý rằng bạn sẽ cần chỉ định cổng cơ sở dữ liệu nếu cụm PostgreSQL của bạn không chạy trên cổng mặc định 5432
. Ví dụ: nếu bạn thay đổi cổng cơ sở dữ liệu của mình thành 5433
, lệnh trên sẽ trở thành:
sudo -u postgres createuser --interactive -p 5433
Bước 4 - Tạo môi trường ảo Python
Tạo thư mục cho môi trường ảo để chạy Odoo 16
sudo mkdir -p /python-venv/3.10/odoo16
Cấp quyền truy cập thích hợp bằng cách thay đổi chủ sở hữu của thư mục thành odoo16
để ngăn người khác sửa đổi nó.
sudo chown -hR odoo16:root /python-venv/3.10/odoo16
Chuyển sang tài khoản odoo16
với hỗ trợ bash
sudo su - odoo16 -s /bin/bash
Tạo một môi trường ảo Python 3.0 và đặt tên là odoo16
python3.10 -m venv /python-venv/3.10/odoo16
Kích hoạt môi trường ảo cho tài khoản hiện tại (tức là odoo16)
source /python-venv/3.10/odoo16/bin/activate
Nâng cấp pip cho phiên bản mới nhất
pip install --upgrade pip
Hủy kích hoạt môi trường
deactivate
Thoát khỏi tài khoản odoo16
và quay lại tài khoản người dùng trước đó
exit
Bước 5 - Tải xuống và cài đặt Odoo 16
Tải xuống Odoo 16 từ GitHub
Tạo thư mục /opt/odoo/odoo16
để lưu trữ mã nguồn Odoo 16
sudo mkdir -p /opt/odoo/odoo16
Tải xuống mã nguồn Odoo 16 từ GitHub
sudo git clone -b 16.0 https://github.com/odoo/odoo.git /opt/odoo/odoo16
Nếu bạn muốn tải xuống qua SSH để có hiệu suất và bảo mật tốt hơn, bạn có thể làm theo hướng dẫn về cách sao chép repo github qua SSH. Sau đó, lệnh tải xuống Odoo 16 sẽ là:
sudo git clone -b 16.0 git@github.com:odoo/odoo.git /opt/odoo/odoo16
Bây giờ, cấp nhóm odoo quyền truy cập vào thư mục để tài khoản odoo16 sẽ có thể truy cập mã nguồn Odoo 16.
sudo chown -hR root:odoo /opt/odoo/odoo16
Tạo Thư mục Addons Tùy chỉnh
Bạn có thể cần các phần bổ trợ tùy chỉnh ngoài các phần bổ trợ Odoo tiêu chuẩn để triển khai. Chạy lệnh sau để tạo forder mẹ để lưu trữ các phần bổ trợ tùy chỉnh của bạn sau này
sudo mkdir -p /home/odoo16/addons_repo_name
Bây giờ, hãy sao chép các chương trình bổ trợ / mô-đun tùy chỉnh của bạn và đưa chúng vào /home/odoo16/addons_repo_name
Hãy nhớ thay đổi chủ sở hữu của nó để kiểm soát quyền truy cập:
sudo chown -hR odoo16:root /home/odoo16/addons_repo_name
Cài đặt các yêu cầu của Odoo 16
Chuyển sang tài khoản odoo16 và kích hoạt môi trường ảo
# switch account sudo su - odoo16 -s /bin/bash # activate the environment source /python-venv/3.10/odoo16/bin/activate
Bây giờ, hãy cài đặt các thư viện bắt buộc được chỉ định trong /opt/odoo/odoo16/requirements.txt:
pip install -r /opt/odoo/odoo16/requirements.txt
Vì một số lý do, không phải tất cả các thư viện bắt buộc đều được liệt kê trong tệp tests.txt. Đây là một ví dụ cho thư viện pylibdmtx
: https://github.com/odoo/odoo/commit/3ebe118. Vì vậy, chúng ta cần cài đặt manuall cho chúng.
Bây giờ, hãy cài đặt thư viện pylibdmtx
giúp Odoo 16 có thể in mã vạch Ma trận dữ liệu:
pip install pylibdmtx
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
Khởi động Odoo 16
Bây giờ, mọi thứ gần như đã xong và chúng ta có thể kiểm tra Odoo 16 bằng cách chạy lệnh:
/opt/odoo/odoo16/odoo-bin
Bạn sẽ thấy một cái gì đó giống như bên dưới là kết quả

Bây giờ, hãy mở trình duyệt web mong muốn của bạn và nhập địa chỉ
http://your_ip:8069
Sau đó, nếu bạn thấy Odoo 16 của mình đã được thiết lập và đang chạy với giao diện người dùng tạo / chọn cơ sở dữ liệu như bên dưới, xin chúc mừng!

Bây giờ, nhấn Ctrl + C hai lần để dừng Odoo 16 và chạy lệnh bên dưới để thoát khỏi tài khoản odoo16 và quay lại tài khoản trước đó:
exit
Bước 7 - Chạy Odoo 16 dưới dạng dịch vụ
Phần này sẽ hướng dẫn bạn cách tạo dịch vụ khởi động cho Odoo 16 mới cài đặt của bạn để Odoo 16 của bạn sẽ chạy như một dịch vụ và khởi động mỗi khi máy chủ được khởi động.
Tạo tệp cấu hình Odoo 16
Tệp cấu hình Odoo 16 là tệp lưu trữ các lệnh cấu hình cho phép Odoo 16 biết cách chạy (ví dụ: đường dẫn addons, 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 odoo16.conf
và lưu nó ở /home/odoo16
. Tôi sẽ sử dụng trình soạn thảo văn bản nano
để tạo tệp như dưới đây:
sudo nano /home/odoo16/odoo16.conf
Bây giờ, hãy sao chép và dán những thứ sau vào giao diện người dùng trình soạn thảo văn bản nano của bạn:
[options] addons_path = /opt/odoo/odoo16/odoo/addons,/opt/odoo/odoo16/addons,/home/odoo16/addons_repo_name admin_passwd = admin csv_internal_sep = , data_dir = /home/odoo16/.local/share/Odoo db_host = False db_maxconn = 64 db_name = False db_password = False db_port = False db_sslmode = prefer db_template = template0 db_user = False dbfilter = demo = {} email_from = False from_filter = False geoip_database = /usr/share/GeoIP/GeoLite2-City.mmdb gevent_port = 8072 http_enable = True http_interface = http_port = 8069 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 = max_cron_threads = 2 osv_memory_age_limit = False osv_memory_count_limit = 0 pg_path = pidfile = proxy_mode = False reportgz = False screencasts = screenshots = /tmp/odoo_tests server_wide_modules = base,web smtp_password = False smtp_port = 25 smtp_server = localhost smtp_ssl = False smtp_ssl_certificate_filename = False smtp_ssl_private_key_filename = False smtp_user = False syslog = False test_enable = False test_file = test_tags = None transient_age_limit = 1.0 translate_modules = ['all'] unaccent = False upgrade_path = websocket_keep_alive_timeout = 600 websocket_rate_limit_burst = 10 websocket_rate_limit_delay = 0.2 without_demo = False workers = 0 x_sendfile = False
Xin lưu ý rằng mật khẩu chính để bảo mật phiên bản của bạn được kiểm soát bởi chỉ mục admin_passwd
trong tệp cấu hình. Bạn nên thay đổi nó thành một mật khẩu mạnh. Bạn cũng có thể bắt đầu tinh chỉnh Odoo bằng cách sửa đổi các chỉ thị khác. Sau khi mọi thứ đều ổn, bạn có thể lưu tệp và thoát bằng cách nhấn Ctrl+X
và nhập y
sau đó nhấn đi vào.
Để cho phép tài khoản odoo16
để truy cập tệp cấu hình trong khi ngăn người khác làm điều đó, chúng ta cần thay đổi chủ sở hữu tệp bằng cách chạy lệnh dưới đây:
sudo chown odoo16:root /home/odoo16/odoo16.conf
Tạo tệp đơn vị Odoo 16
Trong hướng dẫn này, tôi đang sử dụng trình soạn thảo văn bản nano
để tạo tệp đơn vị cho Odoo 16.
sudo nano /lib/systemd/system/odoo16.service
Sau đó, sao chép và dán nội dung sau vào giao diện người dùng trình chỉnh sửa nano của bạn
[Unit] Description=Odoo16 After=network.target postgresql.service [Service] Type=simple PermissionsStartOnly=true User=odoo16 Group=odoo SyslogIdentifier=odoo16 PIDFile=/run/odoo16/odoo16.pid ExecStartPre=/usr/bin/install -d -m755 -o odoo16 -g odoo /run/odoo16 ExecStart=/python-venv/3.10/odoo16/bin/python /opt/odoo/odoo16/odoo-bin --pid=/run/odoo16/odoo16.pid ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID [Install] Alias=odoo16.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 vào y
và hãy nhấn Enter
.
Chạy lệnh sau để thông báo cho systemd rằng tồn tại một tệp đơn 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 odoo16
Bây giờ, hãy khởi động Odoo 16 của bạn bằng systemd
sudo systemctl start odoo16
Để dừng nó, chỉ cần chạy:
sudo systemctl stop odoo16
Kết luận
Bạn vừa trải qua các bước để cài đặt Odoo 16 trên máy chủ Ubuntu đáp ứng mong đợi được nêu trong tóm tắt.
Nhân tiện, bạn có thể muốn xem các bài khác của tôi về:
- Cách cài đặt Odoo 8 trên Máy chủ Ubuntu 22.04
- Cách cài đặt Odoo 9 trên Máy chủ Ubuntu 22.04
- Cách cài đặt Odoo 10 trên Máy chủ Ubuntu 22.04
- Cách cài đặt Odoo 11 trên Máy chủ Ubuntu 22.04
- Cách cài đặt Odoo 12 trên Máy chủ Ubuntu 22.04
- Cách cài đặt Odoo 13 trên Máy chủ Ubuntu 22.04
- Cách cài đặt Odoo 14 trên Máy chủ Ubuntu 22.04
- Cách cài đặt Odoo 15 trên Máy chủ Ubuntu 22.04
Nếu bạn là một lập trình viên Odoo, bạn có thể muốn xem bài của tôi về Cách thiết lập môi trường phát triển Odoo trên Ubuntu 22.04 Desktop.
Cảm ơn bạn, nó rất hữu ích, có cách nào để thực hiện một hướng dẫn sử dụng echo bằng cách sử dụng các bản dựng hàng đêm không?
Bằng cách đó, nó có thể được cập nhật đơn giản bằng lệnh apt-get update.
Đánh giá cao nỗ lực của bạn thưa ông.
Xin chào,
me again (I already wrote on Odoo8 blog).
Cause user odoo16 you can not
sudo dpkg -i wkhtmltox_0.12.6.1-2.jammy_amd64.deb
Do I have to deactivate and exit odoo16 before and go as normal user?
sudo dpkg as normal user seems to be the right way, however below error constist and I can not reach Odoo at IP:8069
check ufw and allow port 8069 (and 8072)
I went back to the normal user (as test) and did the sudo dpkg -i wkhtmltox_0.12.6.1-2.jammy_amd64.deb and following steps.
And later when first time starting (in the (re-) activated enviroment) as written with /opt/odoo/odoo16/odoo-bin
I get an error:
2023-08-12 15:33:52,717 49704 WARNING ? py.warnings: /python-venv/3.10/odoo16/lib/python3.10/site-packages/pylibdmtx/wrapper.py:8: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives
check for libssl1.1_1.1.0,
maybe do
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb
sudo apt install ./libssl1.1_1.1.0g-2ubuntu4_amd64.deb