Cài đặt Odoo trên CentOS với Nginx

theanh

Administrator
Nhân viên
Odoo là hệ thống ERP và CRM nguồn mở được sử dụng để quản lý các nhu cầu cơ bản của công ty bao gồm quản lý vật tư và kho, nguồn nhân lực, tài chính, kế toán, bán hàng, hàng tồn kho và nhiều tính năng doanh nghiệp khác. Nó được xây dựng bằng Python và sử dụng PostgreSQL làm cơ sở dữ liệu. Phiên bản Odoo 14 mới nhất có các tính năng tiện dụng, bao gồm trình tạo trang web mới, công cụ thông minh kinh doanh mới, menu hàng tồn kho và MRP mới và được cải tiến, v.v.

Hướng dẫn này sẽ chỉ cho bạn cách cài đặt Odoo 14 với Nginx trên CentOS 8.

Điều kiện tiên quyết​

  • Máy chủ chạy CentOS 8.
  • Tên miền hợp lệ được trỏ bằng IP máy chủ của bạn.
  • Mật khẩu gốc được cấu hình trên máy chủ.

Bắt đầu​

Trước khi bắt đầu, bạn sẽ cần cài đặt Python, wkhtmltopdf và các phụ thuộc bắt buộc khác vào hệ thống của mình. Chạy lệnh sau để cài đặt tất cả chúng:
Mã:
dnf install python3 redhat-rpm-config libxslt-devel bzip2-devel openldap-devel python3-devel git gcc libjpeg-devel freetype-devel curl unzip -y
dnf install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm
Sau khi tất cả các thành phần phụ thuộc được cài đặt, bạn có thể tiến hành bước tiếp theo.

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

Odoo sử dụng PostgreSQL làm một backend cơ sở dữ liệu. Vì vậy, bạn sẽ cần cài đặt nó vào hệ thống của mình. Chạy lệnh sau để cài đặt PostgreSQL:
Mã:
dnf install postgresql postgresql-server postgresql-contrib -y
Sau khi PostgreSQL được cài đặt, hãy khởi tạo cơ sở dữ liệu bằng lệnh sau:
Mã:
postgresql-setup initdb
Bạn sẽ thấy thông báo sau đầu ra:
Mã:
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql * Initializing database in '/var/lib/pgsql/data' * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
Tiếp theo, khởi động dịch vụ PostgreSQL và cho phép dịch vụ này khởi động khi khởi động lại hệ thống:
Mã:
systemctl start postgresql
systemctl enable postgresql
Tiếp theo, tạo người dùng mới cho odoo bằng lệnh sau lệnh:
Mã:
su - postgres -c "createuser -s odoo14"
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cài đặt Odoo 14​

Bạn nên cài đặt và chạy Odoo dưới dạng người dùng độc lập. Bạn có thể tạo người dùng mới cho Odoo bằng lệnh sau:
Mã:
useradd -m -U -r -d /opt/odoo14 -s /bin/bash odoo14
Lưu ý: Người dùng Odoo và người dùng PostgreSQL phải giống nhau.

Tiếp theo, chuyển người dùng sang Odoo 14 và tải xuống phiên bản Odoo 14 mới nhất bằng lệnh sau:
Mã:
su - odoo14
git clone https://www.github.com/odoo/odoo --depth 1 --branch 14.0 /opt/odoo14/odoo14
Sau khi tải xuống hoàn tất, hãy thay đổi thư mục đến odoo14 và tạo một môi trường ảo python mới bằng lệnh sau:
Mã:
cd /opt/odoo14
python3 -m venv odooenv
Tiếp theo, kích hoạt môi trường ảo bằng lệnh sau:
Mã:
source odooenv/bin/activate
Tiếp theo, cài đặt các phụ thuộc Python khác bằng lệnh sau lệnh:
Mã:
(odooenv) [odoo14@centos8 ~]$ pip3 install wheel
(odooenv) [odoo14@centos8 ~]$ pip3 install -r odoo14/requirements.txt
Tiếp theo, hủy kích hoạt khỏi môi trường ảo và thoát khỏi người dùng Odoo bằng lệnh sau:
Mã:
(odooenv) [odoo14@centos8 ~]$ deactivate
exit
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cấu hình Odoo 14​

Tiếp theo, bạn sẽ cần tạo một thư mục để lưu trữ Tiện ích bổ sung Odoo 14. Bạn có thể tạo tiện ích bổ sung này bằng lệnh sau:
Mã:
mkdir /opt/odoo14/odoo14-custom-addons
Tiếp theo, thiết lập quyền sở hữu thích hợp cho thư mục tiện ích bổ sung:
Mã:
chown -R odoo14:odoo14 /opt/odoo14/odoo14-custom-addons
Tiếp theo, tạo thư mục nhật ký và tệp cho Odoo 14 và thiết lập quyền sở hữu thích hợp quyền sở hữu:
Mã:
mkdir /var/log/odoo14
touch /var/log/odoo14/odoo14.log
chown -R odoo14: /var/log/odoo14/
Tiếp theo, tạo tệp cấu hình Odoo 14:
Mã:
nano /etc/odoo14.conf
Thêm các dòng sau:
Mã:
[options]
; This is the password that allows database operations:
admin_passwd = your_master_password
db_host = False
db_port = False
db_user = odoo14
db_password = False
xmlrpc_port = 8069
; longpolling_port = 8072
logfile = /var/log/odoo14/odoo14.log
logrotate = True
addons_path = /opt/odoo14/odoo14/addons,/opt/odoo14/odoo14-custom-addons
Lưu và đóng tệp khi bạn hoàn tất.

Tạo tệp đơn vị Systemd cho Odoo 14​

Tiếp theo, bạn sẽ cần tạo tệp dịch vụ systemd để quản lý dịch vụ Odoo 14. Bạn có thể tạo nó bằng lệnh sau:
Mã:
nano /etc/systemd/system/odoo14.service
Thêm các dòng sau:
Mã:
[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/odooenv/bin/python3 /opt/odoo14/odoo14/odoo-bin -c /etc/odoo14.conf
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
Lưu và đóng tệp, sau đó tải lại daemon systemd bằng lệnh sau lệnh:
Mã:
systemctl daemon-reload
Tiếp theo, khởi động dịch vụ Odoo 14 và cho phép dịch vụ này khởi động khi khởi động lại hệ thống bằng lệnh sau:
Mã:
systemctl start odoo14
systemctl enable odoo14
Bây giờ bạn có thể kiểm tra trạng thái của dịch vụ Odoo 14 bằng lệnh sau lệnh:
Mã:
systemctl status odoo14
Bạn sẽ nhận được kết quả sau:
Mã:
? odoo14.service - Odoo14 Loaded: loaded (/etc/systemd/system/odoo14.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2021-05-01 06:29:56 EDT; 5s ago Main PID: 26505 (python3) Tasks: 4 (limit: 25014) Memory: 91.8M CGroup: /system.slice/odoo14.service ??26505 /opt/odoo14/odooenv/bin/python3 /opt/odoo14/odoo14/odoo-bin -c /etc/odoo14.conf
May 01 06:29:56 centos8 systemd[1]: Started Odoo14.
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cài đặt và cấu hình Nginx cho Odoo 14​

Tại thời điểm này, Odoo 14 đã được cài đặt và đang chạy. Bây giờ, bạn nên cấu hình Nginx làm proxy ngược cho odoo.

Trước tiên, hãy cài đặt gói Nginx bằng lệnh sau:
Mã:
dnf install nginx -y
Sau khi Nginx được cài đặt, hãy tạo tệp cấu hình máy chủ ảo Nginx mới bằng lệnh sau:
Mã:
nano /etc/nginx/conf.d/odoo14.conf
Thêm nội dung sau dòng:
Mã:
upstream odoo { server 127.0.0.1:8069;
}
upstream odoochat { server 127.0.0.1:8072;
}
server { listen 80; server_name odoo.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; # 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;
}
Lưu và đóng tệp sau đó xác minh Nginx xem có lỗi cú pháp nào không bằng lệnh sau:
Mã:
nginx -t
Bạn sẽ nhận được thông báo sau đầu ra:
Mã:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Tiếp theo, khởi động dịch vụ Nginx và cho phép nó khởi động khi khởi động lại hệ thống:
Mã:
systemctl start nginx
systemctl enable nginx
Bạn cũng có thể xác minh Nginx bằng lệnh sau lệnh:
Mã:
systemctl status nginx
Bạn sẽ nhận được kết quả sau:
Mã:
? nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2021-05-01 06:31:19 EDT; 3s ago Process: 26627 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 26625 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 26623 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 26628 (nginx) Tasks: 3 (limit: 25014) Memory: 5.3M CGroup: /system.slice/nginx.service ??26628 nginx: master process /usr/sbin/nginx ??26629 nginx: worker process ??26630 nginx: worker process
May 01 06:31:19 centos8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
May 01 06:31:19 centos8 nginx[26625]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
May 01 06:31:19 centos8 nginx[26625]: nginx: configuration file /etc/nginx/nginx.conf test is successful
May 01 06:31:19 centos8 systemd[1]: Started The nginx HTTP and reverse proxy server.
Tiếp theo, chỉnh sửa tệp cấu hình Odoo 14 và bật chế độ proxy:
Mã:
nano /etc/odoo14.conf
Thêm nội dung sau dòng:
Mã:
proxy_mode = True
Lưu và đóng tệp, sau đó khởi động lại dịch vụ Odoo 14 để áp dụng các thay đổi:
Mã:
systemctl restart odoo14

Cấu hình Tường lửa​

Tiếp theo, bạn sẽ cần cho phép cổng 80 đi qua tường lửa. Bạn có thể cho phép bằng lệnh sau:
Mã:
firewall-cmd --permanent --add-service=http
Tiếp theo, tải lại tường lửa để áp dụng các thay đổi:
Mã:
firewall-cmd --reload
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Truy cập Bảng điều khiển Odoo 14​

Bây giờ, hãy mở trình duyệt web của bạn và truy cập giao diện web Odoo 14 bằng URL . Bạn sẽ được chuyển hướng đến trang sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22546%22%3E%3C/svg%3E


Cung cấp mật khẩu chính Odoo, cơ sở dữ liệu và nhấp vào nút Tạo cơ sở dữ liệu. Bạn sẽ thấy bảng điều khiển Odoo 14 ở trang sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22389%22%3E%3C/svg%3E

Kết luận​

Xin chúc mừng! Bạn đã cài đặt thành công Odoo 14 ERP với Nginx trên CentOS 8. Bây giờ bạn có thể triển khai Odoo trong môi trường sản xuất của mình và tăng năng suất.
 
Back
Bên trên