# 我们使用应用市场上的模块的时候,经常会碰到模块只兼容特定版本,要将模块兼容到自己版本来的时候,就需要下载它原兼容odoo的版本运行。
# 这里的-b后面加的11.0就是它的版本。在git中也就是分支
git clone -b 11.0 --single-branch --depth 1 https://github.com/odoo/odoo.git
# 生成配置文件
./odoo-bin --save --config myodoo.cfg --stop-after-init
# 启用协程处理bus.bus(也就是Discuss聊天)# 注意:evented必须跟在后面。启动后longpolling_port端口独立开来
./odoo-bin evented -c myodoo.cfg
# 一些配置内容
db_host # 数据库服务器地址
db_port # 数据库端口
db_name # 连接哪个数据库名
db_user # 数据库用户登录名
db_password # 登录密码
http_port # 浏览器访问时用的端口
log_level = debug # 设置logging模块的输出最低级别,默认是info
logfile = odoo.log # 不在控制台输出日志信息,会输出到该文件中去
workers # 多进程模式处理用户请求
proxy_mode # 是否开启代理模式,如果是docker模式负载均衡的话建议不用开启代理莫斯,详情需要往后翻阅
longpolling_port # 指定Discuss聊天室端口
# 顺带设置一下odoo中的时区
# 文件:odoo/odoo/__init__.py
# 修改:os.environ['TZ'] = 'UTC'
os.environ['TZ'] = 'Asia/Shanghai'
# 快速创建模块
./odoo-bin scaffold my_module
# proxy_mode 开启代理模式的用处:
# 1.odoo业务处理和chat聊天完全独立
# 2.配置中http_port(8069)为业务处理端口,longpolling_port(8072)为chat聊天端口
# 3.因为两个端口分开的,所以你做nginx(或者其他代理)的时候需要对8072端口进行代理
location /longpolling/ {
proxy_pass http://127.0.0.1:8072;
}
# 4.因为在不同端口,所以如果你对session进行了处理的话(session转储在redis中),你需要设置两个端口共用一个session,不然你的程序就会一直提示过期
# 该文件是处理服务启动的时候
odoo/odoo/service/server.py
# 里边有CommonServer,是命令处理服务,服务默认端口取的是self.port = config['http_port']
# 还有其他服务继承它,然后修改了apprun和端口:
# class ThreadedServer(CommonServer):
# class PreforkServer(CommonServer):
# class GeventServer(CommonServer): # 这就是8072端口的服务
# session in redis处理
http.Root.session_store = session_store # 返回缓存处理类。
# 也就是继承from werkzeug.contrib.sessions import SessionStore
http.session_gc = session_gc # 收尾处理。这里给一个空函数就行,因为redis自带过期删除功能
# 以上两个步骤只是处理了config['http_port'](8069)的端口
# 要处理GeventServer最直接办法就是直接修改Root类的session_store方法