Kiến thức Hữu ích 😍

Hướng Dẫn Cài Đặt Odoo 15 Trên Ubuntu 22.04 Chi Tiết Và Dễ Hiểu


Odoo 15 là một bộ phần mềm quản lý doanh nghiệp (ERP) mã nguồn mở toàn diện, cung cấp một loạt các ứng dụng kinh doanh như CRM, kế toán, bán hàng, quản lý kho, và sản xuất. Sức mạnh của Odoo nằm ở tính module hóa, cho phép doanh nghiệp tùy chỉnh và mở rộng hệ thống theo nhu cầu cụ thể. Khi triển khai Odoo, việc lựa chọn một hệ điều hành ổn định và được hỗ trợ tốt là vô cùng quan trọng. Ubuntu 22.04, với sự phổ biến và hiệu suất đáng tin cậy cho môi trường máy chủ, đã trở thành nền tảng lý tưởng. Tuy nhiên, quá trình cài đặt Odoo có thể tiềm ẩn nhiều thách thức, từ việc thiết lập các gói phụ thuộc đến cấu hình dịch vụ. Bài viết này sẽ cung cấp hướng dẫn chi tiết, từng bước một, giúp bạn cài đặt thành công Odoo 15 trên Ubuntu 22.04, từ khâu chuẩn bị môi trường đến xử lý các lỗi thường gặp.

Yêu cầu hệ thống và chuẩn bị môi trường cài đặt

Trước khi bắt đầu hành trình cài đặt Odoo 15, việc đảm bảo hệ thống của bạn đáp ứng các yêu cầu tối thiểu và được chuẩn bị đúng cách là bước đầu tiên và quan trọng nhất. Một môi trường được thiết lập tốt sẽ giúp quá trình cài đặt diễn ra suôn sẻ và tránh được những lỗi không đáng có.

Yêu cầu phần cứng và phần mềm tối thiểu

Để Odoo 15 hoạt động ổn định, hệ thống của bạn cần đáp ứng các yêu cầu cơ bản về phần cứng. Mặc dù Odoo có thể chạy trên cấu hình thấp hơn cho mục đích thử nghiệm, nhưng để triển khai trong môi trường thực tế, bạn nên xem xét các thông số sau:

  • CPU: Tối thiểu 2 lõi (cores). Con số này nên tăng lên tùy thuộc vào số lượng người dùng đồng thời và các module bạn cài đặt.
  • RAM: Tối thiểu 2 GB. Tuy nhiên, 4 GB RAM trở lên được khuyến nghị mạnh mẽ để đảm bảo hiệu suất mượt mà, đặc biệt khi có nhiều ứng dụng chạy cùng lúc.
  • Dung lượng ổ cứng: Ít nhất 20 GB dung lượng trống. Bạn cần không gian cho hệ điều hành, mã nguồn Odoo, cơ sở dữ liệu PostgreSQL và các tệp đính kèm.

Về phần mềm, bạn cần một phiên bản Ubuntu 22.04 (Jammy Jellyfish) đã được cài đặt sẵn. Hướng dẫn này áp dụng cho cả phiên bản Server và Desktop.

Hình minh họa

Cập nhật hệ thống và thiết lập user

Luôn là một thói quen tốt khi bắt đầu bằng việc cập nhật hệ thống lên phiên bản mới nhất. Điều này đảm bảo bạn có các bản vá bảo mật và gói phần mềm ổn định nhất. Hãy mở Terminal và chạy lệnh sau:

sudo apt update && sudo apt upgrade -y

Quá trình này có thể mất vài phút tùy thuộc vào tình trạng hiện tại của hệ thống.

Hình minh họa

Tiếp theo, để tăng cường bảo mật, chúng ta không nên chạy Odoo bằng tài khoản root. Thay vào đó, hãy tạo một người dùng hệ thống riêng biệt dành riêng cho Odoo. Người dùng này sẽ quản lý mã nguồn và thực thi ứng dụng Odoo.

Chạy lệnh sau để tạo một user mới tên là odoo:

sudo adduser --system --home=/opt/odoo --group odoo

Lệnh này thực hiện các công việc sau:

  • --system: Tạo một người dùng hệ thống, không có mật khẩu đăng nhập trực tiếp.
  • --home=/opt/odoo: Thiết lập thư mục chính cho user odoo tại /opt/odoo. Đây cũng là nơi chúng ta sẽ lưu trữ mã nguồn Odoo.
  • --group odoo: Tạo một nhóm mới có cùng tên odoo và thêm người dùng này vào nhóm đó.

Sau khi hoàn thành các bước này, hệ thống của bạn đã sẵn sàng cho việc cài đặt các thành phần cần thiết cho Odoo.

Cài đặt các gói phụ thuộc và PostgreSQL

Odoo được xây dựng trên nền tảng Python và sử dụng PostgreSQL làm hệ quản trị cơ sở dữ liệu. Do đó, bước tiếp theo là cài đặt tất cả các công cụ và thư viện cần thiết để Odoo có thể hoạt động chính xác.

Cài đặt các gói phần mềm cần thiết

Chúng ta cần cài đặt Python 3, pip (trình quản lý gói của Python), và các thư viện hệ thống mà Odoo yêu cầu để biên dịch, xử lý hình ảnh, và tạo báo cáo PDF.

Mở Terminal và chạy lệnh sau để cài đặt tất cả các gói phụ thuộc cùng một lúc:

sudo apt install git python3-pip build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less libjpeg-dev gdebi -y

Hãy cùng phân tích tầm quan trọng của một số gói chính:

  • git: Dùng để tải mã nguồn Odoo từ kho lưu trữ GitHub.
  • python3-pip: Trình quản lý gói cho Python, cần thiết để cài đặt các thư viện Python mà Odoo yêu cầu.
  • build-essential: Chứa các công cụ cần thiết để biên dịch mã nguồn, bao gồm cả các phần phụ thuộc của Python.
  • python3-dev, libxslt-dev, libjpeg-dev…: Đây là các gói “development” chứa các tệp tiêu đề (header files) cần thiết để biên dịch một số thư viện Python có phần mở rộng viết bằng ngôn ngữ C.
  • wkhtmltopdf: Đây là một công cụ quan trọng để Odoo có thể chuyển đổi mã HTML thành tài liệu PDF, phục vụ cho việc in hóa đơn, báo giá, và các báo cáo khác.

Chúng ta cần cài đặt wkhtmltopdf riêng vì phiên bản trong kho Ubuntu có thể không tương thích hoàn toàn. Hãy tải phiên bản khuyến nghị:

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

Hình minh họa

Cài đặt và cấu hình PostgreSQL

PostgreSQL là hệ quản trị cơ sở dữ liệu duy nhất được Odoo hỗ trợ chính thức. Nó nổi tiếng về sự ổn định, mạnh mẽ và tuân thủ chuẩn SQL.

Cài đặt PostgreSQL bằng lệnh sau:

sudo apt install postgresql -y

Sau khi cài đặt xong, dịch vụ PostgreSQL sẽ tự động khởi chạy. Bây giờ, chúng ta cần tạo một người dùng cơ sở dữ liệu mới cho Odoo. Để bảo mật, tên người dùng PostgreSQL này nên trùng với tên người dùng hệ thống mà chúng ta đã tạo (odoo).

Đầu tiên, chuyển sang người dùng postgres để có quyền quản trị cơ sở dữ liệu:

sudo su - postgres

Sau đó, tạo người dùng mới trong PostgreSQL:

createuser --createdb --username postgres --no-createrole --no-superuser odoo

Hình minh họa

Lệnh này tạo một người dùng tên odoo với quyền tạo cơ sở dữ liệu (--createdb) nhưng không có quyền tạo người dùng mới (--no-createrole) hay quyền quản trị cao nhất (--no-superuser).

Sau khi tạo xong, gõ exit để quay lại người dùng ban đầu của bạn.

Tải và thiết lập Odoo 15 trên Ubuntu

Khi môi trường và cơ sở dữ liệu đã sẵn sàng, đã đến lúc chúng ta tải mã nguồn Odoo 15 về máy chủ và thiết lập môi trường Python riêng biệt cho nó.

Tải mã nguồn Odoo 15

Chúng ta sẽ sử dụng git để sao chép (clone) mã nguồn Odoo 15 từ kho lưu trữ chính thức trên GitHub. Việc sử dụng git giúp dễ dàng cập nhật Odoo lên các phiên bản vá lỗi sau này.

Chuyển đến thư mục /opt/odoo mà chúng ta đã tạo trước đó và tiến hành clone:

cd /opt/odoo
sudo git clone https://www.github.com/odoo/odoo --depth 1 --branch 15.0 /opt/odoo

Trong đó:

  • --depth 1: Chỉ tải về lịch sử commit gần nhất, giúp giảm dung lượng tải về.
  • --branch 15.0: Chỉ định rõ chúng ta muốn tải phiên bản 15.0.
  • /opt/odoo: Thư mục đích để lưu trữ mã nguồn.

Hình minh họa

Sau khi quá trình tải hoàn tất, toàn bộ mã nguồn của Odoo 15 sẽ nằm trong thư mục /opt/odoo. Chúng ta cần thay đổi quyền sở hữu của thư mục này cho người dùng odoo đã tạo:

sudo chown -R odoo:odoo /opt/odoo/

Thiết lập môi trường Python và cài đặt dependencies cho Odoo

Để tránh xung đột thư viện Python giữa Odoo và các ứng dụng khác trên hệ thống, việc sử dụng môi trường ảo (virtual environment) là một phương pháp tối ưu.

Đầu tiên, hãy tạo một môi trường ảo bên trong thư mục Odoo:

cd /opt/odoo
sudo -u odoo python3 -m venv venv

Lệnh này sẽ tạo một thư mục con tên là venv chứa một bản sao của Python và pip, hoàn toàn độc lập với hệ thống.

Bây giờ, hãy kích hoạt môi trường ảo này và cài đặt các thư viện Python cần thiết được liệt kê trong tệp requirements.txt của Odoo.

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

source /opt/odoo/venv/bin/activate

Cài đặt các gói Python cần thiết:

pip3 install wheel
pip3 install -r /opt/odoo/requirements.txt

Quá trình này sẽ tải và cài đặt tất cả các thư viện Python mà Odoo 15 yêu cầu. Nó có thể mất một chút thời gian. Sau khi hoàn tất, gõ deactivate để thoát khỏi môi trường ảo.

Cấu hình dịch vụ Odoo và khởi động

Để Odoo có thể chạy như một dịch vụ nền (background service) và tự động khởi động cùng hệ thống, chúng ta cần tạo một tệp cấu hình và một tệp dịch vụ systemd.

Tạo file cấu hình Odoo

Tệp cấu hình chứa các thông số quan trọng để Odoo biết cách kết nối với cơ sở dữ liệu, vị trí của các module (addons), và các thiết lập khác.

Hãy tạo một tệp cấu hình mới tại /etc/odoo.conf:

sudo nano /etc/odoo.conf

Dán nội dung sau vào tệp và lưu lại (Ctrl+X, sau đó Y, rồi Enter):

[options]
; This is the password that allows database operations:
admin_passwd = YOUR_MASTER_PASSWORD
db_host = False
db_port = False
db_user = odoo
db_password = False
addons_path = /opt/odoo/addons
logfile = /var/log/odoo/odoo-server.log

Lưu ý quan trọng:

  • admin_passwd: Hãy thay YOUR_MASTER_PASSWORD bằng một mật khẩu quản trị mạnh và an toàn. Mật khẩu này dùng để tạo, xóa, sao lưu cơ sở dữ liệu từ giao diện web của Odoo.
  • db_user = odoo: Đây là tên người dùng PostgreSQL mà chúng ta đã tạo.
  • addons_path: Đường dẫn đến thư mục chứa các module mặc định của Odoo. Nếu bạn có các module tùy chỉnh, bạn có thể thêm đường dẫn vào đây, cách nhau bởi dấu phẩy.
  • logfile: Đường dẫn tới tệp log, nơi Odoo sẽ ghi lại các hoạt động và lỗi.

Chúng ta cần tạo thư mục log và cấp quyền cho user odoo:

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

Hình minh họa

Tạo systemd service để quản lý Odoo

systemd là trình quản lý dịch vụ mặc định trên Ubuntu. Việc tạo một tệp dịch vụ cho Odoo sẽ giúp chúng ta dễ dàng khởi động, dừng, và kiểm tra trạng thái của ứng dụng.

Tạo tệp dịch vụ mới:

sudo nano /etc/systemd/system/odoo.service

Dán nội dung sau vào tệp:

[Unit]
Description=Odoo
Documentation=http://www.odoo.com

[Service]
# Ubuntu/Debian convention:
Type=simple
User=odoo
ExecStart=/opt/odoo/venv/bin/python3 /opt/odoo/odoo-bin -c /etc/odoo.conf

[Install]
WantedBy=multi-user.target

Giải thích các thông số:

  • User=odoo: Chỉ định dịch vụ sẽ được chạy bởi người dùng odoo.
  • ExecStart: Đường dẫn đầy đủ đến tệp thực thi Python trong môi trường ảo, chạy tệp odoo-bin với tệp cấu hình /etc/odoo.conf.

Sau khi lưu tệp, hãy tải lại systemd để nó nhận diện dịch vụ mới:

sudo systemctl daemon-reload

Bây giờ, bạn có thể khởi động dịch vụ Odoo:

sudo systemctl start odoo

Để Odoo tự động khởi động mỗi khi bạn reboot máy chủ, hãy kích hoạt dịch vụ:

sudo systemctl enable odoo

Hình minh họa

Kiểm tra trạng thái dịch vụ và truy cập giao diện Odoo qua trình duyệt

Sau khi đã cấu hình và khởi động dịch vụ, bước cuối cùng là kiểm tra xem Odoo có đang hoạt động đúng cách không và truy cập vào giao diện web để hoàn tất cài đặt ban đầu.

Kiểm tra logs và trạng thái dịch vụ Odoo

Cách nhanh nhất để xác nhận Odoo đã khởi động thành công là kiểm tra trạng thái của dịch vụ. Chạy lệnh:

sudo systemctl status odoo

Nếu mọi thứ hoạt động bình thường, bạn sẽ thấy một dòng trạng thái active (running) màu xanh lá. Điều này cho thấy tiến trình Odoo đang chạy nền.

Hình minh họa

Nếu trạng thái là failed hoặc không hoạt động, có thể đã có lỗi xảy ra. Để điều tra nguyên nhân, bạn cần xem tệp log của Odoo. Bạn có thể sử dụng lệnh journalctl để xem log của dịch vụ:

sudo journalctl -u odoo -f

Lệnh này sẽ hiển thị các log gần nhất và tiếp tục theo dõi (cờ -f) các log mới được tạo ra. Hãy tìm các dòng có chữ ERROR để xác định vấn đề. Bạn cũng có thể kiểm tra tệp log mà chúng ta đã cấu hình tại /var/log/odoo/odoo-server.log.

Truy cập và đăng nhập vào giao diện web Odoo

Khi dịch vụ đã chạy, Odoo sẽ lắng nghe các kết nối trên cổng (port) 8069 theo mặc định.

Mở trình duyệt web trên máy tính của bạn và truy cập vào địa chỉ sau:

http://your_server_ip:8069

Hãy thay thế your_server_ip bằng địa chỉ IP của máy chủ Ubuntu của bạn. Nếu bạn cài đặt trên máy local, bạn có thể dùng http://localhost:8069.

Hình minh họa

Lần đầu tiên truy cập, bạn sẽ được chào đón bởi màn hình thiết lập cơ sở dữ liệu của Odoo. Tại đây, bạn cần điền các thông tin sau:

  • Master Password: Mật khẩu quản trị mà bạn đã đặt trong tệp odoo.conf (tham số admin_passwd).
  • Database Name: Tên cơ sở dữ liệu mới bạn muốn tạo, ví dụ my_company_db.
  • Email: Địa chỉ email cho tài khoản quản trị viên đầu tiên (thường là admin).
  • Password: Mật khẩu cho tài khoản quản trị viên admin. Hãy đặt một mật khẩu mạnh.
  • Language: Ngôn ngữ cho giao diện.
  • Country: Quốc gia của bạn, để Odoo thiết lập sẵn các gói kế toán phù hợp (nếu có).
  • Demo Data: Đánh dấu vào ô này nếu bạn muốn Odoo tạo dữ liệu mẫu để bạn khám phá các tính năng. Không chọn nếu đây là hệ thống cho sản xuất thực tế.

Sau khi điền đầy đủ thông tin, nhấn nút “Create Database”. Quá trình tạo cơ sở dữ liệu có thể mất vài phút. Khi hoàn tất, bạn sẽ được tự động đăng nhập vào giao diện chính của Odoo và có thể bắt đầu khám phá các ứng dụng.

Xử lý một số lỗi thường gặp trong quá trình cài đặt

Mặc dù đã tuân thủ các bước một cách cẩn thận, đôi khi bạn vẫn có thể gặp phải một số lỗi phổ biến. Hiểu rõ nguyên nhân và cách khắc phục sẽ giúp bạn tiết kiệm thời gian và nhanh chóng đưa hệ thống vào hoạt động.

Lỗi không khởi động được dịch vụ Odoo

Đây là một trong những vấn đề phổ biến nhất. Khi bạn chạy sudo systemctl status odoo và thấy trạng thái failed, nguyên nhân thường nằm ở một trong các vấn đề sau:

  • Sai đường dẫn trong file dịch vụ: Kiểm tra lại tệp /etc/systemd/system/odoo.service. Hãy chắc chắn rằng đường dẫn trong dòng ExecStart (ví dụ: /opt/odoo/venv/bin/python3/opt/odoo/odoo-bin) là hoàn toàn chính xác.
  • Sai đường dẫn hoặc quyền trong file cấu hình: Mở tệp /etc/odoo.conf và kiểm tra lại đường dẫn addons_pathlogfile. Đảm bảo rằng người dùng odoo có quyền đọc/ghi trên các thư mục này.
  • Thiếu thư viện Python: Đôi khi một module của Odoo yêu cầu một thư viện Python mà bạn chưa cài đặt. Hãy xem log bằng sudo journalctl -u odoo để tìm lỗi ImportError. Nếu có, bạn cần kích hoạt môi trường ảo (source /opt/odoo/venv/bin/activate) và dùng pip install <tên_thư_viện> để cài đặt thư viện còn thiếu.

Để sửa lỗi, sau khi đã xác định và khắc phục nguyên nhân, hãy chạy lại sudo systemctl daemon-reload (nếu bạn có sửa file .service) và sau đó sudo systemctl restart odoo.

Hình minh họa

Lỗi kết nối database PostgreSQL

Một lỗi phổ biến khác là Odoo không thể kết nối đến cơ sở dữ liệu PostgreSQL. Log sẽ thường hiển thị lỗi FATAL: password authentication failed for user "odoo" hoặc FATAL: role "odoo" does not exist.

Nguyên nhân và cách khắc phục:

  • Chưa tạo user PostgreSQL: Đảm bảo bạn đã thực hiện bước tạo user odoo trong PostgreSQL. Bạn có thể kiểm tra bằng cách chuyển sang user postgres (sudo su - postgres) và chạy lệnh psql -c "\du". Danh sách người dùng sẽ hiện ra, hãy xem odoo có trong đó không.
  • Vấn đề phân quyền: Mặc định, PostgreSQL trên Ubuntu sử dụng phương thức xác thực peer cho các kết nối cục bộ, nghĩa là nó chỉ cho phép người dùng hệ thống có cùng tên kết nối. Cấu hình của chúng ta đã tuân thủ điều này. Tuy nhiên, nếu bạn gặp vấn đề, hãy kiểm tra tệp cấu hình pg_hba.conf của PostgreSQL (thường nằm ở /etc/postgresql/<version>/main/pg_hba.conf). Đảm bảo có một dòng cho phép user odoo kết nối đến tất cả các cơ sở dữ liệu.
  • Sai thông tin trong odoo.conf: Kiểm tra lại tệp /etc/odoo.conf, đảm bảo rằng db_user được đặt chính xác là odoo.

Việc đọc kỹ thông báo lỗi trong log là chìa khóa để xác định chính xác vấn đề và tìm ra giải pháp phù hợp.

Best Practices

Cài đặt thành công Odoo chỉ là bước khởi đầu. Để duy trì một hệ thống ổn định, an toàn và hiệu quả, bạn nên tuân thủ các thực hành tốt nhất sau đây trong suốt quá trình vận hành và quản lý.

  • Luôn cập nhật và sao lưu: Trước khi thực hiện bất kỳ thay đổi lớn nào, hãy cập nhật hệ điều hành (sudo apt update && sudo apt upgrade) và các gói phụ thuộc. Quan trọng hơn, hãy thiết lập một lịch trình sao lưu định kỳ cho cả cơ sở dữ liệu PostgreSQL và thư mục chứa các tệp đính kèm của Odoo.
  • Sử dụng user riêng biệt: Như đã thực hiện trong hướng dẫn, việc chạy dịch vụ Odoo bằng một người dùng hệ thống riêng (odoo) giúp cô lập ứng dụng và hạn chế rủi ro bảo mật. Tránh chạy Odoo bằng tài khoản root bằng mọi giá.
  • Kiểm tra phiên bản tương thích: Khi cài đặt thêm các module từ bên thứ ba, hãy luôn kiểm tra để đảm bảo chúng tương thích với phiên bản Odoo 15. Cài đặt một module không tương thích có thể gây ra lỗi nghiêm trọng cho hệ thống.
  • Không chỉnh sửa trực tiếp mã nguồn Odoo: Nếu bạn cần tùy chỉnh, hãy tạo một module mới thay vì sửa đổi trực tiếp mã nguồn gốc của Odoo. Điều này giúp việc cập nhật Odoo trong tương lai trở nên dễ dàng hơn rất nhiều.
  • Bảo mật máy chủ: Khi triển khai Odoo ra môi trường internet, hãy cấu hình tường lửa (firewall) (ví dụ như UFW trên Ubuntu), để chỉ cho phép truy cập vào các cổng cần thiết (ví dụ: 80, 443, 8069). Sử dụng Nginx làm reverse proxy và thiết lập SSL/TLS (HTTPS) để mã hóa dữ liệu truyền tải là một yêu cầu bắt buộc.
  • Tối ưu hóa PostgreSQL: Đối với các hệ thống lớn có nhiều người dùng, việc tinh chỉnh cấu hình PostgreSQL (sử dụng các công cụ như pgtune) có thể cải thiện đáng kể hiệu suất của Odoo.

Tuân thủ những nguyên tắc này không chỉ giúp hệ thống của bạn hoạt động trơn tru mà còn đảm bảo tính bảo mật và khả năng bảo trì lâu dài.

Kết luận

Qua bài viết này, chúng ta đã cùng nhau đi qua toàn bộ quy trình chi tiết để cài đặt thành công Odoo 15 trên hệ điều hành Ubuntu 22.04. Từ việc chuẩn bị môi trường, cài đặt các gói phụ thuộc, cấu hình PostgreSQL, cho đến việc thiết lập Odoo như một dịch vụ hệ thống, mỗi bước đều được hướng dẫn một cách cẩn thận. Việc tuân thủ đúng trình tự và kiểm tra kỹ lưỡng từng câu lệnh là chìa khóa để đảm bảo một hệ thống ổn định và hoạt động chính xác.

Giờ đây, bạn đã có một nền tảng Odoo 15 vững chắc sẵn sàng để triển khai. Đây là lúc để bạn bắt đầu khám phá sức mạnh của nó: cài đặt các ứng dụng phù hợp với nhu cầu doanh nghiệp, tùy chỉnh quy trình làm việc, và tích hợp các module nâng cao để tối ưu hóa hoạt động. Hành trình với Odoo chỉ mới bắt đầu, và một thế giới các khả năng đang chờ bạn khám phá.

Trong các bài viết tiếp theo, chúng tôi sẽ hướng dẫn bạn cách tối ưu hóa hiệu suất Odoo, cấu hình Nginx làm reverse proxy với SSL, và các kỹ thuật bảo trì hệ thống để đảm bảo doanh nghiệp của bạn luôn vận hành trơn tru. Chúc bạn thành công

Đánh giá