Odoo14开发者指南第一章-安装Odoo开发环境【翻译】
有几种方法可以建立Odoo开发环境。 本章提出其中一个。您肯定会在网络上找到许多其他教程,这些教程介绍了其他方法。请记住,本章是关于与生产环境有不同要求的开发环境。
如果您不熟悉Odoo开发,则必须了解Odoo生态系统的某些方面。第一个Recipe将为您简要介绍Odoo生态系统,然后我们将继续进行Odoo的安装以进行开发。
在本章中,我们将介绍以下Recipe:
- 了解Odoo生态系统
- 从源代码轻松安装Odoo
- 管理Odoo服务器数据库
- 将实例配置存储在文件中
- 激活Odoo开发者工具和更新附加模块列表
了解Odoo生态系统
Odoo为开发人员提供了现成的模块化。 它强大的框架可帮助开发人员快速构建项目。 在开始成为一名成功的Odoo开发人员之前,您应该熟悉Odoo生态系统中的各种角色。
Odoo版本
Odoo带有两个不同的版本。第一个是开源的社区版,第二个是具有许可费的企业版。与其他软件供应商不同,Odoo企业版只是一堆额外的应用程序,它们为社区版添加了额外的功能或新的应用程序。基本上,企业版在社区版之上运行。社区版已获得Lesser General Public License v3.0 (LGPLv3) 许可证,并随附所有基本的企业资源计划(ERP)应用程序,例如销售,客户关系管理(CRM),发票,购买和网站构建器 。另外,企业版附带Odoo企业版许可证,这是专有许可证。Odoo企业版具有许多高级功能,例如完整记帐,工作室,互联网协议语音(VoIP),移动响应设计,电子签名,营销自动化,交付和银行集成,IoT等。企业版还为您提供了无限的错误修复支持。下图显示了企业版取决于社区版,这就是为什么您需要后者才能使用前者的原因:
您可以在这里看到两个版本的完整比较:https://www.odoo.com/page/editions.
Odoo拥有最多的社区开发人员,这就是为什么您会在应用商店中找到大量第三方应用(模块)的原因。一些免费应用程序使用**Affero General Public License version 3 (AGPLv3)**。如果您的应用程序对此类应用程序有依赖性,则不能在该应用程序上使用专有许可证。具有Odoo专有许可证的应用程序只能在具有LGPL或其他专有许可证的模块上开发。
Git存储库
Odoo的整个代码库都托管在GitHub上。您可以在此处发布稳定版本的错误/问题。您还可以通过提交拉取请求(PR)提出新功能。Odoo中有几个存储库。有关更多信息,请参见下表:
Repositories | 仓库用途 |
---|---|
https://github.com/odoo/odoo | Odoo社区版,对公众开放。 |
https://github.com/odoo/enterprise | Odoo企业版,仅对Odoo的合作伙伴开放。 |
https://github.com/odoo-dev/odoo | 开发中的仓库,对公众开放。(已废弃) |
每年,Odoo都会发布一个主要(长期支持(LTS))版本和一些次要版本。 次版本主要用于Odoo的在线SaaS服务,这意味着Odoo SaaS用户可以尽早使用这些功能。在GitHub上,主要版本分支的名称为14.0、13.0和12.0,次要版本分支的名称为saas-14.1和saas-14.2。这些次要版本主要用于Odoo的SaaS平台。master分支正在开发中并且不稳定,因此建议不要将此分支用于生产中,因为它可能会破坏数据库。
Runbot
Runbot是Odoo的自动化测试环境。每当Odoo的GitHub分支中有新的提交时,Runbot都会提取这些最新更改并为最后四个提交创建构建测试环境。在这里,您可以测试所有稳定和未开发的分支。您甚至可以使用企业版及其开发分支。每个内部版本都有不同的背景颜色,用于指示测试用例的状态:
- 绿色的背景色表示所有测试用例都可以成功运行,并且您可以测试该分支;
- 红色的背景色则表示该分支上的某些测试用例已失败,并且某些功能可能在该版本上被破坏。
您可以查看所有测试用例的日志,准确显示安装过程中发生的情况。每个版本都有两个数据库。全部数据库已安装所有模块,而基础数据库仅已安装基本Odoo模块。每个版本都安装了基本的演示数据,因此您无需额外配置即可快速对其进行测试。
你可以通过http://runbot.odoo.com/runbot链接访问Runbot,以下凭证可用于访问任何Runbot构建的测试环境:
- Login ID: admin Password: admin
- Login ID: demo Password: demo
- Login ID: portal Password: portal
这是一个公共测试环境,因此有时其他用户可能正在使用/测试您正在测试的同一分支。
Odoo app store
几年前,Odoo推出了应用程序商店,这立刻引起了轰动。 目前,这里托管了22,000多种不同的应用程序。 在应用商店中,您会找到许多针对不同版本的免费和付费应用。 这包括针对不同业务领域的特定解决方案,例如教育,食品工业和医学。 它还包括可扩展或向现有Odoo应用程序添加新功能的应用程序。 该应用程序商店还为Odoo网站构建者提供了许多精美的主题。 在第三章,创建Odoo附加模块中,我们将研究如何为自定义模块设置价格和货币。
您可以通过以下URL访问Odoo应用商店:
您可以通过以下URL访问Odoo主题:
https://apps.odoo.com/apps/themes
Odoo已开源了13版和14版的几个主题。请注意,这些主题是以前版本中的付费主题。 这意味着,在Odoo 13和14版本中,您可以免费下载和使用这些精美的主题。
Odoo社区协会(OCA)
Odoo Community Association (OCA) 是一个非营利性组织,开发/管理基于社区的Odoo模块。所有OCA模块都是开源的,由Odoo社区成员维护。在OCA的GitHub帐户下,您可以找到用于不同Odoo应用程序的多个存储库。 除了Odoo模块之外,它还包含各种工具,迁移库,会计本地化等等。
这是OCA的官方GitHub帐户的URL:https://github.com/OCA。
官方Odoo帮助论坛
Odoo具有非常强大的框架,仅通过使用/激活选项或遵循特定的模式就可以完成很多事情。因此,如果您遇到一些技术问题或不确定某些复杂情况,可以将查询发布到Odoo的官方帮助论坛上。许多开发人员都在这个论坛上很活跃,其中包括Odoo的一些正式员工。
您可以在以下URL搜索问题或发布新问题:https://help.odoo.com.help.odoo.com。
Odoo的eLearning 学习平台
最近,Odoo启动了一个新的电子学习平台。 这个平台上有很多视频,解释了如何使用不同的Odoo应用程序。 在撰写本书时,该平台没有技术视频,而只是功能视频。
这是Odoo电子学习平台的URL:https://www.odoo.com/slides。
从源代码轻松安装Odoo
强烈建议使用Linux Ubuntu操作系统来安装Odoo,因为除了大多数Odoo开发人员还使用Odoo进行所有测试、调试和安装外,Odoo还是使用该操作系统。使用GNU / Linux发行版,并且比Windows或macOS更容易获得Odoo社区对GNU / Linux中发生的OS级问题的支持。
还建议使用与生产环境相同的环境(相同的发行版和相同的版本)开发Odoo附加模块。这将避免令人讨厌的意外情况,例如在部署当天发现库具有比预期不同的版本,并且行为略有不同和不兼容的情况。如果您的工作站使用的是其他操作系统,则一种好的方法是在您的工作站上设置虚拟机(VM),然后在该VM中安装GNU / Linux发行版。
Ubuntu是Microsoft Store中的一个应用程序,因此,如果您不想切换到Ubuntu OS,也可以使用它。
对于这本书,我们将使用Ubuntu Server 18.04 LTS,但您可以使用任何其他Debian GNU / Linux OS。无论选择哪种Linux发行版,都应该对如何从命令行使用它有所了解,并且了解系统管理当然不会有任何危害。
做好准备
我们假设您已启动并运行Ubuntu 18.04,并且您具有具有root用户访问权限的帐户或已配置sudo。 在以下各节中,我们将安装Odoo的依赖项并从GitHub下载Odoo的源代码。
有些配置需要系统登录用户名,因此只要命令行中需要登录用户名,我们都会使用
$(whoami)
。 这是一个shell命令,它将代替您在键入的命令中的登录名。
如果您拥有GitHub帐户,某些操作肯定会更容易。如果您还没有,请访问https://github.com并创建一个。
怎么做…
要从源代码安装Odoo,请执行以下步骤:
运行以下命令以安装主要依赖项:
1
2$ sudo apt-get update
$ sudo apt install git python3-pip build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools libpng-dev libjpeg-dev gdebi -y下载和安装wkhtmltopdf:
1
2$ wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb
$ sudo dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb如果在上一个命令中发现错误,请使用以下命令强制安装依赖项:
1
$ sudo apt-get install -f
现在,安装PostgreSQL数据库:
1
$ sudo apt install postgresql -y
配置PostgreSQL数据库:
1
$ sudo -u postgres createuser --superuser $(whoami)
配置git:
1
2$ git config --global user.name "Your Name"
$ git config --global user.email [email protected]克隆Odoo代码:
1
2
3$ mkdir ~/odoo-dev
$ cd ~/odoo-dev
$ git clone -b 14.0 --single-branch --depth 1 https://github.com/odoo/odoo.git创建odoo-14虚拟环境并激活:
1
2$ python3 -m venv ~/venv-odoo-14.0
$ source ~/venv-odoo-14.0/bin/activate在虚拟环境中安装Odoo的Python依赖:
1
2$ cd ~/odoo-dev/odoo/
$ pip3 install -r requirements.txt创建和开启你的Odoo实例:
1
2$ createdb odoo-test
$ python3 odoo-bin -d odoo-test –i base --addons-path=addons --dbfilter=odoo-test$在浏览器中访问http://localhost:8069并通过使用admin帐户并使用admin作为密码对它进行身份验证。
如果需要RTL支持,请通过以下命令安装node和rtlcss:
1
2 $ sudo apt-get install nodejs npm -y
$ sudo npm install -g rtlcss
怎么运行的…
在第1步中,我们安装了几个核心依赖项。 这些依赖项包括各种工具,例如git,pip3,wget,Python设置工具等。 这些核心工具将帮助我们使用简单的命令安装其他Odoo依赖项。
在第2步中,我们下载并安装了wkhtmltopdf软件包,该软件包在Odoo中用于打印PDF文档,例如销售订单,发票和其他报告。Odoo 14.0需要wkhtmltopdf的0.12.5版本,并且可能不包括该版本 在当前的Linux发行版中。对于我们来说幸运的是,wkhtmltopdf的维护者在http://wkhtmltopdf.org/downloads.html上为各种发行版提供预构建的软件包,我们已经从该URL下载并安装了该软件包。
PostgreSQL的配置
在第3步中,我们安装了PostgreSQL数据库。
在第4步中,我们使用系统的登录名创建了一个新的数据库用户。$(whoami)
用于获取您的登录名,-s
选项用于提供超级用户权限。 让我们看看为什么我们需要这些配置。
Odoo使用psycopg2 Python库连接PostgreSQL数据库。要使用psycopg2库访问PostgreSQL数据库,Odoo默认使用以下值:
- 默认情况下,psycopg2尝试使用与本地连接上的当前用户相同的用户名连接到数据库,这将启用无密码身份验证(这对开发环境很有用)。
- 本地连接使用Unix域套接字。
- 数据库服务器在端口5432上侦听。
现在您的PostgreSQL数据库已准备就绪,可以与Odoo连接。
由于这是开发服务器,因此我们已向用户授予--superuser
权限。可以给PostgreSQL用户更多的权限,因为这将是您的开发实例。对于生产实例,可以使用--createdb
命令行而不是--superuser
来限制权限。生产服务器中使用--superuser
权限将被攻击者利用在已部署的代码的某些部分中的漏洞提供额外的杠杆作用。
如果要使用具有不同登录名的数据库用户,则需要提供该用户的密码。这是通过在创建用户时在命令行上传递--pwprompt
标志来完成的,在这种情况下,该命令将提示您输入密码。
如果已经创建了用户,并且想要设置密码(或修改忘记的密码),则可以使用以下命令:
1 | $ psql -c "alter role $(whoami) with password 'newpassword'" |
如果此命令失败,并显示一条错误消息,指出该数据库不存在,那是因为您没有在本Recipe的第4步中创建以登录名命名的数据库。没关系,只需添加--dbname
选项和现有数据库名称即可,例如--dbname template1
。
Git的配置
对于开发环境,我们使用源自GitHub的Odoo。 使用git,您可以轻松地在不同的Odoo版本之间切换。 另外,您可以使用git pull命令获取最新更改。
在第5步中,我们配置了您的git用户。
在第6步中,我们从Odoo的官方GitHub存储库下载了源代码。 我们已经使用git clone命令下载Odoo的源代码。 我们只使用了一个分支,因为我们只想要14.0版本的分支。 另外,我们使用--depth 1
来避免下载分支的完整提交历史记录。 这些选项将非常快速地下载源代码,但是如果需要,您可以省略这些选项。
Odoo开发人员还建议每晚进行构建,这些构建可以作为tarball和发行包使用。使用git clone的主要优点是,当在源树中提交新的错误修复程序时,您将能够更新您的存储库。您还可以轻松测试任何建议的修复程序并跟踪回归,从而可以使错误报告更加准确并对开发人员有所帮助。
如果您有权访问企业版源代码,也可以在
~/odoo-dev
目录下的单独文件夹中下载该源代码。
虚拟环境
Python虚拟环境(简称venv)是隔离的Python工作区。 这些对Python开发人员非常有用,因为它们允许安装具有不同版本的各种Python库的不同工作区,并且可能安装在不同的Python解释器版本上。
您可以使用python3 -m venv ~/newvenv
命令创建任意数量的环境。这将在指定位置创建一个newvenv目录,其中包含bin/子目录和lib/python3.6子目录。
在第7步中,我们在~/venv-odoo-14.0目录中创建了一个新的虚拟环境。这将是我们隔离的Odoo Python环境,所有Odoo的Python依赖项都将安装在此环境中。
要激活虚拟环境,我们需要使用source命令。使用source ~/venv-odoo-14.0/bin/activate
命令,我们已经激活了虚拟环境。
安装Python包
Odoo源代码的requirements.txt文件中列出了Python依赖项。在第8步中,我们通过pip3 install命令安装了所有这些要求。
至此,您可以运行Odoo实例。
开启实例
现在到了您一直在等待的时刻。要启动我们的第一个实例,在步骤9中,我们首先创建一个新的空数据库,使用odoo-bin脚本,然后使用以下命令启动Odoo实例:
1 | python3 odoo-bin -d odoo-test -i base --addons-path=addons --db-filter=odootest$ |
您也可以在odoo-bin之前使用./来省略python3,因为它是可执行的Python脚本,如下所示:
1 | ./odoo-bin -d odoo-test –i base --addons-path=addons --db-filter=odoo-test$ |
对于odoo-bin,将使用具有以下命令行参数的脚本:
-d database_name
:默认情况下使用此数据库。--db-filter=database_name$
:仅尝试连接到与提供的正则表达式匹配的数据库。一个Odoo安装可以为位于单独数据库中的多个实例提供服务,并且此参数限制了可用数据库。尾随的$很重要,因为正则表达式用于匹配模式。 这样可以避免选择以指定字符串开头的名称。--addons-path=directory1,directory2,...
:这是逗号分隔的目录列表,Odoo将在这些目录中查找附加组件。在实例创建时将扫描此列表,以填充实例中可用的附加模块的列表。如果要使用Odoo的企业版,请使用此选项添加其目录。-i base
: 这用于安装基本模块。通过命令行创建数据库时,这是必需的。
如果您使用的数据库用户的登录名与Linux登录名不同,则需要传递以下附加参数:
--db_host=localhost
: 使用与数据库服务器的TCP连接。--db_user=database_username
: 使用指定的数据库登录名。--db_password=database_password
: 这是用于对PostgreSQL服务器进行身份验证的密码。
要获得所有可用选项的概述,请使用--help
参数。 我们将在本章后面看到更多的odoo-bin脚本。
在空数据库上启动Odoo时,它将首先创建支持其操作所需的数据库结构。它还将扫描加载项路径以找到可用的加载项模块,并将其插入数据库的初始记录中。这包括具有默认管理员密码的admin用户,您将使用该密码进行身份验证。
在浏览器中访问http://localhost:8069会将您带到新创建的实例的登录页面,如以下屏幕截图所示:
这是由于Odoo包含了HTTP服务器。默认情况下,它在TCP端口8069上侦听所有本地网络接口。
管理Odoo服务器数据库
使用Odoo时,实例中的所有数据都存储在PostgreSQL数据库中。您可以使用所有常用的标准数据库管理工具,但是Odoo还建议使用Web界面进行一些常见操作。
我们假设您的工作环境已建立并且您正在运行一个实例。
怎么做…
Odoo数据库管理界面提供了用于创建,复制,删除,备份和还原数据库的工具。 还有一种更改主密码的方法,该密码用于保护对数据库管理界面的访问。
访问数据库管理界面
要访问数据库,请执行以下步骤:
转到实例的登录屏幕(如果已通过身份验证,请注销)。
单击Manage Databases链接。 这将导航到http://localhost:8069/web/database/manager(您也可以将浏览器直接指向该URL):
设置或更改主密码
如果您已经为实例设置了默认值并且尚未修改它,正如我们将在下一节中说明的那样,数据库管理屏幕将显示一条警告,告诉您尚未设置master password,并且将 建议您设置一个直接链接:
要设置master password,请执行以下步骤:
单击Set Master Password按钮。 您将看到一个对话框,要求您填写New Master Password字段:
输入新密码然后单击继续。
如果已经设置了主密码,请单击屏幕底部的Set Master Password按钮进行更改。在显示的对话框中,键入以前的主密码和新的主密码,然后单击Continue。
主密码是服务器配置文件的
admin_password
的值。如果在未指定配置文件的情况下启动服务器,则会在~/.odoorc
中生成一个新的密码。有关该配置文件的更多信息,请参考下一个Recipe。
新建一个新的数据库
此对话框可用于创建将由当前Odoo服务器处理的新数据库实例:
在数据库管理窗口中,单击Create Database按钮,该按钮可在屏幕底部找到。这将弹出以下对话框:
填写表格,如下所示:
Master Password:这是此实例的Master Password。
Database Name:输入要创建的数据库的名称。
Email:在此处添加您的电子邮件地址; 以后将用作您的用户名。
Password:输入您要为新实例的管理员用户设置的密码。
Phone Number:设置电话号码(可选)。
Language:选择默认情况下要安装的语言下拉列表中的新数据库。Odoo将自动加载所选语言的翻译。
Country:在下拉菜单中选择主要公司的国家列表。 选择此项将自动配置一些东西,包括公司币种。
Demo data:选中此框可获得演示数据。 这对于运行交互式测试或为客户设置演示很有用,但不应检查旨在包含生产数据的数据库。
如果您希望使用数据库来运行模块的自动化测试(请参阅第7章,调试模块),则需要具有演示数据,因为Odoo中的绝大多数自动化测试都依赖于这些记录,以便运行成功。
单击Continue按钮,等待一段时间,直到新数据库被初始化。然后,您将被重定向到实例并以管理员身份连接。
故障排除
如果将您重定向到登录屏幕,这可能是因为
--db-filter
选项已传递给Odoo且新的数据库名称与新的数据库名称不匹配。请注意,odoo-bin start
命令以静默方式执行此操作,仅使当前数据库可用。要解决此问题,只需在不使用start命令的情况下重新启动Odoo,如本章从源代码轻松安装Odoo所示。如果有配置文件(请参阅本章后面的在文件配方中存储实例配置),然后检查db_filter
选项是否未设置或设置为与新数据库名称匹配的值。
复制数据库
通常您将拥有一个现有的数据库,并且您想尝试使用该数据库尝试一个过程或运行一个测试,而无需修改现有的数据。这里的解决方案很简单:复制数据库并在副本上运行测试。根据需要重复多次:
在数据库管理屏幕中,单击要克隆的数据库名称旁边的Duplicate Database链接:
填写以下表格:
- Master Password: 这是Odoo服务器的主密码。
- New Name: 您要赋予副本的名称。
点击Continue按钮。
然后您可以在数据库管理屏幕中单击新创建的数据库的名称,以访问该数据库的登录屏幕。
删除数据库
完成测试后,您将需要清理重复的数据库。为此,请执行以下步骤:
在数据库管理屏幕中,您将在数据库名称旁边找到Delete按钮。点击它会弹出如下对话框:
填写表格并填写Master Password字段,这是Odoo服务器的主密码。
单击Delete按钮。
警告! 潜在的数据丢失!
如果您选择了错误的数据库并且没有备份,则无法恢复丢失的数据。
备份数据库
要创建备份,请执行以下步骤:
在数据库管理屏幕中,您将在数据库名称旁边找到“备份”按钮。单击它会弹出对话框,如以下屏幕截图所示:
填写表格,如下所示:
- Master Password:这是Odoo服务器的主密码。
- Backup Format:始终对生产数据库使用zip,因为这是唯一真正的完整备份格式。仅当您不太在乎文件存储时,才使用pg_dump的格式,pg_dump格式仅用在开发数据库。
点击Backup按钮,备份文件随后将下载到您的浏览器中。
恢复数据库备份
如果需要还原备份,则需要执行以下操作:
在数据库管理屏幕中,您将在屏幕底部找到一个Restore Database按钮。单击它会弹出一个对话框,如以下屏幕截图所示:
填写表格,如下所示:
- Master Password:这是Odoo服务器的主密码。
- File:这是之前下载的Odoo备份。
- Database Name:提供将在其中还原备份的数据库的名称。 该数据库不得存在于服务器上。
- This database might have been moved or copied: 如果原始数据库位于另一台服务器上,或者已从当前服务器中删除,请选择“此数据库已移动”。否则,选择“此数据库是副本”,这是安全的默认选项。
点击Continue按钮
如果尝试执行此操作,收到一条错误消息(数据库还原错误:数据库已存在)。您需要先删除该数据库。
怎么运行的…
以上功能除了设置和更改主密码外,另外的功能还可以在服务器上运行PostgreSQL管理命令来实现。
主密码是非常重要的一条信息,它仅存在于Odoo服务器配置文件中,并且永远不会存储在数据库中。过去曾经是默认值admin,但是使用此值是有风险的, 在Odoo v9及更高版本中,此密码被标识为未设置的主密码,并且在访问数据库管理界面时敦促您对其进行更改。即使将其存储在admin_passwd条目下的配置文件中,这与管理员用户的密码不同;这是两个独立的密码。主密码是为Odoo服务器进程设置的,该进程本身可以处理多个数据库实例,每个实例都有一个具有自己密码的独立管理员用户。
安全注意事项
请记住,在本章中我们正在考虑开发环境。在生产服务器上工作时,必须保护Odoo数据库管理界面,因为它可以访问很多敏感信息,尤其是在服务器托管Odoo的情况下。 几个不同客户端的实例。
要创建新数据库,Odoo使用PostgreSQL createdb实用程序并调用内部Odoo函数来初始化新数据库,其方式与在空数据库上启动Odoo时相同。
为了复制数据库,Odoo使用createdb的--template选项,将原始数据库作为参数传递,这实质上是使用内部和优化的PostgreSQL例程在新数据库中复制模板数据库的结构,这比创建一个 备份和还原(特别是在使用Web界面时,这需要下载备份文件并再次上传)。
备份和还原操作分别使用pg_dump和pg_restore实用程序。当使用zip格式时,备份还包括文件存储的副本,当您将Odoo配置为不将这些文件保留在数据库中时,备份还将包括文件存储的副本,其中包含文件的副本,这在14.0中是默认的选项。除非您进行更改,否则这些文件位于~/.local/share/Odoo/filestore中。
如果备份变大,则下载可能会失败。这是因为Odoo服务器本身无法处理内存中的大文件,或者是因为该服务器在反向代理之后运行,因为HTTP响应的大小受到限制。相反,出于相同的原因,您可能会遇到数据库还原操作方面的问题。当您开始遇到这些问题时,是时候投资购买更强大的外部备份解决方案了。
还有更多…
经验丰富的Odoo开发人员通常不使用数据库管理界面管理数据库,而是从命令行执行操作。例如,要使用演示数据初始化新数据库,可以使用以下单行命令:
1 | $ createdb testdb && odoo-bin -d testdb |
此命令行的额外用法是,您可以在使用时请求安装附加组件,例如,-i sale,purchase,stock
。
要复制数据库,请停止服务器并运行以下命令:
1 | $ createdb -T dbname newdbname |
仅当数据库上没有活动会话时才使用createdb -T,这意味着您必须在从命令行复制数据库之前关闭Odoo服务器。
要删除实例,请运行以下命令:
1 | $ dropdb dbname |
要创建备份(假设PostgreSQL服务器在本地运行),请使用以下命令:
1 | $ pg_dump -Fc -f dbname.dump dbname |
要还原备份,请运行以下命令:
1 | $ tar xf dbname.tgz |
警告!
如果您的Odoo实例使用其他用户连接到数据库,则需要传递-U用户名,以便正确的用户是还原的数据库的所有者。
将实例配置存储在文件中
odoo-bin脚本有很多选项,记住所有这些以及在启动服务器时记住正确设置它们是很乏味的,幸运的是,可以将它们全部存储在配置文件中并仅通过 递给您想要更改的内容,例如用于开发。
怎么做…
对于此Recipe,请执行以下步骤:
要为您的Odoo实例生成配置文件,请运行以下命令:
1
$ ./odoo-bin --save --config myodoo.cfg --stop-after-init
您可以添加其他选项,它们的值将保存在生成的文件中。所有未设置的选项将以其默认值设置保存。要获取可能选项的列表,请使用以下命令:
1
$ ./odoo-bin --help | less
这将为您提供有关各种选项执行效果的帮助。
要将命令行形式转换为配置形式,请使用选项名称,删除前导破折号,然后将中间的破折号转换为下划线。例如
--without-demo
更改为without_demo。这适用于大多数选项 ,但有一些例外情况,将在下一节中列出。编辑myodoo.cfg文件(使用下一节中的表获取您可能要更改的一些参数),然后使用保存的选项启动服务器,运行以下命令:
1
$ ./odoo-bin -c myodoo.cfg
--config
选项通常缩写为-c
。
怎么运行的…
在启动时,Odoo会分三遍加载其配置;首先从源代码初始化所有选项的一组默认值,然后解析配置,如果文件中定义了相同的值都将覆盖默认值。
如前所述,选项的名称可以通过删除前导破折号并将中间的破折号转换为下划线来使用,但有一些例外情况,尤其是以下内容:
Comand line | Configuration file |
---|---|
--db-filter | dbfilter |
--no-http | http_enable=True/False |
–database | db_name |
--dev | dev_mode |
--i18n-import / --i18n-export | Unavailable |
这是通过配置文件通常设置的选项列表:
Options | Format | Usage |
---|---|---|
without_demo | Comma-separated list of module names | This prevents module data from being loaded. Give the value all to disable demo data fro all modules, or False to enable demo data for all modules. To disable demo data for specific modules, provide module names, for example, sale,purchase,crm . |
addons_path | Comma-separated list of paths | This is a list of directory name in which the server will look for add-ons. |
admin_passwd | Text | This is the master password(take a look at the preceding recipe). |
data_dir | Path to a directory | This is a directory in which the server will store session information, add-ons downloaded from the internet, and documents if you enable the file store. |
http_portlongpolling_port | Port number | These are the ports on which the Odoo server will listen. You will need to specify booth to run multiple Odoo servers on the same host; longpolling_port is only used if workers is not 0. http_port defaults to 8069 , and longpolling_port defaults to 8072. |
logfile | Path to a file | The file in which Odoo will write its logs. |
log_level | Log verbosity level | Specifies the level of logging. Accepted values(in increasing order of verbosity) include critecal,error,warn,debug_rpc_answer,debug_sql . |
workers | Integer | The number of worker processes. Refer to Chapter 3, Server Deployment, for more information. |
proxy_mode | True/False | Activate reverse proxy WSGI wrappers. Only enable this when running behind a trusted web proxy! |
以下是与数据库相关的配置选项的列表:
Options | Format | Usage |
---|---|---|
db_host | Hostname | This is the name of the server running the PostgreSQL server. Use False to use local Unix domain sockets, and localhost to user TCP sockets locally. |
db_user | Database user login | This is generally empty if db_host is False . This will be the name of the user used to connect to the database. |
db_password | Database user password | This is generally empty if db_host is False and whendb_user has the same name as the user running the server. Read the main page of pg_hba.conf for more information on this. |
db_name | Database name | This is used to set the database name on which some commands operate by default. This does not limit the databases on which the server will act. Refer to the following dbfilter option for this. |
db_sslmode | Database SSL mode | This is used to specify the database SSL connection mode. |
dbfilter | A regular expression | The Expression should match the mane of the databases that are considered by the server. If you run the website, it should match a single database, so it will look like ^databasename$ . More information on this can be found in Chapter 3, Server Deployment. |
list_db | True/False | Set to True to disable the listing of databases. See Chapter 3, Server Deployment, for more information. |
Odoo现在使用Python ConfigParser模块来解析配置文件。但是,Odoo 11.0中的实现已更改,并且不再可以使用变量插值,因此,如果习惯于使用%(section.variable)s
表示法从其他变量的值中定义变量的值,则将需要改变您的习惯并恢复为明确的价值观。
某些选项未在配置文件中使用,但在开发过程中被广泛使用:
Option | Format | Usage |
---|---|---|
-i or --init | Comma-separated list of module name | It will install given modules by default while initializing the database. |
-u or --update | Comma-separated list of module names | It will update given modules when you restart the server. It is mostly used when you modify source code or update the branch from git. |
--dev | all, reload, qweb, werkzeug and xml | This enables developer mode and the auto-reload feature. |
激活Odoo开发者模式工具
当使用Odoo开发时,您需要知道如何在Web界面中激活开发者模式,以便可以访问技术设置菜单和开发人员信息。启用调试模式将暴露一些高级配置选项和字段,这些选项和字段是 隐藏在Odoo中以提高可用性,因为它们不是常用的。
怎么做…
要在Web界面激活开发者模式,请执行以下步骤:
使用管理员账号登录你的Odoo实例。
进入设置菜单。
滚动到页面底部的Developer Tools部分:
点击Activate the developer mode链接。
等待页面刷新。
另外的方法
你也可以通过编辑URL激活开发人员模式。 在**#**号之前,插入
?debug=1
。例如,如果您当前的URL是http://localhost:8069/web#menu_id=102&action=94
,并且您要启用开发人员模式,则需要将该URL更改为http://localhost:8069/web?debug=1#menu_id=102&action=94
。此外,如果要使用资产调试模式,则将URL更改为http://localhost:8069/web?debug=assets#menu_id=102&action=94
。
要退出开发人员模式,您可以执行以下任一操作:
- 编辑URL并在查询字符串中写入
?debug
=0。 - 使用在设置菜单中的同一位置停用开发者模式。
- 单击顶部菜单中的错误图标,然后单击“离开开发者工具”选项。
许多开发人员正在使用浏览器扩展来切换调试模式。通过此功能,您可以快速切换调试模式而无需访问设置菜单。这些扩展适用于Firefox和Chrome。请看以下屏幕截图,它将帮助您在Chrome商店中识别插件:
自从Odoo v13版本后,调试模式的行为已发生更改。调试模式的状态存储在会话中,这意味着即使将
?debug
从URL中删除,调试模式仍会处于激活状态。
怎么运行的…
在开发者模式下,会发生两件事:
- 将鼠标悬停在表单视图中的字段上或列表视图中的列上时,会有提示,提供有关该字段的技术信息(内部名称,类型等)
- 带有错误图标的下拉菜单会显示在右上角(用户菜单的旁边),通过这个菜单可访问有关正在显示的模型,各种相关视图定义,工作流,自定义过滤器管理等技术信息。
开发者模式有一个变体**Developer mode (with assets)**。此模式的行为类似于普通开发者模式,但是,发送到浏览器的JavaScript和CSS代码并未缩小,这意味着您的网络开发工具 浏览器很容易用于调试JavaScript代码(有关详细信息,请参阅第15章,Web客户端开发)。
更新附加模块列表
当您添加新模块时,为了在Odoo中列出该模块,您需要更新模块列表。在此Recipe中,您将学习如何更新应用程序列表。
准备工作
启动您的实例并使用管理员帐户连接到该实例。执行此操作后,激活开发者模式(如果您不知道如何激活开发者模式,请参上一小节)。
怎么做…
要更新您实例中可用插件模块的列表,您需要执行以下步骤:
打开应用菜单。
点击刷新本地模块列表。
在弹出的对话框中点解更新按键。
更新结束时,您可以单击应用程序条目以查看可用附加模块的更新列表。您需要在搜索框中删除应用程序上的默认过滤器,以查看所有模块。
怎么运行的…
单击更新按钮时,Odoo将读取加载项路径配置变量,对于列表中的每个目录,它将查找包含加载项清单文件的直接子目录,该文件是名为__manifest__.py
的文件,存储在附加模块目录。 Odoo会读取清单,希望找到Python字典。除非清单中包含installable设置为False的实例,否则附加模块元数据将记录在数据库中;如果模块已经存在,则信息将被更新;否则,将创建新记录。如果找不到以前可用的附加模块,则不会从列表中删除该记录。
仅当在初始化数据库后添加了新的加载项路径时才需要更新的应用程序列表。如果在初始化数据库之前将新的加载项路径添加到配置文件中,则无需手动更新模块列表。
总结到目前为止,我们已经学到的知识,安装后,您可以使用以下命令行启动Odoo服务器(如果使用的是虚拟环境,则需要先激活虚拟环境):
1 | python3 odoo-bin -d odoo-test -i base --addons-path=addons --db-filter=odootest |
Once you run the module, you can access Odoo from http://localhost:8069. You can also use a configuration file to run Odoo as follows:
运行模块后,您可以从http://localhost:8069访问Odoo。还可以使用配置文件来运行Odoo,如下所示:
1 | ./odoo-bin -c myodoo.cfg |
启动Odoo服务器后,您可以从应用菜单安装/更新模块。
Odoo14开发者指南第一章-安装Odoo开发环境【翻译】