Odoo (trước đây gọi là OpenERP) là một bộ tự lưu trữ gồm hơn 10.000 ứng dụng nguồn mở cho nhiều nhu cầu kinh doanh khác nhau, bao gồm CRM, thương mại điện tử, kế toán, kiểm kê, quản lý dự án và điểm bán hàng. Các ứng dụng này được tích hợp đầy đủ và truy cập thông qua giao diện web quen thuộc.
Hướng dẫn này sẽ hướng dẫn chúng ta cài đặt Odoo 16 Stack trên máy chủ Rocky Linux 9.
Kiểm tra trạng thái của tường lửa.
Tường lửa hoạt động với nhiều vùng khác nhau và vùng công cộng là vùng mặc định mà chúng tôi sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Nó sẽ hiển thị đầu ra sau.
Trên máy chủ Odoo, chúng ta sẽ cần các cổng 22, 80, 443, 6010, 5432 và 8069 được mở. 22 được sử dụng cho SSH, 80 cho HTTP, 443 cho HTTPS, 6010 được sử dụng cho giao tiếp Odoo, 5432 được sử dụng bởi PostgreSQL và 8069 được sử dụng cho ứng dụng máy chủ Odoo.
Chạy các lệnh sau để mở các cổng cần thiết trên Odoo máy chủ.
Kiểm tra trạng thái của tường lửa.
Trên máy chủ PostgreSQL, chúng ta cần mở các cổng 22, 6010 và 5432. Mở chúng bằng lệnh sau lệnh.
Thực hiện tất cả các thay đổi vĩnh viễn và tải lại tường lửa để cho phép các thay đổi.
Đặt tên máy chủ trên máy chủ Odoo bằng lệnh sau.
Đặt tên máy chủ trên máy chủ PostgreSQL bằng lệnh sau.
Trên máy chủ Odoo, mở tệp
Đảm bảo rằng tệp trông giống như sau.
Trên máy chủ PostgreSQL, hãy mở tệp và đảm bảo tệp trông giống như sau.
Nhấn Ctrl + X để đóng trình chỉnh sửa và nhấn Y khi được nhắc lưu tệp.
Cài đặt kho lưu trữ PostgreSQL RPM.
Vô hiệu hóa mô-đun PostgreSQL tích hợp sẵn.
Cài đặt PostgreSQL 16.
Khởi tạo cơ sở dữ liệu.
Kích hoạt và khởi động PostgreSQL dịch vụ.
Kiểm tra trạng thái của dịch vụ.
Bạn sẽ nhận được một đầu ra.
Tiếp theo, chúng ta cần tạo một người dùng cơ sở dữ liệu
Tùy chọn
Tùy chọn
Tùy chọn
Tùy chọn
Đầu tiên, hãy dừng dịch vụ PostgreSQL.
Để tìm nơi PostgreSQL lưu trữ tệp Xác thực máy khách, hãy chạy lệnh sau để khởi động shell PostgreSQL.
Chạy truy vấn sau để tìm vị trí của tập tin.
Bạn sẽ nhận được kết quả đầu ra sau.
Loại
Mở tệp
Dán dòng sau vào cuối.
Dòng này cấp quyền cho
Nhấn Ctrl + X để đóng trình chỉnh sửa và nhấn Y khi được nhắc lưu tệp.
Khởi động shell PostgreSQL và chạy lệnh sau để định vị tệp cấu hình PostgreSQL.
Bạn sẽ nhận được thông báo sau đầu ra.
Nhập
Mở tệp
Thay đổi dòng
đến.
Các
Nhấn Ctrl + X để đóng trình soạn thảo và nhấn Y khi được nhắc lưu tệp.
Bạn có thể kiểm tra phiên bản hiện có trước.
Cài đặt các phụ thuộc cần thiết cho Python.
Tải xuống mã nguồn từ trang web của Python. Vào thời điểm viết hướng dẫn này, phiên bản 3.10.x mới nhất hiện có là 3.10.14, đây là phiên bản chúng tôi đã sử dụng.
Giải nén tệp lưu trữ.
Chuyển sang phiên bản đã giải nén thư mục.
Cấu hình mã nguồn.
Cài đặt Python 3.10.14. Lệnh
Xác nhận cài đặt.
Bạn sẽ nhận được kết quả sau.
Tiếp theo, chúng ta cần đặt Python 3.10 làm phiên bản Python mặc định. Tạo liên kết tượng trưng cho từng phiên bản Python được cài đặt trên máy chủ của bạn. Khi tạo phiên bản tượng trưng, bạn nên đưa phiên bản Python chính xác vào lệnh của mình. Chạy các lệnh sau để tạo liên kết tượng trưng.
Để xem các phiên bản Python khả dụng, hãy sử dụng lệnh sau.
Bạn sẽ thấy thông báo sau đầu ra.
Chọn số 1 để chuyển sang Python 3.10.
Đăng xuất và Đăng nhập lại vào thiết bị đầu cuối để chuyển sang phiên bản Python. Bây giờ bạn có thể sử dụng Python 3.10.14 bằng cách sử dụng
Cài đặt các phụ thuộc hệ thống cần thiết để thiết lập Odoo 17.
Cài đặt Nodejs. Rocky Linux 9 đi kèm với Node 18.x, đây là phiên bản LTS hiện tại của Nodejs. Tuy nhiên, chúng tôi sẽ sử dụng kho lưu trữ Nodesource chính thức cho nó.
Thêm kho lưu trữ Node 20.
Cài đặt Nodejs.
Xác nhận Node phiên bản.
Cài đặt gói Less CSS bằng Node. Nếu bạn đang sử dụng ngôn ngữ có giao diện từ phải sang trái, hãy cài đặt gói
Cài đặt
Tải xuống RPM Wkhtmltopdf.
Cài đặt phông chữ theo yêu cầu của Wkhtmltopdf.
Cài đặt Wkhtmltopdf.
Kiểm tra phiên bản của
Sao chép kho lưu trữ Github của Odoo vào hệ thống.
Với mục đích của chúng tôi, chúng tôi đang sao chép Odoo vào thư mục
Đối với thao tác này, chúng ta sẽ sử dụng
Cần có thời gian để cài đặt các yêu cầu nên hãy kiên nhẫn.
Kiểm tra xem các yêu cầu đã được cài đặt đúng chưa bằng cách kiểm tra danh sách Python đã cài đặt mô-đun.
Thoát khỏi môi trường ảo Python.
Thư mục này cần được thêm vào tham số
Mở tệp để chỉnh sửa.
Chỉnh sửa tệp để trông giống như sau.
Nhấn Ctrl + X để đóng trình chỉnh sửa và nhấn Y khi được nhắc lưu tệp.
Tùy chọn
Tùy chọn
Tùy chọn
Tùy chọn
Tùy chọn
Tùy chọn
Tùy chọn
Tùy chọn
Tạo tệp
Dán mã sau vào đó.
Thay thế
Nhấn Ctrl + X để đóng trình soạn thảo và nhấn Y khi được nhắc lưu tệp.
Đặt quyền sở hữu cho môi trường Python, cài đặt Odoo và thư mục nhật ký.
Hạn chế cấu hình Odoo tệp.
Kiểm tra trạng thái của máy chủ.
Tạo và mở tệp
Dán mã sau vào it.
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc. Chúng tôi sẽ sử dụng phiên bản chính của Nginx và do đó đã bật kho lưu trữ chính trong tệp trên bằng cách sử dụng
Cài đặt Nginx.
Xác minh cài đặt.
Bật và khởi động máy chủ Nginx dịch vụ.
Kiểm tra trạng thái dịch vụ.
Cài đặt kho lưu trữ EPEL.
Rocky Linux 9 không cài đặt Snapd. Cài đặt gói Snapd.
Bật và khởi động dịch vụ Snap.
Cài đặt gói lõi Snap và đảm bảo phiên bản Snapd của bạn là ngày.
Tạo các liên kết cần thiết để Snapd hoạt động.
Cài đặt Certbot.
Sử dụng lệnh sau để đảm bảo lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến
Xác minh xem Certbot có hoạt động bình thường không.
Tạo chứng chỉ. Chúng ta cũng cần tạo chứng chỉ DHParams.
Tạo chứng chỉ trao đổi khóa Diffie-Hellman.
Kiểm tra trình lập lịch gia hạn Certbot dịch vụ.
Bạn sẽ thấy
Thực hiện chạy thử quy trình để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không.
Nếu không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.
Mở tệp cấu hình máy chủ Odoo.
Thêm các dòng sau vào nó.
Tạo tệp cấu hình Nginx cho Odoo.
Dán mã bên dưới.
Nhấn Ctrl + X để đóng trình soạn thảo và nhấn Y khi được nhắc lưu tệp.
Mở tệp
Thêm dòng sau vào trước dòng
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Kiểm tra Nginx cấu hình.
Nếu bạn không thấy lỗi nào, điều đó có nghĩa là bạn đã sẵn sàng. Khởi động lại máy chủ Nginx.
Khởi chạy Odoo trên trình duyệt của bạn thông qua
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22707%22%20height=%22621%22%3E%3C/svg%3E
Chọn email và mật khẩu của bạn để tạo thông tin đăng nhập. Mật khẩu chính là
Kiểm tra trường
Nhấp vào nút Tạo cơ sở dữ liệu để tiến hành hoàn tất cài đặt. Lần đầu tiên bạn tạo cơ sở dữ liệu, trang tiện ích bổ sung sẽ mất thời gian để tải nên đừng làm mới trang. Bạn sẽ được tự động chuyển hướng đến trang đăng nhập sau khi cơ sở dữ liệu được tạo.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22344%22%20height=%22441%22%3E%3C/svg%3E
Nhập thông tin đăng nhập đã sử dụng ở bước trước để đăng nhập vào Odoo ERP và bạn sẽ được đưa đến trang bảng điều khiển như hiển thị bên dưới. Trang này sẽ được điền sẵn dữ liệu demo. Nếu bạn chưa kiểm tra tùy chọn dữ liệu demo trên trang tạo cơ sở dữ liệu, bạn sẽ nhận được bảng điều khiển khác và sạch hơn nhiều.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22372%22%3E%3C/svg%3E
Bạn có thể bắt đầu sử dụng Odoo để quản lý doanh nghiệp của mình từ đây.
Chuyển sang người dùng hệ thống Odoo.
Kéo mã nguồn mới nhất từ GitHub.
Lệnh thứ hai có thể gặp xung đột mã nguồn nếu bạn thay đổi thủ công mã nguồn. Bạn sẽ được cung cấp danh sách các tệp bị xung đột. Bạn sẽ cần phải thay đổi thủ công tất cả các tệp và chạy lại lệnh để khắc phục sự cố.
Nếu bạn muốn loại bỏ các thay đổi xung đột, bạn có thể chạy lệnh sau để đặt lại nguồn.
Kích hoạt môi trường ảo Python.
Cài đặt Python phụ thuộc.
Thoát khỏi môi trường ảo Python.
Khởi động Odoo máy chủ.
Tạo và mở tệp
Dán mã sau vào đó.
Nhấn Ctrl + X để đóng trình chỉnh sửa và nhấn Y khi được nhắc lưu tệp.
Tạo và mở
Dán mã sau vào nó.
Nhấn Ctrl + X để đóng trình soạn thảo và nhấn Y khi được nhắc lưu tệp.
Khởi động lại Fail2Ban.
Hướng dẫn này sẽ hướng dẫn chúng ta cài đặt Odoo 16 Stack trên máy chủ Rocky Linux 9.
Điều kiện tiên quyết
-
Một máy chủ Rocky Linux 9 có RAM tối thiểu 2GB để lưu trữ Odoo Stack.
-
Một máy chủ Rocky Linux 9 thứ hai có RAM tối thiểu 2GB để lưu trữ cơ sở dữ liệu PostgreSQL. Tuy nhiên, bạn có thể cài đặt cơ sở dữ liệu trên cùng một máy chủ với Odoo, nhưng đối với môi trường sản xuất, chúng tôi khuyên bạn nên cài đặt trên một máy chủ riêng. Bạn cũng có thể chọn bất kỳ tùy chọn cơ sở dữ liệu được quản lý nào có sẵn từ bất kỳ nhà cung cấp nào bạn chọn.
-
Yêu cầu về RAM sẽ phụ thuộc vào số lượng người dùng đồng thời sẽ sử dụng ngăn xếp. Hướng dẫn chi tiết về cách tính toán yêu cầu hệ thống có thể được tìm thấy trong tài liệu của Odoo.
-
Luôn cập nhật hệ thống của bạn.
Mã:$ sudo dnf update
-
Người dùng không phải root có quyền sudo trên cả hai máy chủ.
-
Cần cài đặt Fail2Ban. Bước này là tùy chọn. Bạn có thể làm theo hướng dẫn của chúng tôi về cách cài đặt Fail2Ban trên Rocky Linux.
-
SELinux nên được tắt.
-
Một số gói mà hệ thống của bạn cần.
Mã:$ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
Bước 1 - Cấu hình các quy tắc Tường lửa
Bước đầu tiên là cấu hình tường lửa. Rocky Linux sử dụng Tường lửa Firewalld. Đối với hướng dẫn này, chúng tôi sẽ giả định rằng bạn đã cài đặt tường lửa Firewalld trên cả hai máy chủ.Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --state
running
Mã:
$ sudo firewall-cmd --zone=public --list-all
Mã:
public target: default icmp-block-inversion: no interfaces: eth0 sources: services: cockpit dhcpv6-client ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Chạy các lệnh sau để mở các cổng cần thiết trên Odoo máy chủ.
Mã:
$ sudo firewall-cmd --zone=public --add-port={6010,5432,8069,8072}/tcp
$ sudo firewall-cmd --zone=public --add-service=http
$ sudo firewall-cmd --zone=public --add-service=https
Mã:
$ sudo firewall-cmd --zone=public --list-all
public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: cockpit dhcpv6-client http https ssh ports: 6010/tcp 5432/tcp 8069/tcp 8072/tcp protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Mã:
$ sudo firewall-cmd --zone=public --add-port={6010,5432}/tcp
Mã:
$ sudo firewall-cmd --runtime-to-permanent
$ sudo firewall-cmd --reload
Bước 2 - Gán tên máy chủ
Bạn có thể sử dụng địa chỉ IP của máy chủ hoặc sử dụng Tên miền đủ điều kiện (FQDN) của chúng, nếu có. Đối với hướng dẫn này, chúng ta sẽ sử dụng FQDN và để làm được điều đó, chúng ta cần đặt tên máy chủ trên cả hai máy chủ.Đặt tên máy chủ trên máy chủ Odoo bằng lệnh sau.
Mã:
$ sudo hostnamectl set-hostname odoo.yourdomain.com
Mã:
$ sudo hostnamectl set-hostname postgresql.yourdomain.com
/etc/hosts
.
Mã:
$ sudo nano /etc/hosts
Mã:
127.0.0.1 localhost
127.0.0.1 odoo.yourdomain.com odoo
10.1.1.10 postgresql.yourdomain.com postgresql
Mã:
127.0.0.1 localhost
127.0.0.1 postgresql.yourdomain.com postgresql
10.1.2.10 odoo.yourdomain.com odoo
Bước 3 - Cài đặt và cấu hình PostgreSQL
Rocky Linux 9 mặc định đi kèm PostgreSQL 13 và PostgreSQL 15 làm luồng mô-đunpostgresql:15
. Tuy nhiên, chúng tôi sẽ cài đặt phiên bản mới nhất có tại thời điểm viết hướng dẫn này, PostgreSQL 16 từ kho lưu trữ chính thức của nó.Cài đặt kho lưu trữ PostgreSQL RPM.
Mã:
$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Mã:
$ sudo dnf -qy module disable postgresql
Mã:
$ sudo dnf install -y postgresql16-server postgresql16-contrib
Mã:
$ sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
Mã:
$ sudo systemctl enable postgresql-16
$ sudo systemctl start postgresql-16
Mã:
$ sudo systemctl status postgresql-16
Mã:
? postgresql-16.service - PostgreSQL 16 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; preset: disabled) Active: active (running) since Sun 2024-04-07 02:22:42 UTC; 3s ago Docs: https://www.postgresql.org/docs/16/static/ Process: 8673 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 8678 (postgres) Tasks: 7 (limit: 10819) Memory: 17.4M CPU: 60ms CGroup: /system.slice/postgresql-16.service ??8678 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/ ??8679 "postgres: logger " ??8680 "postgres: checkpointer " ??8681 "postgres: background writer " ??8683 "postgres: walwriter " ??8684 "postgres: autovacuum launcher " ??8685 "postgres: logical replication launcher "
Apr 07 02:22:42 postgresql systemd[1]: Starting PostgreSQL 16 database server...
Apr 07 02:22:42 postgresql postgres[8678]: 2024-04-07 02:22:42.370 UTC [8678] LOG: redirecting log output to logging collector process
Apr 07 02:22:42 postgresql postgres[8678]: 2024-04-07 02:22:42.370 UTC [8678] HINT: Future log output will appear in directory "log".
Apr 07 02:22:42 postgresql systemd[1]: Started PostgreSQL 16 database server.
odoo
. Bạn sẽ được yêu cầu nhập mật khẩu cho vai trò này. Nhập mật khẩu mạnh theo lựa chọn của bạn.
Mã:
$ sudo -u postgres createuser odoo -U postgres -dP
-u
thực thi lệnh như postgres
người dùng.Tùy chọn
-U
chỉ ra tên người dùng để kết nối.Tùy chọn
-d
cấp cho người dùng quyền tạo cơ sở dữ liệu.Tùy chọn
-p
nhắc nhập mật khẩu của người dùng mới.Cấu hình Xác thực dựa trên máy chủ
Chúng ta cần cấp quyền cho dịch vụ PostgreSQL để có thể kết nối với Odoo máy chủ.Đầu tiên, hãy dừng dịch vụ PostgreSQL.
Mã:
$ sudo systemctl stop postgresql-16
Mã:
$ sudo -u postgres psql
Mã:
postgres=# SHOW hba_file;
Mã:
hba_file
------------------------------------ /var/lib/pgsql/16/data/pg_hba.conf
(1 row)
exit
để thoát khỏi shell.Mở tệp
/var/lib/pgsql/16/data/pg_hba.conf
để chỉnh sửa.
Mã:
$ sudo nano /var/lib/pgsql/16/data/pg_hba.conf
Mã:
host all odoo odoo.yourdomain.com scram-sha-256
odoo
người dùng để kết nối với tất cả các cơ sở dữ liệu trong máy chủ này. Bạn cũng có thể chỉ định tên của các cơ sở dữ liệu thay vì sử dụng từ khóa all
.Nhấn Ctrl + X để đóng trình chỉnh sửa và nhấn Y khi được nhắc lưu tệp.
Cấu hình địa chỉ lắng nghe PostgreSQL
Tiếp theo, chúng ta cần cho phép máy chủ cơ sở dữ liệu lắng nghe các kết nối từ xa.Khởi động shell PostgreSQL và chạy lệnh sau để định vị tệp cấu hình PostgreSQL.
Mã:
$ sudo -u postgres psql
postgres=# SHOW config_file;
Mã:
config_file
---------------------------------------- /var/lib/pgsql/16/data/postgresql.conf
(1 row)
exit
để thoát khỏi shell.Mở tệp
/var/lib/pgsql/16/data/postgresql.conf
để chỉnh sửa.
Mã:
$ sudo nano /var/lib/pgsql/16/data/postgresql.conf
listen_addresses
từ
Mã:
#listen_addresses = 'localhost' # what IP address(es) to listen on;
Mã:
listen_addresses = '*'
*
có nghĩa là nó sẽ lắng nghe tất cả các địa chỉ IP. Bạn có thể thay đổi nó thành địa chỉ IP của phiên bản odoo của bạn.
Mã:
listen_addresses = 'localhost, '
Kích hoạt và khởi động dịch vụ PostgreSQL
Vì cấu hình của chúng ta đã hoàn tất, đã đến lúc khởi động PostgreSQL dịch vụ.
Mã:
$ sudo systemctl start postgresql-16
Bước 4 - Cài đặt Odoo
Cài đặt Python 3.10
Rocky Linux 9 đi kèm với Python 3.9 trong khi Odoo 17 yêu cầu Python 3.10 trở lên. Do đó, chúng ta cần cài đặt trước.Bạn có thể kiểm tra phiên bản hiện có trước.
Mã:
$ python --version
Python 3.9.18
Mã:
$ sudo dnf groupinstall "Development Tools"
$ sudo dnf install readline-devel ncurses-devel openssl-devel sqlite-devel tk-devel gdbm-devel libc6-dev libbz2-dev libffi-dev zlib1g-dev
$ sudo dnf install -y openssl-devel bzip2-devel libffi-devel readline-devel ncurses-devel sqlite-devel tk-devel
Mã:
$ wget https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz
Mã:
$ tar xzf Python-3.10.14.tgz
Mã:
$ cd Python-3.10.14
Mã:
$ ./configure --enable-optimizations
altininstall
được sử dụng để không ghi đè lên phiên bản Python của hệ thống.
Mã:
$ sudo make altinstall
Mã:
$ python3.10 -V
OR
$ python3.10 --version
Mã:
Python 3.10.14
Mã:
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.10 1
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
Mã:
$ sudo update-alternatives --config python3
Mã:
There are 2 programs which provide 'python3'. Selection Command
----------------------------------------------- 1 /usr/local/bin/python3.10
*+ 2 /usr/bin/python3.9
Enter to keep the current selection[+], or type selection number:
Đăng xuất và Đăng nhập lại vào thiết bị đầu cuối để chuyển sang phiên bản Python. Bây giờ bạn có thể sử dụng Python 3.10.14 bằng cách sử dụng
python
trực tiếp.Cài đặt các phụ thuộc và Chuẩn bị cài đặt
Tạo người dùng hệ thống mới để quản lý các quy trình Odoo trên máy chủ Odoo với thư mục gốc là/opt/odoo
. Điều này nhằm ngăn ngừa mọi rủi ro bảo mật bằng cách chạy nó dưới quyền người dùng root.
Mã:
$ sudo useradd -m -d /opt/odoo -U -r -s /bin/bash odoo
Mã:
$ sudo dnf install -y git libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel libpq-devel
Thêm kho lưu trữ Node 20.
Mã:
$ curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
Mã:
$ sudo dnf -y install nodejs
Mã:
$ node --version
v20.12.1
rtlcss
.
Mã:
$ sudo npm install -g less rtlcss
wkhtmltopdf
. Chúng tôi sẽ sử dụng gói RPM từ kho lưu trữ đóng gói GitHub Wkhtmltopdf. Phiên bản mới nhất có tại thời điểm viết hướng dẫn này là 0.12.6.1 r3.Tải xuống RPM Wkhtmltopdf.
Mã:
$ cd ~
$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox-0.12.6.1-3.almalinux9.x86_64.rpm
Mã:
$ sudo dnf install xorg-x11-fonts-75dpi.noarch xorg-x11-fonts-Type1.noarch
Mã:
$ sudo rpm -i wkhtmltox-0.12.6.1-3.almalinux9.x86_64.rpm
wkhtmltopdf
đã cài đặt.
Mã:
$ wkhtmltopdf --version
wkhtmltopdf 0.12.6.1 (with patched qt)
Tải xuống tệp Odoo
Chuyển sang người dùng hệ thống Odoo.
Mã:
$ sudo su - odoo
Mã:
$ git clone https://github.com/odoo/odoo.git --depth 1 --branch 17.0 --single-branch
/opt/odoo
nơi nó sẽ được cài đặt. Thao tác này sẽ tạo thư mục /opt/odoo/odoo
mà chúng ta sẽ sử dụng để cài đặt.Thiết lập Môi trường Python Virtualenv
Bước này là tùy chọn nhưng được khuyến nghị vì môi trường Python ảo cho Odoo sẽ giúp tránh xung đột với các mô-đun Python của Hệ điều hành, đặc biệt là khi thực hiện nâng cấp HĐH.Đối với thao tác này, chúng ta sẽ sử dụng
virtualenv
.-
Tạo môi trườngvirtualenv
mới cho Odoo.
Mã:$ python3 -m venv odoo-env
-
Kích hoạt môi trường ảo. Chúng tôi đang tạo một môi trường trong thư mục home của người dùng hệ thống. Bạn được tự do lựa chọn bất kỳ vị trí nào bạn thích.
Mã:$ source odoo-env/bin/activate
-
Cập nhật PIP để phòng ngừa.
Mã:(odoo-env) $ pip3 install --upgrade pip
-
Cài đặt bánh xe Python trong máy ảo môi trường.
Mã:$ pip3 install wheel
Cài đặt Python Dependencies
Cài đặt Python dependency theo yêu cầu của Odoo 17.
Mã:
$ pip3 install -r /opt/odoo/odoo/requirements.txt
Kiểm tra xem các yêu cầu đã được cài đặt đúng chưa bằng cách kiểm tra danh sách Python đã cài đặt mô-đun.
Mã:
$ pip3 list
Package Version
----------------- --------
attrs 23.2.0
Babel 2.9.1
beautifulsoup4 4.12.3
cached-property 1.5.2
certifi 2024.2.2
cffi 1.16.0
chardet 4.0.0
cryptography 3.4.8
decorator 4.4.2
docopt 0.6.2
docutils 0.17
ebaysdk 2.1.5
freezegun 1.1.0
geoip2 2.9.0
gevent 21.8.0
greenlet 1.1.2
idna 2.10
isodate 0.6.1
Jinja2 3.0.3
libsass 0.20.1
lxml 4.8.0
MarkupSafe 2.0.1
maxminddb 2.6.0
num2words 0.5.10
ofxparse 0.21
passlib 1.7.4
Pillow 9.0.1
pip 24.0
platformdirs 4.2.0
polib 1.1.1
psutil 5.9.0
psycopg2 2.9.2
pyasn1 0.6.0
pyasn1_modules 0.4.0
pycparser 2.22
pydot 1.4.2
pyOpenSSL 21.0.0
pyparsing 3.1.2
PyPDF2 1.26.0
pyserial 3.5
python-dateutil 2.8.1
python-ldap 3.4.0
python-stdnum 1.17
pytz 2024.1
pyusb 1.2.1
qrcode 7.3.1
reportlab 3.6.8
requests 2.25.1
requests-file 2.0.0
requests-toolbelt 1.0.0
rjsmin 1.1.0
setuptools 65.5.0
six 1.16.0
soupsieve 2.5
urllib3 1.26.5
vobject 0.9.6.1
Werkzeug 2.0.2
wheel 0.43.0
xlrd 1.2.0
XlsxWriter 3.0.2
xlwt 1.3.0
zeep 4.1.0
zope.event 5.0
zope.interface 6.2
Mã:
$ deactivate
Tạo thư mục cho bên thứ 3 tiện ích bổ sung
Mã:
$ mkdir /opt/odoo/odoo/custom-addons
addons_path
dùng để xác định các thư mục mà Odoo tìm kiếm các mô-đun. Thoát khỏi người dùng hệ thống Odoo.
Mã:
$ exit
Bước 5 - Cấu hình Odoo
Sao chép tệp cấu hình Odoo mặc định để tạo tệp mới.
Mã:
$ sudo cp /opt/odoo/odoo/debian/odoo.conf /etc/odoo.conf
Mã:
$ sudo nano /etc/odoo.conf
Mã:
[options]
; This is the password that allows database operations:
admin_passwd = admin
db_host = postgresql.yourdomain.com
db_port = False
db_user = odoo
db_password = odoo_password
addons_path = /opt/odoo/odoo/addons, /opt/odoo/odoo/custom-addons
xmlrpc_port = 8069
default_productivity_apps = True
Tùy chọn
admin_passwd
là mật khẩu cho phép thực hiện các thao tác quản trị trong GUI của Odoo. Hãy chắc chắn chọn một mật khẩu an toàn.Tùy chọn
db_host
là FQDN hoặc địa chỉ IP của máy chủ PostgreSQL.Tùy chọn
db_port
được đặt thành false vì cổng PostgreSQL mặc định 5432 đang được sử dụng. Nếu bạn muốn sử dụng một cổng khác, bạn sẽ cần cập nhật giá trị này.Tùy chọn
db_user
là tên của người dùng PostgreSQL.Tùy chọn
db_password
là mật khẩu người dùng PostgreSQL 'odoo' mà chúng ta đã tạo trước đó trên máy chủ PostgreSQL.Tùy chọn
addons_path
là đường dẫn Addons mặc định. Bạn cũng có thể thêm đường dẫn tùy chỉnh cho Addon, phân tách chúng bằng dấu phẩy.Tùy chọn
xmlrpc_port
là cổng mà Odoo lắng nghe.Tùy chọn
default_productivity_apps
đảm bảo các ứng dụng năng suất mặc định (cụ thể là Employees, Email Marketing, Project và Surveys) vẫn được bật. Bốn ứng dụng này là ứng dụng mặc định trên Odoo Community Edition. Trên phiên bản Enterprise, có các ứng dụng năng suất bổ sung có thể được bật theo mặc định là Appointments, Knowledge, Planning và Sign.Tạo dịch vụ Odoo
Để đảm bảo Odoo tiếp tục chạy ngay cả sau khi hệ thống khởi động lại, chúng ta cần tạo một dịch vụ cho dịch vụ đó.Tạo tệp
/lib/systemd/system/odoo-server.service
và mở tệp đó để chỉnh sửa.
Mã:
$ sudo nano /lib/systemd/system/odoo-server.service
Mã:
[Unit]
Description=Odoo Open Source ERP and CRM
Requires=postgresql-16.service
After=network.target postgresql-16.service
[Service]
Type=simple
SyslogIdentifier=odoo-server
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo-env/bin/python3 /opt/odoo/odoo/odoo-bin --config=/etc/odoo.conf --addons-path=/opt/odoo/odoo/addons/ --logfile /var/log/odoo/odoo-server.log
WorkingDirectory=/opt/odoo/odoo/
StandardOutput=journal+console
KillMode=mixed
[Install]
WantedBy=multi-user.target
/home/
bằng vị trí bạn đã chọn để cài đặt Python Virtual Environment.Nhấn Ctrl + X để đóng trình soạn thảo và nhấn Y khi được nhắc lưu tệp.
Tạo thư mục Nhật ký cho Odoo
Mã:
$ sudo mkdir /var/log/odoo
Thiết lập quyền cho tệp
Thiết lập quyền cho tệpodoo-server.service
để chỉ người dùng Odoo mới có thể đọc hoặc thực thi nó.
Mã:
$ sudo chmod 755 /lib/systemd/system/odoo-server.service
$ sudo chown odoo: /lib/systemd/system/odoo-server.service
Mã:
$ sudo chown -R odoo: /opt/odoo/
$ sudo chown -R odoo: /opt/odoo/odoo-env
$ sudo chown -R odoo: /var/log/odoo
Mã:
$ sudo chown odoo: /etc/odoo.conf
$ sudo chmod 640 /etc/odoo.conf
Khởi động máy chủ Odoo
Khởi động và bật máy chủ Odoo.
Mã:
$ sudo systemctl start odoo-server
$ sudo systemctl enable odoo-server
Mã:
$ sudo systemctl status odoo-server
? odoo-server.service - Odoo Open Source ERP and CRM Loaded: loaded (/usr/lib/systemd/system/odoo-server.service; enabled; preset: disabled) Active: active (running) since Tue 2024-04-09 23:59:38 UTC; 1s ago Main PID: 102598 (python3) Tasks: 4 (limit: 10736) Memory: 69.6M CPU: 895ms CGroup: /system.slice/odoo-server.service ??102598 /opt/odoo/odoo-env/bin/python3 /opt/odoo/odoo/odoo-bin --config=/etc/odoo.conf --addons-path=/opt/odoo/odoo/addons/ --logfile /var/log/odoo/odoo-server.log
Apr 09 23:59:38 odoo.yourdomain.com systemd[1]: Started Odoo Open Source ERP and CRM.
Bước 6 - Cài đặt và cấu hình Nginx
Rocky Linux 9 được tích hợp sẵn phiên bản Nginx cũ hơn. Bạn cần sử dụng kho lưu trữ Nginx chính thức để cài đặt phiên bản mới nhất.Tạo và mở tệp
/etc/yum.repos.d/nginx.repo
để chỉnh sửa.
Mã:
$ sudo nano /etc/yum.repos.d/nginx.repo
Mã:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
enabled=1
bên dưới phần chính thay vì phần ổn định. Bạn có thể chọn một trong hai.Cài đặt Nginx.
Mã:
$ sudo dnf install -y nginx
Mã:
$ nginx -v
nginx version: nginx/1.25.4
Mã:
$ sudo systemctl enable nginx --now
Mã:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled) Active: active (running) since Wed 2024-04-10 06:52:14 UTC; 3s ago Docs: http://nginx.org/en/docs/ Process: 103452 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 103453 (nginx) Tasks: 3 (limit: 10736) Memory: 3.1M CPU: 17ms CGroup: /system.slice/nginx.service ??103453 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??103454 "nginx: worker process" ??103455 "nginx: worker process"
Bước 7 - Cài đặt SSL
Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL miễn phí do Let's Encrypt cung cấp. Chúng ta sẽ sử dụng trình cài đặt gói Snapd cho mục đích đó. Yêu cầu kho lưu trữ EPEL (Gói bổ sung cho Enterprise Linux) để hoạt động.Cài đặt kho lưu trữ EPEL.
Mã:
$ sudo dnf install -y epel-release
Mã:
$ sudo dnf install -y snapd
Mã:
$ sudo systemctl enable snapd --now
Mã:
$ sudo snap install core
$ sudo snap refresh core
Mã:
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Mã:
$ sudo snap install --classic certbot
/usr/bin
thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Mã:
$ certbot --version
certbot 2.10.0
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d odoo.yourdomain.com
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Mã:
$ sudo systemctl list-timers
snap.certbot.renew.service
là một trong những dịch vụ được lên lịch chạy.
Mã:
NEXT LEFT LAST PASSED UNIT ACTIVATES
.... .... .... ...... .... .........
Wed 2024-04-10 13:32:11 UTC 1h 42min left Wed 2024-04-10 11:43:41 UTC 5min ago dnf-makecache.timer dnf-makecache.service
Wed 2024-04-10 19:08:00 UTC 7h left - - snap.certbot.renew.timer snap.certbot.renew.service
Thu 2024-04-11 00:00:00 UTC 12h left Wed 2024-04-10 00:00:36 UTC 11h ago logrotate.timer logrotate.service
Mã:
$ sudo certbot renew --dry-run
Bước 8 - Cấu hình Nginx
Để chạy qua Nginx, chúng ta cần chạy Odoo trên máy chủ cục bộ. Để thay đổi điều đó, hãy dừng dịch vụ Odoo.
Mã:
$ sudo systemctl stop odoo-server
Mã:
$ sudo nano /etc/odoo.conf
Mã:
xmlrpc_interface = 127.0.0.1
proxy_mode = True
Mã:
$ sudo nano /etc/nginx/conf.d/odoo.conf
Mã:
#odoo server
upstream odoo { server 127.0.0.1:8069;
}
upstream odoochat { server 127.0.0.1:8072;
}
map $http_upgrade $connection_upgrade { default upgrade; '' close;
}
map $sent_http_content_type $content_type_csp { default ""; ~image/ "default-src 'none'";
}
# http -> https
server { listen 80; listen [::]:80; server_name odoo.yourdomain.com; return 301 https://$host$request_uri;
}
server { listen 443 ssl; listen [::]:443 ssl; http2 on; http3 on; quic_retry on; server_name odoo.yourdomain.com; proxy_read_timeout 720s; proxy_connect_timeout 720s; proxy_send_timeout 720s; # Add Headers for odoo proxy mode 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/odoo.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/odoo.yourdomain.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/odoo.yourdomain.com/chain.pem; ssl_session_timeout 30m; ssl_session_cache shared:MozSSL:10m; # about 40000 sessions ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_prefer_server_ciphers off; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; # log access_log /var/log/nginx/odoo.access.log; error_log /var/log/nginx/odoo.error.log; # Redirect longpoll requests to odoo longpolling port location /longpolling { proxy_pass http://odoochat; } location /websocket { proxy_pass http://odoochat; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header X-Forwarded-Host $http_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; proxy_cookie_flags session_id samesite=lax secure; # requires nginx 1.19.8 } # Redirect requests to odoo backend server location / { # Add Headers for odoo proxy mode proxy_set_header X-Forwarded-Host $http_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; proxy_redirect off; proxy_pass http://odoo; proxy_cookie_flags session_id samesite=lax secure; # requires nginx 1.19.8 } # common gzip gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript; gzip on; # Serve static files right away location ~ ^/[^/]+/static/.+$ { # root and try_files both depend on your addons paths root /opt/odoo/odoo; try_files /opt/odoo/odoo/addons$uri @odoo; expires 24h; add_header Content-Security-Policy $content_type_csp; }
}
Mở tệp
/etc/nginx/nginx.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
.
Mã:
server_names_hash_bucket_size 64;
Kiểm tra Nginx cấu hình.
Mã:
$ sudo nginx -t
Mã:
$ sudo systemctl restart nginx
Bước 9 - Khởi động Odoo
Chúng ta có thể khởi động lại máy chủ Odoo sau khi mọi thứ đã được thiết lập.
Mã:
$ sudo systemctl start odoo-server
https://odoo.yourdomain.com
. Trong trình duyệt của bạn, hãy mở URL http://:8069
hoặc http://odoo.yourdomain.com:8069
. Bạn sẽ thấy màn hình tạo cơ sở dữ liệu của Odoo nếu mọi thứ hoạt động bình thường.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22707%22%20height=%22621%22%3E%3C/svg%3E
Chọn email và mật khẩu của bạn để tạo thông tin đăng nhập. Mật khẩu chính là
admin_passwd
mà bạn đã thêm vào tệp /etc/odoo.conf
. Điền vào tất cả các trường còn lại.Kiểm tra trường
Demo Data
để điền dữ liệu mẫu vào cơ sở dữ liệu. Không cài đặt dữ liệu demo trên các máy chủ kết nối internet. Các cơ sở dữ liệu có dữ liệu demo chứa thông tin đăng nhập và mật khẩu mặc định có thể được sử dụng để xâm nhập vào hệ thống của bạn và gây ra sự cố đáng kể, ngay cả trên các hệ thống dàn dựng/phát triển. Chúng tôi chỉ sử dụng nó cho mục đích hướng dẫn.Nhấp vào nút Tạo cơ sở dữ liệu để tiến hành hoàn tất cài đặt. Lần đầu tiên bạn tạo cơ sở dữ liệu, trang tiện ích bổ sung sẽ mất thời gian để tải nên đừng làm mới trang. Bạn sẽ được tự động chuyển hướng đến trang đăng nhập sau khi cơ sở dữ liệu được tạo.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22344%22%20height=%22441%22%3E%3C/svg%3E
Nhập thông tin đăng nhập đã sử dụng ở bước trước để đăng nhập vào Odoo ERP và bạn sẽ được đưa đến trang bảng điều khiển như hiển thị bên dưới. Trang này sẽ được điền sẵn dữ liệu demo. Nếu bạn chưa kiểm tra tùy chọn dữ liệu demo trên trang tạo cơ sở dữ liệu, bạn sẽ nhận được bảng điều khiển khác và sạch hơn nhiều.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22372%22%3E%3C/svg%3E
Bạn có thể bắt đầu sử dụng Odoo để quản lý doanh nghiệp của mình từ đây.
Bước 10 - Cập nhật Odoo
Dừng Odoo máy chủ.
Mã:
$ sudo systemctl stop odoo-server
Mã:
$ sudo su - odoo
Mã:
$ git fetch
$ git rebase --autostash
Nếu bạn muốn loại bỏ các thay đổi xung đột, bạn có thể chạy lệnh sau để đặt lại nguồn.
Mã:
$ git reset --hard
Mã:
$ source odoo-env/bin/activate
Mã:
$ pip3 install -r /opt/odoo/odoo/requirements.txt
Mã:
$ deactivate
Mã:
$ sudo systemctl start odoo-server
Bước 11 - Bảo mật Odoo bằng Fail2Ban
Bước này là tùy chọn nhưng nếu bạn đã cài đặt Fail2Ban, bạn có thể thêm cấu hình cho Odoo để bảo vệ nó.Tạo và mở tệp
odoo-login.conf
cho chỉnh sửa.
Mã:
$ sudo nano /etc/fail2ban/jail.d/odoo-login.conf
Mã:
[odoo-login]
enabled = true
port = http,https
bantime = 900 ; 15 min ban
maxretry = 10 ; if 10 attempts
findtime = 60 ; within 1 min /!\ Should be adjusted with the TZ offset
logpath = /var/log/odoo.log ; set the actual odoo log path here
Tạo và mở
odoo-login.conf
lọc tệp để chỉnh sửa.
Mã:
$ sudo nano /etc/fail2ban/filter.d/odoo-login.conf
Mã:
[Definition]
failregex = ^ \d+ INFO \S+ \S+ Login failed for db:\S+ login:\S+ from
ignoreregex =
Khởi động lại Fail2Ban.
Mã:
$ sudo systemctl restart fail2ban