Hướng dẫn Cài đặt và Cấu hình Odoo 13 trên Ubuntu 18.04 LTS
Bài viết này cung cấp hướng dẫn chi tiết để cài đặt và cấu hình Odoo phiên bản 13 trên hệ điều hành Ubuntu 18.04 LTS. Chúng tôi sẽ sử dụng các gói cài đặt sẵn (file .deb) mà Odoo cung cấp, thay vì biên dịch thủ công, giúp quá trình cài đặt trở nên nhanh chóng và hiệu quả hơn.

Bước 1: Cập nhật Hệ thống Ubuntu
Trước khi bắt đầu cài đặt bất kỳ phần mềm nào, việc đảm bảo hệ thống Ubuntu của bạn được cập nhật đầy đủ là rất quan trọng. Điều này giúp tránh các xung đột tiềm ẩn và tận dụng các bản vá bảo mật mới nhất.
sudo apt update sudo apt -y upgrade
Sau khi hoàn tất quá trình cập nhật, bạn nên khởi động lại hệ thống để áp dụng tất cả các thay đổi.
sudo reboot
Bước 2: Cài đặt Cơ sở dữ liệu PostgreSQL
Odoo sử dụng PostgreSQL làm hệ quản trị cơ sở dữ liệu để lưu trữ toàn bộ dữ liệu của ứng dụng. Hướng dẫn này sẽ tập trung vào việc cài đặt phiên bản PostgreSQL được khuyến nghị cho Ubuntu 18.04.
Để tìm hiểu chi tiết về cách cài đặt PostgreSQL 12 trên Ubuntu 18.04, vui lòng tham khảo:
Cài đặt PostgreSQL 12 trên Ubuntu 18.04
Bước 3: Cài đặt wkhtmltopdf
Công cụ wkhtmltopdf là một yêu cầu bắt buộc đối với Odoo, đặc biệt là để xử lý việc in ấn các báo cáo dưới dạng PDF. Phiên bản wkhtmltopdf được tích hợp sẵn trong kho lưu trữ mặc định của Ubuntu thường thiếu các chức năng cần thiết cho tiêu đề và chân trang, do đó, nó không được khuyến nghị sử dụng trực tiếp.
Phiên bản wkhtmltopdf được đề xuất cho Odoo là 0.12.5. Bạn có thể tải xuống phiên bản này từ kho lưu trữ trên trang tải xuống chính thức của wkhtmltopdf.
Xem chi tiết cách cài đặt:
Cài đặt wkhtmltopdf & wkhtmltoimage trên Ubuntu 18.04 / Debian 10 Linux
[IMAGE_2]
Bước 4: Cài đặt Odoo 13 trên Ubuntu 18.04 LTS
Để cài đặt Odoo phiên bản 13, chúng ta sẽ thêm kho lưu trữ (repository) chính thức của Odoo vào hệ thống.
Thêm kho lưu trữ Odoo:
wget -O - //nightly.odoo.com/odoo.key | sudo apt-key add - echo "deb //nightly.odoo.com/13.0/nightly/deb/ ./" | sudo tee /etc/apt/sources.list.d/odoo.list
Cập nhật danh sách gói và cài đặt Odoo:
sudo apt update sudo apt install odoo
Sau khi cài đặt hoàn tất, dịch vụ Odoo sẽ tự động được khởi động. Bạn có thể kiểm tra trạng thái của dịch vụ Odoo bằng lệnh sau:
systemctl status odoo
Kết quả hiển thị sẽ cho thấy dịch vụ Odoo đang hoạt động (active (running)):
● odoo.service - Odoo Open Source ERP and CRM
Loaded: loaded (/lib/systemd/system/odoo.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2019-10-19 14:02:14 UTC; 3h 11min ago
Main PID: 24088 (odoo)
Tasks: 4 (limit: 2362)
CGroup: /system.slice/odoo.service
└─24088 /usr/bin/python3 /usr/bin/odoo --config /etc/odoo/odoo.conf --logfile /var/log/odoo/odoo-server.log
Oct 19 14:02:14 foreman.example.com systemd[1]: Started Odoo Open Source ERP and CRM.
Để đảm bảo dịch vụ Odoo tự động khởi động khi hệ thống khởi động lại, hãy sử dụng lệnh sau:
sudo systemctl enable --now odoo
Odoo mặc định lắng nghe trên cổng 8069. Bạn có thể xác nhận điều này bằng lệnh:
ss -tunelp | grep 8069
Kết quả sẽ tương tự như:
tcp LISTEN 0 128 0.0.0.0:8069 0.0.0.0:* uid:113 ino:1906251 sk:d
[IMAGE_3]
Bước 5: Cấu hình Nginx làm Proxy cho Odoo 13
Để truy cập Odoo một cách chuyên nghiệp và bảo mật hơn, chúng ta sẽ sử dụng Nginx làm reverse proxy. Điều này cho phép quản lý các kết nối, SSL, và định tuyến yêu cầu hiệu quả.
Cài đặt Nginx:
sudo apt -y install nginx vim
Có hai kịch bản chính cho cấu hình Nginx proxy:
- Sử dụng HTTPS (khuyến nghị cho môi trường sản xuất).
- Truy cập qua kết nối không an toàn (HTTP).
Phần này sẽ trình bày cả hai cách thiết lập.
Thiết lập Proxy Nginx với HTTP cho Odoo
Tạo một file cấu hình mới cho Nginx dành riêng cho Odoo:
sudo vim /etc/nginx/conf.d/odoo.conf
Dán đoạn cấu hình sau vào file, lưu ý thay thế erp.computingforgeeks.com bằng tên miền của bạn:
# Odoo Upstreams
upstream odooserver {
server 127.0.0.1:8069;
}
server {
listen 80;
server_name erp.computingforgeeks.com; # Thay thế bằng tên miền của bạn
access_log /var/log/nginx/odoo_access.log;
error_log /var/log/nginx/odoo_error.log;
# Proxy settings
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
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;
# Request for root domain
location / {
proxy_redirect off;
proxy_pass //odooserver;
}
# Cache static files
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass //odooserver;
}
# Gzip
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
Trong ví dụ này, tên miền sử dụng là erp.computingforgeeks.com. Bạn bắt buộc phải thay thế nó bằng tên miền thực tế bạn sẽ sử dụng để truy cập Odoo. Một bản ghi DNS hợp lệ trỏ đến địa chỉ IP của máy chủ là cần thiết để truy cập từ bên ngoài.
Kiểm tra cú pháp cấu hình Nginx:
sudo nginx -t
Nếu cấu hình hợp lệ, bạn sẽ nhận được thông báo:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Khởi động lại dịch vụ Nginx để áp dụng các thay đổi:
sudo systemctl restart nginx
Kiểm tra trạng thái Nginx:
systemctl status nginx
Nó sẽ hiển thị trạng thái hoạt động:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2019-10-19 17:34:39 UTC; 5s ago
Docs: man:nginx(8)
Process: 626 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 615 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 631 (nginx)
Tasks: 2 (limit: 2362)
CGroup: /system.slice/nginx.service
├─631 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─632 nginx: worker process
....
[IMAGE_4]
Sử dụng Chứng chỉ SSL (Let's Encrypt) cho Odoo qua Nginx
Việc sử dụng SSL là cực kỳ quan trọng cho bất kỳ ứng dụng nào, đặc biệt là trong môi trường sản xuất. Let's Encrypt cung cấp các chứng chỉ SSL miễn phí, là giải pháp lý tưởng để bảo vệ kết nối của bạn.
Cài đặt Certbot và lấy chứng chỉ SSL:
wget //dl.eff.org/certbot-auto chmod +x certbot-auto sudo mv certbot-auto /usr/local/bin/certbot-auto sudo systemctl stop nginx # Tạm dừng Nginx để Certbot có thể lấy chứng chỉ
Thiết lập các biến môi trường cho tên miền và email của bạn:
export DOMAIN="erp.computingforgeeks.com" # Thay thế bằng tên miền của bạn
export EMAIL="myemail@computingforgeeks.com" # Thay thế bằng email của bạn
sudo /usr/local/bin/certbot-auto certonly --standalone -d ${DOMAIN} --preferred-challenges http --agree-tos -n -m ${EMAIL} --keep-until-expiring
Sau khi quá trình lấy chứng chỉ hoàn tất, bạn sẽ thấy thông báo về vị trí lưu trữ chứng chỉ:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/erp.computingforgeeks.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/erp.computingforgeeks.com/privkey.pem Your cert will expire on 2020-01-17. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: //letsencrypt.org/donate Donating to EFF: //eff.org/donate-le
Thiết lập gia hạn chứng chỉ tự động bằng Cron:
Mở crontab để chỉnh sửa:
sudo crontab -e
Thêm dòng sau để lên lịch gia hạn tự động:
15 3 * * * /usr/local/bin/certbot-auto renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
Dòng này sẽ chạy lệnh gia hạn hàng ngày vào lúc 3:15 sáng, tạm dừng Nginx trước khi gia hạn và khởi động lại Nginx sau đó.
Cập nhật cấu hình Nginx với SSL:
Chỉnh sửa lại file cấu hình Nginx đã tạo:
sudo vim /etc/nginx/conf.d/odoo.conf
Thay thế nội dung file bằng đoạn cấu hình sau, nhớ đổi erp.computingforgeeks.com thành tên miền của bạn.
# Odoo Upstreams
upstream odooserver {
server 127.0.0.1:8069;
}
# http to https redirection
server {
listen 80;
server_name erp.computingforgeeks.com; # Thay thế bằng tên miền của bạn
return 301 //erp.computingforgeeks.com$request_uri; # Chuyển hướng HTTP sang HTTPS
}
server {
listen 443 ssl;
server_name erp.computingforgeeks.com; # Thay thế bằng tên miền của bạn
access_log /var/log/nginx/odoo_access.log;
error_log /var/log/nginx/odoo_error.log;
# SSL Configuration
ssl_certificate /etc/letsencrypt/live/erp.computingforgeeks.com/fullchain.pem; # Sử dụng đường dẫn thực tế
ssl_certificate_key /etc/letsencrypt/live/erp.computingforgeeks.com/privkey.pem; # Sử dụng đường dẫn thực tế
ssl_trusted_certificate /etc/letsencrypt/live/erp.computingforgeeks.com/chain.pem; # Sử dụng đường dẫn thực tế
# Proxy settings
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
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;
# Request for root domain
location / {
proxy_redirect off;
proxy_pass //odooserver;
}
# Cache static files
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass //odooserver;
}
# Gzip Compression
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
Quan trọng: Đảm bảo bạn thay thế erp.computingforgeeks.com bằng tên miền thực tế của mình trong cả hai phần cấu hình (HTTP redirection và HTTPS server block).
Cuối cùng, khởi động lại Nginx để áp dụng cấu hình SSL mới:
sudo systemctl restart nginx
[IMAGE_5]
Bước 6: Truy cập Giao diện Web của Odoo
Sau khi hoàn tất tất cả các bước trên, bạn có thể truy cập vào giao diện web của Odoo bằng cách mở trình duyệt và nhập địa chỉ tên miền bạn đã cấu hình (ví dụ: //erp.computingforgeeks.com).
Khi lần đầu truy cập, bạn sẽ được yêu cầu tạo một cơ sở dữ liệu mới cho Odoo.
[IMAGE_6]
“`







