# Odoo 19.0 部署流程文档
## 1. 部署概述
Odoo 19.0 支持多种部署方式,包括单服务器部署、多服务器部署、容器化部署和云部署。本文档详细介绍基于Ubuntu 24.04的单服务器部署流程,包括环境准备、依赖安装、Odoo安装、数据库配置、反向代理配置和启动运行等步骤。
## 2. 环境准备
### 2.1 操作系统要求
| 操作系统 | 版本 | 架构 |
|----------|------|------|
| Ubuntu | 24.04 LTS | x86_64 |
| Debian | 12 | x86_64 |
| CentOS | 9 | x86_64 |
| RHEL | 9 | x86_64 |
### 2.2 硬件要求
| 部署规模 | CPU | 内存 | 磁盘 |
|----------|-----|------|------|
| 小型(<50用户) | 4核 | 8GB | 200GB SSD |
| 中型(50-200用户) | 8核 | 16GB | 500GB SSD |
| 大型(>200用户) | 16核+ | 32GB+ | 1TB+ SSD |
### 2.3 网络要求
- 开放端口:8069(Odoo默认端口)、80/443(HTTP/HTTPS)
- 数据库端口:5432(PostgreSQL)
- 确保服务器可以访问互联网,用于安装依赖和更新
## 3. 依赖安装
### 3.1 系统更新
```bash
sudo apt update && sudo apt upgrade -y
```
### 3.2 安装必要的系统依赖
```bash
sudo apt install -y \n git \n python3-pip \n python3-venv \n python3-dev \n libpq-dev \n libldap2-dev \n libsasl2-dev \n libxml2-dev \n libxslt1-dev \n zlib1g-dev \n libjpeg-dev \n libpng-dev \n libfreetype6-dev \n libharfbuzz-dev \n libfontconfig1-dev \n build-essential \n libssl-dev \n libffi-dev \n libbz2-dev \n libreadline-dev \n libsqlite3-dev \n wget \n curl \n llvm \n libncurses5-dev \n libncursesw5-dev \n xz-utils \n tk-dev
```
### 3.3 安装PostgreSQL数据库
```bash
# 安装PostgreSQL
sudo apt install -y postgresql postgresql-contrib
# 启动并启用PostgreSQL服务
sudo systemctl start postgresql
sudo systemctl enable postgresql
# 检查PostgreSQL状态
sudo systemctl status postgresql
```
### 3.4 配置PostgreSQL用户和数据库
```bash
# 切换到postgres用户
sudo -u postgres psql
# 创建Odoo用户(密码设置为odoo123,可根据需要修改)
CREATE USER odoo WITH PASSWORD ‘odoo123’;
# 授予用户创建数据库的权限
ALTER USER odoo CREATEDB;
# 退出PostgreSQL\q
```
## 4. Odoo安装
### 4.1 创建Odoo用户
```bash
# 创建odoo用户
sudo useradd -m -d /opt/odoo -U -r -s /bin/bash odoo
# 设置odoo用户密码
sudo passwd odoo
```
### 4.2 克隆Odoo源码
```bash
# 切换到odoo用户
sudo su - odoo
# 克隆Odoo 19.0源码
git clone https://github.com/odoo/odoo.git -b 19.0 --depth 1
# 退出odoo用户
exit
```
### 4.3 创建虚拟环境并安装依赖
```bash
# 切换到odoo用户
sudo su - odoo
# 进入Odoo目录
cd /opt/odoo/odoo
# 创建虚拟环境
python3 -m venv venv
# 激活虚拟环境
source venv/bin/activate
# 升级pip
pip install --upgrade pip
# 安装依赖(使用国内镜像加速)
pip install -i Simple Index -r requirements.txt
# 退出虚拟环境
deactivate
# 退出odoo用户
exit
```
## 5. 配置Odoo
### 5.1 创建配置文件
```bash
# 创建配置文件目录
sudo mkdir -p /etc/odoo
# 创建日志目录
sudo mkdir -p /var/log/odoo
# 创建自定义模块目录
sudo mkdir -p /opt/odoo/custom_addons
# 设置目录权限
sudo chown -R odoo:odoo /etc/odoo
sudo chown -R odoo:odoo /var/log/odoo
sudo chown -R odoo:odoo /opt/odoo/custom_addons
```
### 5.2 编写配置文件
```bash
sudo nano /etc/odoo/odoo.conf
```
在配置文件中添加以下内容:
```ini
[options]
; 基本配置
admin_passwd = admin123 ; 管理员密码,首次登录使用
db_host = False ; 数据库主机,False表示使用默认socket连接
db_port = False ; 数据库端口,False表示使用默认端口5432
db_user = odoo ; 数据库用户名
db_password = odoo123 ; 数据库密码
; 模块配置
addons_path = /opt/odoo/odoo/addons,/opt/odoo/custom_addons ; 模块路径
; HTTP配置
http_port = 8069 ; HTTP端口
proxy_mode = True ; 启用代理模式
; 日志配置
logfile = /var/log/odoo/odoo.log ; 日志文件路径
logrotate = True ; 启用日志轮转
; 其他配置
max_cron_threads = 2 ; 定时任务线程数
dbfilter = ^odoo_.*$ ; 数据库过滤规则
```
### 5.3 设置配置文件权限
```bash
sudo chown odoo:odoo /etc/odoo/odoo.conf
sudo chmod 640 /etc/odoo/odoo.conf
```
## 6. 创建系统服务
### 6.1 编写服务文件
```bash
sudo nano /etc/systemd/system/odoo.service
```
在服务文件中添加以下内容:
```ini
[Unit]
Description=Odoo 19.0
Requires=postgresql.service
After=network.target postgresql.service
[Service]
Type=simple
SyslogIdentifier=odoo
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo/venv/bin/python3 /opt/odoo/odoo/odoo-bin -c /etc/odoo/odoo.conf
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
```
### 6.2 启用并启动服务
```bash
# 重新加载系统服务
sudo systemctl daemon-reload
# 启用Odoo服务
sudo systemctl enable odoo
# 启动Odoo服务
sudo systemctl start odoo
# 检查Odoo服务状态
sudo systemctl status odoo
```
## 7. 配置Nginx反向代理
### 7.1 安装Nginx
```bash
sudo apt install -y nginx
# 启动并启用Nginx服务
sudo systemctl start nginx
sudo systemctl enable nginx
```
### 7.2 配置Nginx虚拟主机
```bash
sudo nano /etc/nginx/sites-available/odoo
```
在配置文件中添加以下内容(替换example.com为你的域名):
```nginx
upstream odoo {
server 127.0.0.1:8069;
}
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
\# SSL配置(替换为你的证书路径)
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
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_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
\# 日志配置
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
\# 代理配置
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;
\# 静态文件缓存
location \~\* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo;
}
\# 长连接支持
location /longpolling {
proxy_pass http://127.0.0.1:8072;
}
\# 主请求
location / {
proxy_redirect off;
proxy_pass http://odoo;
}
\# 健康检查
location /health {
access_log off;
return 200 "OK";
add_header Content-Type text/plain;
}
}
```
### 7.3 启用虚拟主机并测试配置
```bash
# 启用虚拟主机
sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/
# 测试Nginx配置
sudo nginx -t
# 重新加载Nginx配置
sudo systemctl reload nginx
```
## 8. 安装SSL证书(可选)
### 8.1 安装Certbot
```bash
sudo apt install -y certbot python3-certbot-nginx
```
### 8.2 获取SSL证书
```bash
sudo certbot --nginx -d example.com -d www.example.com
```
按照提示完成证书安装。Certbot会自动更新Nginx配置,启用HTTPS。
### 8.3 配置证书自动续期
```bash
# 测试自动续期
sudo certbot renew --dry-run
# 启用定时器
sudo systemctl enable certbot.timer
sudo systemctl start certbot.timer
```
## 9. Odoo初始化配置
### 9.1 首次访问Odoo
1. 打开浏览器,访问你的域名(如https://example.com)
2. 输入数据库名称(如odoo19_db)
3. 输入邮箱和密码(用于创建管理员用户)
4. 选择要安装的应用模块
5. 点击"创建数据库"按钮
### 9.2 配置数据库
数据库创建完成后,系统会自动登录到Odoo后台。你可以:
1. 配置公司信息:设置->公司->公司信息
2. 配置用户和权限:设置->用户和公司->用户
3. 安装额外模块:设置->应用
4. 配置系统参数:设置->技术->系统参数
## 10. 维护和监控
### 10.1 日志管理
```bash
# 查看Odoo日志
tail -f /var/log/odoo/odoo.log
# 查看Nginx日志
tail -f /var/log/nginx/odoo.access.log
tail -f /var/log/nginx/odoo.error.log
```
### 10.2 数据库备份
#### 手动备份
```bash
# 切换到odoo用户
sudo su - odoo
# 备份数据库(替换odoo19_db为你的数据库名)
python3 /opt/odoo/odoo/odoo-bin -c /etc/odoo/odoo.conf -d odoo19_db --backup-path=/opt/odoo/backups
# 退出odoo用户
exit
```
#### 自动备份
创建备份脚本:
```bash
sudo nano /opt/odoo/backup.sh
```
添加以下内容:
```bash
#!/bin/bash
# 配置
ODOO_BIN=“/opt/odoo/odoo/odoo-bin”
ODOO_CONF=“/etc/odoo/odoo.conf”
BACKUP_DIR=“/opt/odoo/backups”
DB_NAME=“odoo19_db”
RETENTION_DAYS=7
# 创建备份目录
mkdir -p $BACKUP_DIR
# 执行备份
sudo -u odoo python3 $ODOO_BIN -c $ODOO_CONF -d $DB_NAME --backup-path=$BACKUP_DIR
# 删除过期备份
find $BACKUP_DIR -name “*.zip” -mtime +$RETENTION_DAYS -delete
```
设置脚本权限并添加到定时任务:
```bash
# 设置脚本权限
sudo chmod +x /opt/odoo/backup.sh
# 添加到crontab(每天凌晨2点执行备份)
sudo crontab -e
```
在crontab中添加:
```
0 2 * * * /opt/odoo/backup.sh
```
### 10.3 系统监控
安装并配置监控工具:
```bash
# 安装htop(进程监控)
sudo apt install -y htop
# 安装glances(系统监控)
sudo apt install -y glances
# 安装prometheus和grafana(可选,用于高级监控)
# 参考: First steps with Prometheus | Prometheus
# 参考: Install Grafana on Debian or Ubuntu | Grafana documentation
```
### 10.4 Odoo升级
```bash
# 切换到odoo用户
sudo su - odoo
# 进入Odoo目录
cd /opt/odoo/odoo
# 拉取最新代码
git pull origin 19.0
# 激活虚拟环境
source venv/bin/activate
# 更新依赖
pip install -i Simple Index -r requirements.txt
# 退出虚拟环境
deactivate
# 退出odoo用户
exit
# 重启Odoo服务
sudo systemctl restart odoo
```
## 11. 常见问题和解决方案
### 11.1 Odoo服务无法启动
**问题**:`sudo systemctl status odoo`显示服务启动失败
**解决方案**:
1. 查看日志文件:`tail -f /var/log/odoo/odoo.log`
2. 检查配置文件:`sudo nginx -t`
3. 检查数据库连接:确保PostgreSQL服务正常运行
4. 检查端口占用:`sudo lsof -i :8069`
### 11.2 数据库连接失败
**问题**:Odoo无法连接到PostgreSQL数据库
**解决方案**:
1. 检查PostgreSQL服务状态:`sudo systemctl status postgresql`
2. 检查数据库用户和密码:确保odoo.conf中的db_user和db_password正确
3. 检查数据库权限:确保odoo用户有创建数据库的权限
4. 检查PostgreSQL日志:`tail -f /var/log/postgresql/postgresql-16-main.log`
### 11.3 性能问题
**问题**:Odoo运行缓慢
**解决方案**:
1. 优化PostgreSQL配置:调整shared_buffers、work_mem等参数
2. 启用缓存:在odoo.conf中配置缓存参数
3. 优化Nginx配置:启用gzip压缩、配置静态文件缓存
4. 增加系统资源:根据负载情况增加CPU、内存或磁盘
5. 优化Odoo配置:调整max_cron_threads、workers等参数
### 11.4 模块安装失败
**问题**:安装模块时出现错误
**解决方案**:
1. 查看日志文件:`tail -f /var/log/odoo/odoo.log`
2. 检查模块依赖:确保所有依赖模块已安装
3. 检查模块兼容性:确保模块与Odoo 19.0兼容
4. 检查权限:确保odoo用户有足够的权限
## 12. 安全加固
### 12.1 系统安全
1. 启用防火墙:`sudo ufw enable`
2. 限制SSH访问:修改/etc/ssh/sshd_config,禁用root登录
3. 安装fail2ban:防止暴力破解
4. 定期更新系统:`sudo apt update && sudo apt upgrade -y`
5. 配置SELinux或AppArmor(可选)
### 12.2 Odoo安全
1. 更改默认管理员密码:登录Odoo后台,进入设置->用户和公司->用户,修改管理员密码
2. 启用两步验证:在用户设置中启用两步验证
3. 配置IP白名单:在odoo.conf中配置allow_ip参数
4. 限制数据库访问:修改PostgreSQL配置,只允许本地访问
5. 定期备份数据库:确保数据安全
## 13. 总结
Odoo 19.0的部署流程包括环境准备、依赖安装、Odoo安装、数据库配置、反向代理配置和启动运行等步骤。通过遵循本文档的部署流程,可以快速搭建一个稳定、安全、高效的Odoo系统。
在实际部署过程中,应根据具体需求和环境进行适当调整,如硬件配置、网络设置、安全策略等。同时,定期进行系统维护和监控,确保Odoo系统的稳定运行。