Cài đặt Odoo 15 trên Ubuntu server 22.04 với Nginx, SSL Step by Step
22 tháng 10, 2024 bởi
Cài đặt Odoo 15 trên Ubuntu server 22.04 với Nginx, SSL Step by Step
iTricks
| Chưa có bình luận

1. Cài đặt các thư viện cần thiết cho máy chủ Ubuntu

Chuẩn bị máy chủ Ubuntu server 22.04 Lts và có quyền user root

Update và cài đặt các thư viện cần thiết cho hệ thống ubuntu server

Code Snippet

Terminal Code

Copy code
      
sudo apt update -y && apt upgrade -y
      
    

Cài Wkhtmltopdf cho việc in báo cáo pdf

ubuntu 22.04

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

Hoặc:

wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb sudo apt install -f ./wkhtmltox_0.12.6-1.focal_amd64.deb
sudo apt install build-essential gdebi git libatlas-base-dev libblas-dev libffi-dev libfreetype6-dev libfribidi-dev libharfbuzz-dev libjpeg-dev libjpeg8-dev liblcms2-dev libldap2-dev libmysqlclient-dev libopenjp2-7-dev libpq-dev libsasl2-dev libssl-dev libtiff5-dev libwebp-dev libxcb1-dev libxml2-dev libxslt-dev libxslt1-dev libzip-dev node-less python3-dev python3-pip python3-setuptools python3-venv python3-wheel wget zlib1g-dev -y

2. Cài PostgreSQL

Chạy lệnh sau để cài postgresql

Code Snippet

Terminal Code

Copy code
      
sudo apt install postgresql -y
      
    

Tạo user postgresql để chạy odoo

Code Snippet

Terminal Code

Copy code
      
sudo su - postgres -c "createuser -s odooitricks"
      
    


Gỡ bỏ postgresql:

sudo systemctl stop postgresql
sudo apt-get purge postgresql postgresql-contrib -y
sudo apt-get autoremove -y
sudo rm -r /var/lib/postgresql
sudo rm -r /etc/postgresql
sudo systemctl daemon-reload
sudo deluser postgres
sudo delgroup postgres

3. Tạo user system

Tạo system user để chạy dịch vụ odoo riêng

Code Snippet

Terminal Code

Copy code
      
sudo useradd -m -d /opt/odooitricks -U -r -s /bin/bash odooitricks
      
    
  • useradd: Là lệnh để thêm một người dùng mới.
  • -m: Tạo thư mục home cho người dùng. Nếu không có tùy chọn này, thư mục home không được tạo.
  • -d /opt/odooitricks: Chỉ định thư mục home cho người dùng mới là /opt/odooitricks. Thư mục home thường là nơi mà người dùng sẽ bắt đầu khi họ đăng nhập.
  • -U: Tạo một nhóm có tên giống với tên người dùng và thêm người dùng vào nhóm này. Nếu không có tùy chọn này, một nhóm với tên người dùng sẽ được tạo, và người dùng sẽ là thành viên duy nhất của nhóm này.
  • -r: Tạo một người dùng hệ thống. Người dùng hệ thống thường được sử dụng cho các dịch vụ và quá trình hệ thống và thường có UID (User ID) thấp hơn so với người dùng thông thường.
  • -s /bin/bash: Chỉ định shell mặc định cho người dùng là /bin/bash. Shell này sẽ được sử dụng khi người dùng đăng nhập vào hệ thống.
  • odooitricks: Tên người dùng mới.


Chuyển chế độ làm việc qua user vừa tạo

Code Snippet

Terminal Code

Copy code
      
su - odooitricks
      
    


4. Download odoo từ Git

Code Snippet

Terminal Code

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


5. Tạo môi trường ảo để chạy odoo

Tạo môi trường ảo để chạy odoo, nhằm cho odoo chạy ổn định và không phụ thuộc vào môi trường ubuntu server khi hệ thống update

Code Snippet

Terminal Code

Copy code
      
python3 -m venv myodooitricks-venv
      
    

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

Code Snippet

Terminal Code

Copy code
      
source myodooitricks-venv/bin/activate
      
    


6. Cài đặt thư viện cần thiết của odoo

Code Snippet

Terminal Code

Copy code
      
pip3 install wheel
pip3 install -r odoo/requirements.txt
      
    
wheel: Là một định dạng gói được sử dụng để tối ưu hóa quá trình cài đặt các gói Python. Gói wheel được thiết kế để lưu trữ các phiên bản được biên dịch trước của các gói Python, giúp giảm thời gian cài đặt so với việc biên dịch trực tiếp từ mã nguồn.
Khi bạn chạy lệnh pip3 install wheel, bạn đang cài đặt gói wheel để chuẩn bị cho việc cài đặt các gói Python từ wheel thay vì từ mã nguồn, có thể giúp tăng tốc quá trình cài đặt các gói lớn hoặc phức tạp.
-r odoo/requirements.txt: Chỉ định rằng bạn muốn cài đặt các gói từ danh sách yêu cầu được định nghĩa trong tệp tin odoo/requirements.txt.

Cài đặt xong thư viện chúng ta thoát môi trường ảo bằng lệnh dưới

Code Snippet

Terminal Code

Copy code
      
deactivate
      
    

Thoát odoo user chuyển qua root

Code Snippet

Terminal Code

Copy code
      
exit
      
    


7. Tạo thư mục chứa addons tuỳ chỉnh

Tạo thư mục chứa các addons riêng của bạn, khi chỉnh sửa hay thêm mới bạn nên để chúng vào thư mục này cho dễ quản lý code

Code Snippet

Terminal Code

Copy code
      
mkdir /opt/odooitricks/custom-addons
      
    


8. Tạo config file

Tạo mật khẩu cho user database

Sửa file dưới: với dòng md5 thành peer để truy cập vào postgres không cần mật khẩu


/etc/postgresql/14/main/pg_hba.conf

local   all             postgres                                md5
sudo -u postgres psql
ALTER USER odooitricks WITH PASSWORD 'itricks123';

Sau khi tạo mật khẩu xong thì phải để lại thành md5 cho bảo mật
sửa dòng sau: 

local   all             all                                     md5

từ peer thành md5 thì mới truy cập được

Code Snippet

Terminal Code

Copy code
      
sudo nano /etc/odooitricks.conf
      
    

Thêm đoạn cấu hình cơ bản như sau:

Code Snippet

Terminal Code

Copy code
      
[options]
admin_passwd = 123456
db_host = False
db_port = False
db_user = odooitricks
db_password = False
xmlrpc_port = 8069
logfile = /var/log/odooitricks/odoo.log
addons_path = /opt/odooitricks/odoo/addons,/opt/odooitricks/custom-addons
proxy_mode = True
      
    
File conf có rất nhiều tuỳ chọn và setting, bạn có thể tham khảo đầy đủ file conf trên internet và cộng đồng link tham khảo:  https://gist.github.com/Guidoom/d5db0a76ce669b139271a528a8a2a27f


9. Tạo file log

Tạo file log để ghi lại lịch sử chạy hệ thống và xem các lỗi nếu có

Code Snippet

Terminal Code

Copy code
      
mkdir /var/log/odooitricks
chown odooitricks:root /var/log/odooitricks
      
    


10. Tạo service odoo khởi động cùng ubuntu

Khi khởi động ubuntu thì service odoo cũng sẽ tự động khởi chạy với mã sau

Code Snippet

Terminal Code

Copy code
      
sudo nano /etc/systemd/system/odooitricks.service
      
    
Code Snippet

Terminal Code

Copy code
      
[Unit]
Description=Odooitricks
Requires=postgresql.service
After=network.target postgresql.service
[Service]
Type=simple
SyslogIdentifier=odooitricks
PermissionsStartOnly=true
User=odooitricks
Group=odooitricks
ExecStart=/opt/odooitricks/myodooitricks-venv/bin/python3 /opt/odooitricks/odoo/odoo-bin -c /etc/odooitricks.conf
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
      
    


11. Reload service

Khởi động lại dịch vụ để hệ thống áp dụng với các service mới tạo

Code Snippet

Terminal Code

Copy code
      
sudo systemctl daemon-reload
sudo systemctl enable --now odooitricks
      
    

Kiểm tra xem dịch vụ odoo đã chạy chưa

Code Snippet

Terminal Code

Copy code
      
sudo systemctl status odooitricks
      
    


Lưu ý: Khi cấu hình sai muốn xóa file này, bạn cần dừng dịch vụ trước và vô hiệu hóa nó và xóa, Các lệnh lần lượt như sau:
sudo systemctl stop your_service_name
sudo systemctl disable your_service_name
sudo rm /etc/systemd/system/your_service_name.service

12. Cài đặt Nginx, SSL

Cài đặt webserver Nginx và chứng chỉ SSL free

Code Snippet

Terminal Code

Copy code
      
apt-get install nginx python3-certbot-nginx
systemctl start nginx
systemctl enable nginx
      
    

Tạo file nginx conf cho odoo

Code Snippet

Terminal Code

Copy code
      
nano /etc/nginx/conf.d/odooitricks.conf
      
    

Thêm đoạn cấu hình sau vào

Code Snippet

Terminal Code

Copy code
      
upstream odooitricks {
server 127.0.0.1:8069;
}
server {
listen 80;
server_name itricks.me;
root /usr/share/nginx/html;
index index.html index.htm;
access_log /var/log/nginx/odoo-itricks.me-local.access.log;
error_log /var/log/nginx/odoo-itricks.me-local.error.log;
location / {
proxy_pass http://odooitricks;
# force timeouts if the backend dies
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
# set headers
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
# cache some static data in memory for 60mins
location ~* /web/static/ {
proxy_cache_valid 200 60m;
proxy_buffering on;
expires 864000;
proxy_pass http://odooitricks;
}
}
      
    

Check cú pháp nginx xem có lỗi gì không, nếu không lỗi thì restart lại dịch vụ nginx

Code Snippet

Terminal Code

Copy code
      
nginx -t
systemctl restart nginx
      
    

Gỡ bỏ ng​inx

sudo apt-get remove nginx nginx-common
sudo apt-get purge nginx nginx-common
sudo apt-get autoremove

Cài đặt SSL cho tên miền

Code Snippet

Terminal Code

Copy code
      
certbot --nginx -d itricks.me
      
    

Truy cập tên miền itricks.me sẽ ra giao diện tạo database, nhập mật khẩu admin tạo trong file conf điền đủ các thông tin rồi ấn tạo database bắt đầu sử dụng.


Lưu ý: Xóa 1 chứng chỉ SSL cho domain.

Dừng dịch vụ nginx, sau đó tiến hành xóa 
sudo systemctl stop nginx
sudo certbot delete --cert-name your_domain

Sau đó xóa tất cả các cấu hình nginx có liên quan tới SSL(trong file cấu hình nginx có phần comment được tạo bởi cert...)

Làm mới và khởi động lại nginx
sudo systemctl daemon-reload
sudo systemctl start nginx


- Gỡ bỏ toàn bộ odoo

Dừng dịch vụ Nginx, service odoo.
sudo systemctl stop nginx
sudo systemctl stop odooitricks
Xóa chứng chỉ SSL bằng lệnh: 
sudo certbot delete --cert-name your_domain
Xóa file cấu hình nginx
sudo rm /etc/nginx/conf.d/odooitricks.conf
Xóa dịch vụ odoo
sudo systemctl stop your_service_name
sudo systemctl disable your_service_name
sudo rm /etc/systemd/system/your_service_name.service
Xóa file log
sudo rm /var/log/odooitrics.log
Xóa file conf odoo
sudo rm /etc/odooitrcks.conf
Xóa môi trường ảo
sudo rm -rf myodooitricks-venv
Xóa thư mục gốc chứa code
sudo rm -r /opt/odoo/odooitricks 
Xóa người dùng hệ thống
sudo userdel -r odooitricks
Xóa người dùng posgresql
sudo su - postgres -c "dropuser odooitricks"









Bài viết này hướng dẫn cài đặt mức cơ bản và đầy đủ, chi tiết. Có nhiều cách cấu hình và tuỳ chọn riêng cho từng yêu cầu riêng trong thực tế. 

Chúc bạn thành công!

# Odoo
Đăng nhập để viết bình luận