尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Odoo 14 从零安装部署全攻略:Ubuntu环境搭建与生产级配置

Odoo 14 从零安装部署全攻略:Ubuntu环境搭建与生产级配置 1. 项目概述为什么选择Odoo 14以及安装前的核心考量如果你正在寻找一款能够整合CRM、销售、库存、财务、生产等几乎所有企业运营环节的开源ERP系统那么Odoo绝对是一个绕不开的名字。而Odoo 14作为其长期支持版本中的一个经典稳定版至今仍在大量生产环境中稳定运行尤其适合那些希望获得成熟、可靠、社区支持丰富的企业或开发者。今天我们不谈那些宏大的概念就从一个最实际、也最容易让新手卡住的起点开始如何从零开始成功安装Odoo 14。这个“安装”过程远不止是点击“下一步”那么简单。它涉及到操作系统选择、Python环境配置、数据库选型、依赖包管理等一系列环环相扣的步骤。一个环节的疏漏就可能导致后续服务无法启动、模块加载失败等令人头疼的问题。网络上关于安装的教程很多但往往要么过于简略要么环境特定难以复现。我将结合自己多次在不同环境Ubuntu, CentOS, 甚至Windows WSL部署Odoo 14的经验为你拆解一个通用、详细、且包含大量避坑指南的安装方案。无论你是IT管理员准备搭建企业测试环境还是开发者需要本地开发环境这篇文章都能给你一个清晰的路线图。2. 环境准备与方案选型为Odoo 14打造稳固的地基在动手敲命令之前花点时间规划你的安装环境能省去后面至少50%的麻烦。Odoo 14本质上是一个基于Python的Web应用因此核心是准备好它的运行时环境。2.1 操作系统选择Ubuntu Server是首选Odoo官方文档和社区最推荐的环境是Ubuntu Linux特别是LTS版本。这里我强烈建议使用Ubuntu 20.04 LTS或Ubuntu 22.04 LTS。原因有三第一系统包管理器apt提供的软件版本与Odoo 14所需的依赖兼容性最好第二社区资源最丰富你遇到的几乎所有问题都能找到解决方案第三长期支持版本提供了稳定的安全更新。如果你必须在Windows下工作不要尝试原生Windows安装那是一条布满荆棘的路。最佳实践是使用WSL2。通过WSL2安装一个Ubuntu发行版你就能在Windows上获得几乎与原生Linux一致的命令行体验和兼容性这是目前Windows下进行Odoo开发或学习的最优解。对于生产环境则毫无疑问应该使用纯净的Linux服务器。2.2 数据库选型PostgreSQL是唯一官方选择Odoo 14仅支持PostgreSQL作为后端数据库。这是一个强制要求而非可选。你需要安装PostgreSQL 10及以上版本。在Ubuntu 20.04上默认仓库提供的是PostgreSQL 12这完全满足要求。我们将使用系统包管理器来安装和配置它。2.3 安装方式抉择源码安装 vs 包安装这是两个主要流派使用系统包安装如apt install odoo优点是极其快捷会自动处理服务、日志和依赖。缺点是安装的版本可能不是最新的14且自定义程度低如安装路径固定不利于开发者修改源码和调试。使用Python虚拟环境进行源码安装这是我们本次采用的方式。优点是灵活性极高可以精准控制Python依赖版本方便切换不同Odoo版本代码完全在掌控之中适合开发和定制。步骤稍多但一劳永逸。对于想要深入学习、二次开发或严格控件的朋友源码安装是必经之路。下面的实操也将围绕此展开。3. 分步实操从零搭建Odoo 14运行环境假设我们在一台全新的Ubuntu 20.04 LTS服务器或WSL2实例上开始操作。请使用一个具有sudo权限的用户。3.1 第一步系统更新与基础工具安装首先确保系统是最新的并安装一些必要的编译工具和基础软件。sudo apt update sudo apt upgrade -y sudo apt install -y git build-essential wget curl libssl-dev libffi-dev libsasl2-dev libldap2-dev libpq-devbuild-essential包含GCC、make等编译工具是编译某些Python依赖所必需的。libpq-devPostgreSQL的开发库用于psycopg2Python连接PostgreSQL的驱动的编译。libsasl2-dev和libldap2-dev如果你未来需要集成LDAP认证这些是必需的。3.2 第二步安装与配置PostgreSQL数据库sudo apt install -y postgresql postgresql-client安装完成后PostgreSQL服务会自动启动。我们需要创建一个专门为Odoo服务的数据库用户。sudo -u postgres psql -c CREATE USER odoo14 WITH CREATEDB SUPERUSER PASSWORD your_strong_password_here;注意请务必将your_strong_password_here替换成一个高强度密码。这里为了方便演示赋予了SUPERUSER权限在生产环境中应根据最小权限原则只授予必要的CREATEDB、CREATEROLE等权限。3.3 第三步安装Python 3.8或3.9及虚拟环境Odoo 14官方支持Python 3.6到3.8。为了更好的兼容性和长期支持我们选择Python 3.8。Ubuntu 20.04默认可能已安装Python 3.8。sudo apt install -y python3.8 python3.8-venv python3.8-dev python3-pip接下来为Odoo项目创建一个独立的目录并在其中建立Python虚拟环境。虚拟环境能将Odoo的依赖与系统Python环境完全隔离。mkdir ~/odoo14 cd ~/odoo14 python3.8 -m venv odoo-venv激活虚拟环境source odoo-venv/bin/activate激活后你的命令行提示符前会出现(odoo-venv)字样表示后续的所有pip安装都只影响这个独立环境。3.4 第四步获取Odoo 14源码并安装Python依赖我们使用Git来克隆Odoo的源码。这里克隆的是Odoo 14.0的分支。git clone https://github.com/odoo/odoo.git --depth 1 --branch 14.0 ~/odoo14/src--depth 1只克隆最近一次提交节省时间和空间。--branch 14.0指定克隆14.0分支。现在进入源码目录使用pip安装依赖。Odoo项目提供了一个requirements.txt文件来声明所有依赖。cd ~/odoo14/src pip install --upgrade pip wheel setuptools pip install -r requirements.txt实操心得安装requirements.txt的过程可能会是第一个“坑”。某些依赖如psycopg2、Pillow需要编译如果之前系统开发库没装全比如漏了libpq-dev这里会报错。如果遇到编译错误请根据错误信息回溯安装对应的-dev包。另外网络问题可能导致某些包下载超时可以考虑配置国内PyPI镜像源。3.5 第五步安装并配置WkhtmltopdfOdoo使用Wkhtmltopdf将HTML页面转换为PDF报告如发票、订单。这是一个关键的第三方组件必须单独安装。# 下载官方推荐的特定版本与Odoo 14兼容性最好 wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb # 安装依赖 sudo apt install -y xfonts-base xfonts-75dpi # 安装下载的deb包 sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb # 修复可能的依赖问题 sudo apt --fix-broken install -y # 创建软链接确保Odoo能找到它 sudo ln -s /usr/local/bin/wkhtmltopdf /usr/bin/wkhtmltopdf sudo ln -s /usr/local/bin/wkhtmltoimage /usr/bin/wkhtmltoimage重要提示Wkhtmltopdf的版本非常关键。非官方构建或不兼容的版本会导致PDF生成乱码、空白或崩溃。上述0.12.6-1版本是经过社区广泛验证与Odoo 14兼容的稳定版本。3.6 第六步创建Odoo配置文件Odoo的运行依赖于一个配置文件。我们从模板创建一个。cd ~/odoo14 cp ~/odoo14/src/debian/odoo.conf ./odoo14.conf nano odoo14.conf下面是一个最小化但可用的配置文件示例你需要根据实际情况修改[options] ; 这是管理主密码用于访问数据库管理界面务必设置一个强密码并牢记 admin_passwd your_admin_master_password db_host localhost db_port 5432 db_user odoo14 db_password your_strong_password_here addons_path /home/your_username/odoo14/src/addons ; 如果你有自定义模块可以添加例如/home/your_username/odoo14/custom_addons ; addons_path /home/your_username/odoo14/src/addons,/home/your_username/odoo14/custom_addons data_dir /home/your_username/odoo14/data logfile /home/your_username/odoo14/odoo.logadmin_passwd超级管理员密码用于创建、删除、备份数据库。db_*连接PostgreSQL的凭据与第二步创建的用户信息一致。addons_pathOdoo模块的查找路径。至少需要包含源码中的addons目录。data_dirOdoo存放会话、附件等数据的目录。logfile指定日志文件路径方便排查问题。3.7 第七步首次运行Odoo并创建数据库确保你的虚拟环境仍然处于激活状态(odoo-venv)提示符。在~/odoo14目录下使用配置文件启动Odoopython ~/odoo14/src/odoo-bin -c odoo14.conf如果一切顺利你将看到大量的日志输出最后几行应该是类似这样的信息... INFO ... odoo.service.server: HTTP service (werkzeug) running on 0.0.0.0:8069这表明Odoo服务已经在8069端口启动。现在打开你的浏览器访问http://你的服务器IP:8069。第一次访问时你会看到Odoo的数据库创建页面。因为我们在配置文件中设置了db_user和db_password所以页面会自动填充这些信息。在“Master Password”字段输入配置文件中设置的admin_passwd。在“Database Name”字段输入你想创建的新数据库名称例如mycompany。勾选“Demo data”如果你希望安装演示数据对于学习和测试非常有用。点击“Create database”按钮。系统将开始初始化数据库安装基础模块这个过程可能需要几分钟。完成后会自动跳转到Odoo的实例创建页面让你设置公司名称、时区、语言并创建第一个管理员用户。至此Odoo 14的核心安装已经完成。4. 生产环境部署优化与系统服务配置上面的步骤让我们在开发模式下运行起了Odoo。但对于一个需要持续运行的生产环境我们需要将其配置为系统服务并考虑性能优化。4.1 将Odoo配置为Systemd服务这能保证Odoo在服务器启动时自动运行并在崩溃时尝试重启。创建一个服务文件sudo nano /etc/systemd/system/odoo14.service写入以下内容请根据你的实际路径修改ExecStart、User、Group和路径[Unit] DescriptionOdoo 14 Service Requirespostgresql.service Afternetwork.target postgresql.service [Service] Typesimple Useryour_username Groupyour_username SyslogIdentifierodoo14 WorkingDirectory/home/your_username/odoo14 ExecStart/home/your_username/odoo14/odoo-venv/bin/python /home/your_username/odoo14/src/odoo-bin -c /home/your_username/odoo14/odoo14.conf --limit-time-real 99999 Restartalways RestartSec5 StandardOutputjournal [Install] WantedBymulti-user.targetUser和Group建议创建一个专门的系统用户如odoo来运行此服务而不是直接用你的个人用户更安全。--limit-time-real 99999防止长时间请求被误杀。然后启用并启动服务sudo systemctl daemon-reload sudo systemctl enable odoo14.service sudo systemctl start odoo14.service # 检查状态 sudo systemctl status odoo14.service4.2 性能优化配置建议在配置文件odoo14.conf中可以添加以下参数来优化性能[options] ... ; 工作进程数通常设置为(CPU核心数 * 2) 1对于小规模应用2-4个即可 workers 4 ; 限制每个工作进程处理的最大请求数预防内存泄漏1000-2000是常见值 limit-request 2000 ; 每个工作进程的最大内存限制MB超出会被回收重启 limit-memory-soft 1073741824 ; 1GB limit-memory-hard 2147483648 ; 2GB ; 启用HTTP长连接提升性能 proxy_mode True ; 如果你在前面有Nginx等反向代理需要设置代理IP x-forwarded-for True4.3 配置反向代理Nginx和SSL直接暴露8069端口是不安全的。应该使用Nginx作为反向代理并配置SSL证书如Let‘s Encrypt的免费证书以实现HTTPS。一个简单的Nginx站点配置示例 (/etc/nginx/sites-available/odoo)upstream odoo { server 127.0.0.1:8069; } upstream odoochat { server 127.0.0.1:8072; } server { listen 80; server_name your_domain.com; # 重定向HTTP到HTTPS return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name your_domain.com; ssl_certificate /path/to/your/fullchain.pem; ssl_certificate_key /path/to/your/privkey.pem; # 此处应包含强化的SSL配置... # 代理Odoo长轮询请求用于即时消息 location /longpolling { proxy_pass http://odoochat; 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; } # 代理所有其他请求到Odoo应用 location / { proxy_pass http://odoo; 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; proxy_redirect off; } # 静态文件缓存 location ~* /web/static/ { proxy_cache_valid 200 60m; proxy_buffering on; expires 864000; proxy_pass http://odoo; } }配置好后启用站点并重启Nginx。5. 安装后常见问题排查与解决实录即使按照步骤操作也可能会遇到问题。这里记录几个我踩过的坑和解决方法。5.1 启动时报错ModuleNotFoundError: No module named ‘...’问题运行odoo-bin时提示缺少某个Python模块例如psycopg2、Pillow等。排查这几乎总是因为虚拟环境中的依赖没有安装完整或者虚拟环境未激活。解决确认已激活虚拟环境 (source ~/odoo14/odoo-venv/bin/activate)。进入源码目录重新安装依赖pip install -r requirements.txt。注意观察是否有编译错误。对于特定模块可以尝试单独安装pip install 模块名。5.2 访问网页时提示Internal Server Error或 白屏问题浏览器显示500错误或空白页但Odoo服务日志没有明显报错。排查首先查看Odoo日志文件~/odoo14/odoo.log通常错误信息会记录在这里。常见原因有数据库连接失败检查配置文件中的db_host,db_port,db_user,db_password是否正确。可以手动用psql命令测试连接。权限问题检查data_dir指向的目录运行Odoo的用户是否有读写权限。Wkhtmltopdf问题如果错误发生在打印或生成PDF时很可能是Wkhtmltopdf的问题。运行wkhtmltopdf --version检查是否安装成功。解决根据日志错误信息对症下药。对于权限问题使用chown和chmod修正。对于Wkhtmltopdf确保安装的是指定版本并正确链接。5.3 创建数据库时非常缓慢或卡住问题在网页点击“Create database”后进度条很久不动。排查这通常是安装基础模块特别是web模块时在下载或处理静态资源、图像字体时遇到了网络或性能瓶颈。解决耐心等待首次创建带演示数据的数据库在低配服务器上可能需要10-30分钟。检查网络确保服务器能正常访问互联网。查看日志通过tail -f ~/odoo14/odoo.log实时跟踪安装进程看卡在哪个模块。跳过演示数据如果只是为了搭建环境可以不勾选“Demo data”速度会快很多。5.4 系统服务启动失败问题sudo systemctl status odoo14.service显示failed或inactive。排查查看详细日志sudo journalctl -u odoo14.service -f或sudo journalctl -u odoo14.service -n 50。常见原因服务文件中ExecStart、WorkingDirectory路径错误。指定的运行用户User没有相关目录或文件的权限。配置文件路径错误或格式有误。Python虚拟环境路径不对。解决根据journalctl输出的错误信息修正服务文件或权限配置。一个快速测试的方法是手动切换到指定用户在指定工作目录用命令行的方式执行ExecStart的命令看是否能成功启动。5.5 如何更新Odoo源码和模块场景Odoo官方修复了bug或发布了安全更新你需要更新。操作停止Odoo服务sudo systemctl stop odoo14.service。激活虚拟环境进入源码目录cd ~/odoo14/src。拉取最新代码git pull origin 14.0。更新Python依赖如果有变动pip install -r requirements.txt --upgrade。重启Odoo服务sudo systemctl start odoo14.service。重要提醒在生产环境更新前务必先备份数据库可以使用Odoo的网页管理界面备份或使用pg_dump命令进行物理备份。
返回列表