
1. 环境准备与系统更新在Rocky Linux服务器上部署Odoo18社区版之前确保系统环境干净且更新至最新状态至关重要。我遇到过不少因为基础环境问题导致的部署失败案例比如Python版本冲突、缺失系统依赖库等。下面这些操作建议在SSH终端中以root权限执行首先更新系统所有软件包这个步骤经常被新手忽略但能避免很多奇怪的兼容性问题sudo dnf update -y sudo dnf upgrade -y接着安装基础开发工具链这些是后续编译Python和安装依赖的必备组件。有次我跳过了这步结果在安装Python时各种报错sudo dnf groupinstall Development Tools -y sudo dnf install wget git libxslt-devel libzip-devel openldap-devel -y特别提醒要检查SELinux状态很多权限问题都源于此。建议先设置为宽容模式测试sudo setenforce 0 sudo sed -i s/SELINUXenforcing/SELINUXpermissive/g /etc/selinux/config防火墙配置也需要提前处理放行后续要用的8069端口sudo firewall-cmd --add-port8069/tcp --permanent sudo firewall-cmd --reload2. PostgreSQL数据库深度配置Odoo的核心数据都存储在PostgreSQL中数据库配置直接影响系统稳定性。我建议单独为Odoo创建专用数据库实例而不是使用默认配置。先安装PostgreSQL 13版本Odoo18推荐版本sudo dnf module enable postgresql:13 -y sudo dnf install postgresql-server postgresql-contrib -y初始化数据库时建议指定参数这是我经过多次测试后的优化配置sudo postgresql-setup --initdb --encodingUTF8 --localeC --data-checksums关键的postgresql.conf配置项/var/lib/pgsql/data/postgresql.conflisten_addresses * max_connections 200 shared_buffers 4GB work_mem 16MB maintenance_work_mem 256MBpg_hba.conf的认证配置要特别注意安全性和便利性的平衡# TYPE DATABASE USER ADDRESS METHOD host all all 0.0.0.0/0 scram-sha-256 local all all peer创建专用数据库用户时记得设置密码加密方式为scram-sha-256比md5更安全CREATE USER odoo WITH PASSWORD StrongPassword123! CREATEDB; ALTER SYSTEM SET password_encryption scram-sha-256; SELECT pg_reload_conf();3. Python环境精准搭建Python版本选择是Odoo部署中最容易踩坑的环节。经过实测Python 3.10.6与Odoo18兼容性最佳。下面是我总结的可靠安装方法先安装编译依赖sudo dnf install openssl-devel bzip2-devel libffi-devel zlib-devel -y下载并编译Python源码关键要带--enable-optimizations参数wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz tar xvf Python-3.10.6.tgz cd Python-3.10.6 ./configure --enable-optimizations --with-system-ffi --with-ensurepipinstall make -j$(nproc) sudo make altinstall创建虚拟环境时要注意权限管理这是我推荐的目录结构sudo mkdir -p /opt/odoo/{venv,src,logs} sudo chown -R $USER:$USER /opt/odoo python3.10 -m venv /opt/odoo/venv source /opt/odoo/venv/bin/activate安装Odoo依赖时常见问题解决方案pip install wheel # 必须先安装 pip install -r requirements.txt --ignore-installed PyPDF24. Odoo18核心配置优化配置文件是Odoo性能调优的关键下面是我在生产环境中验证过的配置模板/opt/odoo/src/odoo.conf[options] ; 基础配置 admin_passwd SuperSecretAdminPass http_port 8069 longpolling_port 8072 addons_path /opt/odoo/src/addons,/opt/odoo/custom-addons data_dir /opt/odoo/data ; 数据库配置 db_host localhost db_port 5432 db_user odoo db_password StrongPassword123! db_maxconn 64 db_template template0 ; 性能优化 workers 4 limit_memory_hard 2684354560 limit_memory_soft 2147483648 limit_request 8192 limit_time_cpu 600 limit_time_real 1200 max_cron_threads 2 ; 日志配置 logfile /opt/odoo/logs/odoo.log log_level info log_db False log_db_level warning几个关键参数说明workers数量建议设置为(CPU核心数 * 2) 1memory_limit设置不要超过系统可用内存的70%使用template0作为模板数据库可避免编码问题5. 系统服务与进程管理使用systemd管理Odoo服务能确保高可用性这是我的服务文件配置/etc/systemd/system/odoo.service[Unit] DescriptionOdoo18 Enterprise Afterpostgresql.service Requirespostgresql.service [Service] Typesimple Userodoo Groupodoo WorkingDirectory/opt/odoo/src ExecStart/opt/odoo/venv/bin/python3 odoo-bin -c /opt/odoo/src/odoo.conf --limit-time-real1800 Restartalways RestartSec5 KillModeprocess TimeoutSec300 EnvironmentLANGen_US.UTF-8 [Install] WantedBymulti-user.target创建专用系统用户并设置权限sudo useradd -r -m -d /opt/odoo -U -s /bin/bash odoo sudo chown -R odoo:odoo /opt/odoo sudo chmod 755 /opt/odoo日志轮转配置/etc/logrotate.d/odoo/opt/odoo/logs/*.log { daily missingok rotate 30 compress delaycompress notifempty create 640 odoo odoo sharedscripts postrotate systemctl reload odoo /dev/null endscript }6. 安全加固措施部署完成后必须进行安全加固我总结了几项关键措施修改默认端口在odoo.conf中http_port 8818配置Nginx反向代理并启用HTTPSserver { listen 443 ssl; server_name odoo.yourdomain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://127.0.0.1:8818; 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; } location /longpolling { proxy_pass http://127.0.0.1:8072; } }定期备份策略/usr/local/bin/odoo_backup.sh#!/bin/bash BACKUP_DIR/var/backups/odoo DATE$(date %Y%m%d_%H%M%S) # 数据库备份 sudo -u postgres pg_dump -Fc odoo_prod $BACKUP_DIR/odoo_db_$DATE.dump # 文件存储备份 tar czf $BACKUP_DIR/odoo_filestore_$DATE.tar.gz /opt/odoo/data/filestore # 保留最近7天备份 find $BACKUP_DIR -type f -mtime 7 -exec rm {} \;设置定时任务sudo chmod x /usr/local/bin/odoo_backup.sh sudo crontab -e # 添加0 2 * * * /usr/local/bin/odoo_backup.sh7. 性能监控与调优生产环境必须建立监控体系我常用的方案组合安装pg_stat_statements扩展CREATE EXTENSION pg_stat_statements;配置Odoo内置性能分析odoo.conf[options] profiling_enabled True profiling_browser True profiling_directory /opt/odoo/profiling使用Prometheus监控指标pip install prometheus-client在自定义模块中添加from prometheus_client import start_http_server, Gauge odoo_requests Gauge(odoo_http_requests, HTTP requests count) odoo_db_queries Gauge(odoo_db_queries, Database queries count)关键性能指标阈值平均响应时间 500ms数据库查询数/请求 50内存使用率 70%CPU负载 80%8. 常见问题解决方案根据多年运维经验这些是最高频的问题和解决方法问题1数据库连接失败OperationalError: could not connect to server: Connection refused解决方案sudo systemctl restart postgresql sudo -u postgres psql -c SELECT * FROM pg_stat_activity;问题2内存泄漏在odoo.conf中添加limit_memory_hard 1610612736 # 1.5GB limit_memory_soft 1073741824 # 1GB问题3长事务阻塞SELECT pid, usename, query_start, state, query FROM pg_stat_activity WHERE state idle in transaction ORDER BY query_start;问题4模块安装失败# 清除缓存 rm -rf /opt/odoo/data/sessions/* # 重建模块列表 /opt/odoo/venv/bin/python3 odoo-bin -d yourdb -u all --stop-after-init问题5时区配置错误UPDATE res_company SET tz Asia/Shanghai WHERE id 1; UPDATE res_users SET tz Asia/Shanghai WHERE id 1;