Odoo安装脚本:
https://github.com/Yenthe666/InstallScript
如果安装完毕,提示启动文件不存在,可先安装脚本中用到的程序:
sudo apt-get install curl libpq-dev -y
sudo apt-get install postgresql-14 -y
sudo apt-get install postgresql postgresql-server-dev-all -y
sudo apt-get install python3 python3-pip -y
sudo apt-get install git python3-cffi build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less libpng-dev libjpeg-dev gdebi -y
sudo apt-get install nodejs npm -y
sudo apt install wkhtmltopdf -y
企业版模块:
https://github.com/BasicOrg/odoo_updated_modules
可将模块解压至某目录,例如/odoo/custom/addons
,然后将其加入到配置文件/etc/odoo/odoo.conf
的addons_path
中:
addons_path = /usr/lib/python3/dist-packages/odoo/addons,/odoo/custom/addons
Odoo 16.0
报错:
1. 测试中,会计模块安装后,访问会计模块时出错,提示:
OwlError: Missing template: "AccountKanbanUploaderButton"
解决办法:
- 删除Odoo社区版自带的开票模块(备份至其它地方),将Odoo企业版的开票模块复制至社区版,即删除
/usr/lib/python3/dist-packages/odoo/addons/
下的account
文件夹,将解压得到的企业版模块中的account
文件夹拷贝至/usr/lib/python3/dist-packages/odoo/addons/
下。若只删除Odoo社区版自带的开票模块,首次安装会计模块后,访问会计模块正常,但过一会儿再访问就会出错。原因是Odoo在发现社区版开票模块不存在时,会自动下载社区版开票模块。社区版开票模块中没有AccountKanbanUploaderButton的定义。
- 删除odoo数据库,重新访问http://192.168.1.xxx:8069/创建数据库,然后安装会计模块。
问题即可解决。
2. 在执行了上述操作后,安装
费用
提交,验证,结算员工报销
时,提示出错。此时,将备份的Odoo社区版自带的开票模块还原至/usr/lib/python3/dist-packages/odoo/addons/
下即可。
3. 安装
Payroll
Manage your employee payroll records
时,提示出错。暂未找到解决办法。
raise ParseError(msg) from None # Restart with "--log-handler odoo.tools.convert:DEBUG" for complete traceback
odoo.tools.convert.ParseError: while parsing /odoo/odoo_updated_modules-16/hr_payroll/views/hr_payslip_views.xml:4
验证附近视图时出错:
<tree string="Payslips" js_class="hr_payroll_payslip_tree" sample="1" multi_edit="1" __validate__="1">
<field name="currency_id" invisible="1"/>
<field name="number" decoration-bf="1"/>
用于domain of field 'payslip_run_id' ([('company_id', '=', company_id)])的字段'company_id'限于小组base.group_multi_company。
4. 安装
Documents
Document management
后,访问设置时出错,提示:
UncaughtPromiseError
未捕获的承诺 > Missing field string information for the field 'documents_account_settings' from the 'res.config.settings' model
解决办法:
删除Documents模块,问题即可解决。暂未找到安装Documents模块,同时访问设置正常的解决办法。
Odoo 17.0
以下版本测试,会计模块可用:
https://nightly.odoo.com/17.0/nightly/deb/odoo_17.0.20231119_all.deb
https://nightly.odoo.com/17.0/nightly/deb/odoo_17.0.20231226_all.deb
报错:
1. 安装应用 制造 类别下的
产品生命周期管理(PLM)
管理产品、物料清单的工程更改单
时提示发生以下错误,但在安装制造类别下的4个应用之后,可以正常使用。
RPC_ERROR
Odoo Server Error
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/http.py", line 1734, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 133, in retrying
result = func()
File "/usr/lib/python3/dist-packages/odoo/http.py", line 1761, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 1962, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_http.py", line 207, in _dispatch
result = endpoint(**request.params)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 722, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/dataset.py", line 28, in call_button
action = self._call_kw(model, method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/dataset.py", line 20, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 466, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 453, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "<decorator-gen-77>", line 2, in button_immediate_install
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_module.py", line 75, in check_and_log
return method(self, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_module.py", line 459, in button_immediate_install
return self._button_immediate_function(type(self).button_install)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_module.py", line 583, in _button_immediate_function
registry = modules.registry.Registry.new(self._cr.dbname, update_module=True)
File "<decorator-gen-16>", line 2, in new
File "/usr/lib/python3/dist-packages/odoo/tools/func.py", line 87, in locked
return func(inst, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/modules/registry.py", line 113, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 480, in load_modules
processed_modules += load_marked_modules(env, graph,
File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 364, in load_marked_modules
loaded, processed = load_module_graph(
File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 227, in load_module_graph
load_data(env, idref, mode, kind='data', package=package)
File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 71, in load_data
tools.convert_file(env, package.name, filename, idref, mode, noupdate, kind)
File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 627, in convert_file
convert_xml_import(env, module, fp, idref, mode, noupdate)
File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 693, in convert_xml_import
obj.parse(doc.getroot())
File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 613, in parse
self._tag_root(de)
File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 567, in _tag_root
raise ParseError(msg) from None # Restart with "--log-handler odoo.tools.convert:DEBUG" for complete traceback
odoo.tools.convert.ParseError: while parsing /odoo/odoo_updated_modules-17/mrp_workorder/views/stock_picking_type_views.xml:3
解析或验证视图时出错:
上级视图内找不到元素“<xpath expr="//field[@name='show_operations']">”
View error context:
{'file': '/odoo/odoo_updated_modules-17/mrp_workorder/views/stock_picking_type_views.xml',
'line': 2,
'name': 'Operation Types',
'view': ir.ui.view(1720,),
'view.model': 'stock.picking.type',
'view.parent': ir.ui.view(1451,),
'xmlid': 'view_picking_type_form_inherit_mrp_workorder'}
The above server error caused the following client error:
RPC_ERROR: Odoo Server Error
at makeErrorFromResponse (http://192.168.1.225:8069/web/assets/3773ed1/web.assets_web.min.js:2873:163)
at XMLHttpRequest.<anonymous> (http://192.168.1.225:8069/web/assets/3773ed1/web.assets_web.min.js:2877:13)
若安装应用 制造 类别下的
制造
制造单和物料清单
时,提示"上级视图内找不到元素",首先此错误不影响使用,其次,若在新安装odoo后,先安装此制造应用,则不会出现这个错误提示。
2. 安装应用 服务 类别下的
现场服务
安排和跟踪现场作业、时间和材料
时,网页空白,日志提示发生以下错误,并且整个网页入口在登录后为空白。
2023-12-26 16:06:29,577 60503 ERROR odoo odoo.addons.web.controllers.binary: 上级视图内找不到元素“<xpath expr="//t[@t-esc='getFormattedValue(0)']">”
Odoo官方安装文档:
https://www.odoo.com/documentation/16.0/administration/install/packages.html
文件位置:
Odoo默认日志文件位置:
/var/log/odoo/odoo-server.log
Odoo默认配置文件位置:
/etc/odoo/odoo.conf
[options]
admin_passwd = 123456
db_host = localhost
db_port = 5432
db_user = odoo
db_password = 123456
addons_path = /usr/lib/python3/dist-packages/odoo/addons,/odoo/custom/addons
default_productivity_apps = True
注:
"master password"在配置文件中命名为admin_passwd
systemctl start odoo.service
systemctl stop odoo.service
systemctl restart odoo.service
ps -aux | grep odoo
/usr/bin/python3 /usr/bin/odoo --config /etc/odoo/odoo.conf --logfile /var/log/odoo/odoo-server.log
PostgreSQL
登陆数据库:
psql -U postgres
如果提示:
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "postgres"
原因在于psql的连接建立于Unix Socket上默认使用peer authentication,所以必须要用和 数据库用户 相同的 系统用户 进行登录:
sudo -u postgres psql -U postgres
或
su postgres -c "psql -U postgres"
PostgreSQL默认配置文件位置:
sudo -u postgres psql -c "show config_file"
config_file
-----------------------------------------
/etc/postgresql/14/main/postgresql.conf
(1 row)
如果提示锁超时,可在配置文件中去掉以下两行的注释:
#statement_timeout = 0 # in milliseconds, 0 is disabled
#lock_timeout = 0 # in milliseconds, 0 is disabled
测试时可在文件/etc/postgresql/14/main/pg_hba.conf
中将用户认证方法从peer改为trust:
# Database administrative login by Unix domain socket
local all postgres trust
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
还可以将peer authentiction 改为 md5,并给数据库设置密码:
local all all md5
postgres=# ALTER USER odoo WITH PASSWORD '123456';
postgres=# \du
角色列表
角色名称 | 属性 | 成员属于
----------+--------------------------------------------+----------
odoo | 超级用户, 建立角色, 建立 DB | {}
postgres | 超级用户, 建立角色, 建立 DB, 复制, 绕过RLS | {}
postgres=# \l
数据库列表
名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限
-----------+----------+----------+-------------+-------------+-----------------------
odoo | odoo | UTF8 | C | zh_CN.UTF-8 |
postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 行记录)
postgres=# drop database odoo;
如果提示:
错误: 其他用户正在使用数据库 "odoo"
描述: 那里有3个其它会话正在使用数据库.
可用以下语句终止会话:
postgres=# SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'odoo'
AND pid <> pg_backend_pid();
修改postgres登录PostgreSQL的密码:
postgres=# \password postgres
创建用户给与 CREATEROLE / CREATEDB 权限:
CREATE ROLE user_name PASSWORD 'tYPe_YoUr_PaSSwOrD' NOSUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
- NOSUPERUSER - the user being created does not have superuser rights (like the
postgres
user, recommended).
- CREATEDB - the user being created can create databases which it will own.
- CREATEROLE - the user being created can create roles (logins) for objects it owns or has specific access to (like databases it has created).
- INHERIT - the user being created inherits some default options, optional.
- LOGIN - the user being created has the right to log in.
The PG binaries (applications) can also be used. For example, the above SQL is equivalent to running:
sudo -u postgres createuser --createdb --createrole --pwprompt user_name
赋予现有用户 CREATEROLE / CREATEDB 权限:
ALTER USER user_name CREATEDB;
ALTER USER user_name CREATEDB CREATEROLE LOGIN;
Odoo 15.0
报错:
1. 测试中,手动删除数据库odoo后,日志中提示:
failed: FATAL: database "odoo" does not exist
解决办法:
初始化一个新的 Odoo 数据库,使用-d 选项运行 Odoo 服务器:
$~/odoo-dev/odoo/odoo-bin-d testdb
/usr/bin/python3 /usr/bin/odoo --config /etc/odoo/odoo.conf --logfile /var/log/odoo/odoo-server.log -d odoo
这可能需要几分钟来初始化 odoo 数据库,然后服务器就可以监听客户机请求了。
然后在登陆界面,通过管理数据库,先通过psql手动删除数据库odoo,再通过web界面创建 odoo 数据库。