将 Odoo 部署到阿里云是一个常见需求,尤其适用于企业级应用。以下是详细的部署步骤,涵盖从阿里云服务器购买到 Odoo 成功运行的全过程。
一、准备工作
1. 购买阿里云 ECS 实例
- 登录 阿里云官网
- 进入 ECS 云服务器,创建实例:
- 地域:选择靠近用户的位置(如华北 1、华东 1)
- 实例规格:建议选择至少 2核4G(如
ecs.c6.large) - 镜像:选择 Ubuntu 20.04/22.04 64位(推荐)
- 系统盘:建议 50GB 以上
- 安全组:开放以下端口:
22(SSH)80(HTTP)443(HTTPS)8069(Odoo 默认端口)
✅ 记得设置密码或上传 SSH 密钥。
二、连接服务器并更新系统
# 使用 SSH 登录
ssh root@你的公网IP
# 更新系统
sudo apt update && sudo apt upgrade -y
三、安装依赖环境
1. 安装 PostgreSQL(Odoo 数据库)
sudo apt install postgresql postgresql-contrib -y
sudo systemctl enable postgresql
sudo systemctl start postgresql
创建 Odoo 专用数据库用户:
sudo -u postgres createuser --createdb --pwprompt odoo
# 输入密码,例如:odoo123
2. 安装 Python 及相关依赖
sudo apt install python3 python3-pip python3-dev python3-venv git libpq-dev build-essential -y
3. 安装 Node.js(用于 Less 编译)
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs
npm install -g less
四、下载并安装 Odoo
方法一:从 GitHub 安装社区版(推荐)
# 创建 odoo 用户(可选,增强安全)
sudo useradd -m -d /opt/odoo -U -s /bin/bash odoo
# 切换到 odoo 用户
sudo su - odoo
# 克隆 Odoo 源码(以 16.0 为例)
git clone https://github.com/odoo/odoo.git --branch 16.0 --single-branch
# 创建虚拟环境
python3 -m venv odoo-venv
source odoo-venv/bin/activate
# 安装 Python 依赖
pip install -r odoo/requirements.txt
⚠️ 注意:某些版本依赖可能出错,可尝试升级 pip 或忽略部分包。
五、配置 Odoo
创建配置文件
sudo su - odoo
nano ~/odoo.conf
内容示例:
[options]
; 基础配置
addons_path = /opt/odoo/odoo/addons,/opt/odoo/custom-addons
data_dir = /opt/odoo/.local/share/Odoo
; 网络配置
http_port = 8069
proxy_mode = True
; 数据库配置
db_host = False
db_port = False
db_user = odoo
db_password = odoo123
; 日志
logfile = /opt/odoo/odoo-server.log
log_level = info
✅ 可根据需要添加
admin_passwd设置主密码。
六、启动 Odoo 测试
cd /opt/odoo
source odoo-venv/bin/activate
python3 odoo/odoo-bin -c odoo.conf
访问:http://<你的公网IP>:8069
应看到 Odoo 数据库初始化页面。
七、配置系统服务(开机自启)
sudo nano /etc/systemd/system/odoo.service
内容:
[Unit]
Description=Odoo 16
After=postgresql.service
Requires=postgresql.service
[Service]
Type=simple
User=odoo
ExecStart=/opt/odoo/odoo-venv/bin/python3 /opt/odoo/odoo/odoo-bin -c /opt/odoo/odoo.conf
KillSignal=SIGQUIT
TimeoutStopSec=300
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reexec
sudo systemctl enable odoo
sudo systemctl start odoo
sudo systemctl status odoo
八、配置域名与 HTTPS(可选但推荐)
1. 购买并解析域名
- 在阿里云购买域名,并解析到 ECS 公网 IP。
2. 使用 Nginx 反向X_X + SSL
sudo apt install nginx certbot python3-certbot-nginx -y
配置 Nginx:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8069;
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 $scheme;
}
}
申请 SSL 证书:
sudo certbot --nginx -d yourdomain.com
Certbot 会自动更新 Nginx 配置为 HTTPS。
九、安全建议
- 关闭 root 登录,使用普通用户 + sudo
- 使用 SSH 密钥登录,禁用密码
- 防火墙(UFW)仅开放必要端口
- 定期备份数据库和文件存储(
/opt/odoo/.local/share/Odoo)
十、常见问题
| 问题 | 解决方案 |
|---|---|
| 无法访问 8069 端口 | 检查阿里云安全组是否开放 |
| 数据库连接失败 | 检查 PostgreSQL 是否运行,用户权限 |
| 页面空白或报错 | 查看日志 tail -f /opt/odoo/odoo-server.log |
| 安装依赖失败 | 升级 pip pip install --upgrade pip |
总结
通过以上步骤,你已经成功将 Odoo 部署到阿里云 ECS 实例,并可通过域名安全访问。后续可考虑:
- 使用 Docker 部署(更便捷)
- 配置自动备份脚本
- 使用 RDS 代替本地 PostgreSQL(高可用)
如果你有特定版本(如 Odoo 15、17)或想使用 Docker 部署,也可以告诉我,我可以提供更具体的方案。
云服务器