如何快速、安全、可扩展地搭建 Odoo?
本指南提供分步安装和配置方法。 Odoo 本文介绍了两种常用的 Docker 安装方法——Docker 安装和传统(手动)安装——以及安全技巧、性能优化、备份和高可用性/可扩展性解决方案,适用于云服务器和 VPS。文中还提供了基于 Docker 的发行版的示例和命令。 Debian/Ubuntu 所有操作设置和硬件建议均已提供并保留。.
Odoo架构简介
Odoo 它包含以下几个关键组成部分:
- Python应用程序(后端) 和 PostgreSQL 它们之间存在关联。.
- Web客户端 它通过 8069 端口提供 HTTP/WS 服务; 长轮询 用于实时报告和通知。.
- 文件存储 将附件存储在磁盘或云解决方案(S3)上。.
- 附加模块和插件(社区 或者 企业).
先决条件
安装前,请确保以下物品齐全:
- 操作系统: Ubuntu 20.04/22.04 或 Debian 11/12
- PostgreSQL 12+ (兼容 Odoo 版本)
- Python 3.8+pip、virtualenv(用于正常安装)
- Docker Engine + docker-compose (针对容器方法)
- Nginx 或 HAProxy 作为反向代理和 SSL 终止
- 根据用户负载和自动化需求定制内存和处理器
使用 Docker 安装 Odoo
优势: 隔离性强,易于部署,版本兼容性好,可通过 docker-compose 进行管理。.
示例 docker-compose.yml 文件,助您快速入门
version: '3.7'
services:
db:
image: postgres:13
environment:
POSTGRES_DB: odoo
POSTGRES_USER: odoo
POSTGRES_PASSWORD: odoo_password_here
volumes:
- odoo_db_data:/var/lib/postgresql/data
restart: always
odoo:
image: odoo:16.0
depends_on:
- db
ports:
- "8069:8069"
environment:
HOST: db
PORT: 5432
USER: odoo
PASSWORD: odoo_password_here
volumes:
- odoo_data:/var/lib/odoo
- ./config:/etc/odoo
restart: always
volumes:
odoo_db_data:
odoo_data:基本执行命令
docker-compose up -d
docker-compose logs -f odoo生产环境实用技巧
- 使用官方镜像或自定义构建 其中包括您需要的模块和依赖项。.
- 卷必须是持久性的;使用 NFS 或合适的存储驱动程序部署到集群。.
- 在反向代理层配置 SSL;将 Odoo 容器连接到 proxy_mode = True 跑步。.
- 要备份数据库 pg_dump 或者使用基于 WALS 的工具。.
Nginx反向代理示例(用于SSL)
server {
listen 80;
server_name odoo.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name odoo.example.com;
ssl_certificate /etc/letsencrypt/live/odoo.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.example.com/privkey.pem;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
location / {
proxy_pass http://127.0.0.1:8069;
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;
proxy_set_header Host $host;
}
location /longpolling {
proxy_pass http://127.0.0.1:8072;
}
}在 Linux 上手动安装 Odoo
这种方法适用于单一用途的服务器,以及需要完全控制的情况。.
一般安装步骤
步骤 1 — 安装必备组件:
sudo apt update && sudo apt upgrade -y
sudo apt install -y git python3-pip build-essential python3-dev libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev libpq-dev libjpeg-dev libfreetype6-dev node-less npm wkhtmltopdf步骤 2 — 安装 PostgreSQL 并创建用户/数据库:
sudo apt install -y postgresql
sudo -u postgres createuser -s odoo
# یا ایجاد با رمز
sudo -u postgres psql -c "CREATE USER odoo WITH PASSWORD 'secure_password';"
sudo -u postgres psql -c "CREATE DATABASE odoo OWNER odoo;"步骤 3 — 创建系统用户和虚拟环境:
sudo useradd -m -U -r -s /bin/bash odoo
sudo mkdir /opt/odoo && sudo chown odoo: /opt/odoo
sudo -u odoo git clone https://www.github.com/odoo/odoo --depth 1 --branch 16.0 /opt/odoo/odoo
cd /opt/odoo/odoo
python3 -m venv odoo-venv
source odoo-venv/bin/activate
pip install -r requirements.txt步骤 4 — 配置 Odoo(例如 /etc/odoo.conf):
[options]
; This is the password that allows database operations:
admin_passwd = your_admin_db_password
db_host = False
db_port = False
db_user = odoo
db_password = secure_password
addons_path = /opt/odoo/odoo/addons,/opt/odoo/custom_addons
logfile = /var/log/odoo/odoo.log
proxy_mode = True
workers = 4
max_cron_threads = 1步骤 5 — systemd 服务(启用并运行 Odoo):
sudo systemctl daemon-reload
sudo systemctl enable --now odoo生产配置和性能优化
关键设置 odoo.conf 生产环境:
- 工人: 对于多处理模式。建议公式:工作线程数 = (CPU 核心数 * 2) + 1
- db_maxconn: 数据库连接数上限(例如,工作进程数 * 3)
- limit_memory_soft 和 limit_memory_hard: 为防止内存溢出
- proxy_mode = True 如果使用反向代理
- 长轮询: 切换到不同的服务或端口(通常是 8072)
计算示例:4 核服务器 => workers = 9 和 db_maxconn = 60(可根据需要调整)。.
安全性和推荐硬件
网络安全和推荐设置
- 防火墙: 仅开放必要的端口(例如 SSH、80、443),并将对 8069/8072 的访问限制为私有网络或反向代理。.
- TLS: 使用 Let's Encrypt 和自动续费。.
- 失败2禁止: 防止对 SSH 和管理面板进行暴力破解。.
- PostgreSQL: 仅允许从本地主机或私有网络连接,使用强密码并限制用户使用。.
- Odoo 中的访问权限: 限制用户权限并强制执行访问级别控制。.
根据使用情况推荐的硬件
- 开发/测试: 1 个虚拟 CPU,2GB 内存,20GB 固态硬盘
- 小型企业(5-20 位用户): 2-4 个虚拟 CPU,4-8GB 内存,50-200GB 固态硬盘
- 中型组织(20-200 名用户): 4-8 个 vCPU、16-64GB RAM、NVMe SSD
- HA/企业: 多台服务器(应用节点 + 专用数据库主节点 + 副本节点 + 基于 NFS/对象存储的文件存储)
备份、监控和高可用性/可扩展解决方案
备份
备用方案建议:
- 数据库: 定期使用 pg_dump 或快照在块级别进行备份和测试恢复。.
- 文件存储: 使用 rsync 同步到对象存储(兼容 S3)或 NFS 挂载并备份。.
- 自动化: 定时脚本和 7/30 天保留期以及迁移到另一个地理位置。.
pg_dump -U odoo -Fc odoo > /backups/odoo_$(date +%F).dump监测
使用 普罗米修斯 + 格拉法纳 或者使用 SaaS 工具来监控 CPU、内存、磁盘 I/O、连接数和队列。将日志发送到中央日志系统(ELK/Graylog)。.
高可用性和可扩展性
- PostgreSQL 复制 (流复制)或使用托管数据库。.
- 负载均衡器 (HAProxy/Nginx)和多个 Odoo 应用节点。.
- 文件存储 采用共享存储(NFS/Gluster)或S3兼容存储,以确保同时访问。.
选择地点和推荐服务
选择位置和网络时需要考虑的要点:
- 延迟: 选择靠近终端用户的数据中心以降低延迟。.
- 遵守: 遵守当地法律和隐私法规。.
- 网络: 对于延迟敏感型应用,请使用 ping 值低且具有合适 BGP 网络的位置。.
- CDN: 它对 Odoo 的静态分发和负载降低很有用。.
条目文件中提到的相关服务包括提供 85 多个全球位置、云和 VPS 服务器、防 DDoS 服务器、托管数据库、CDN 以及用于管理模块和插件的 GitLab 和 CI/CD 托管功能。.
运营解决方案(用例)
- 电子商务商店: 图片和静态文件的 CDN、缓存设置和工作节点扩充。.
- POS机销售和面对面销售: 使用低延迟的本地网络或本地服务器,以确保在互联网中断期间的性能。.
- 生产和仓储: 与物联网和队列管理集成,用于生成大量报表。.
- 分析和机器学习: Odoo 适用于轻量级机器学习;对于大型模型,请使用专用 GPU 服务器。.
结论和后续步骤
本指南涵盖了使用 Docker 快速安装和手动安装以实现完全控制、安全提示、性能优化、备份和高可用性解决方案。选择合适的部署位置、硬件和网络配置对 Odoo 的稳定性和性能有着直接的影响。.
如果您需要一个具有多个位置、防 DDoS 保护、托管数据库和技术支持的环境,那么本文档中讨论的服务是合适的,可以帮助您实现安全且可扩展的部署。.









