转载:http://book.odoomommy.com/chapter1/
第一章 环境搭建
操作系统的选择
Odoo的最佳操作系统是Ubuntu,如果你对Linux不熟悉,Windows上面也是可以的,但是Window上只推荐做开发环境,不推荐部署生产环境。关于Odoo生产环境的部署,后面会有专门的章节介绍。这里还是推荐读者是使用Linux环境进行学习开发,也可以在Window上使用虚拟机软件(VMWare和VirtualBox)配合ssh终端软件(Xshell,个人用户免费)进行环境搭建。本书只介绍Linux下的安装步骤,Windows下的安装,读者可以在网上搜索到相关教程。
环境的搭建
Odoo的环境搭建方式多种多样,按方式划分的话可以分为源码安装和安装包安装两种方式。 源码安装的方式相对比较繁琐,适合于喜欢自己动手同学。安装包安装的方式比较简洁,适合于喜欢傻瓜式安装软件的同学。两种方式没有优劣之分,取决于你的心情。下面简单介绍一下这两种安装方式。(因为windows的使用场景比较少,本书所有的开发和部署场景均是在Linux下完成,喜欢使用windows和mac的同学可以到网络上搜索相关的内容,完成安装后继续阅读)
源码安装
我们首先来看一下,如何使用源码安装的方式进行安装。源码安装的优势是,所有的组件都是自己完成的,相对的灵活可控,不必拘泥于系统安装方式的束缚。缺点是,对用户的动手能力要求很高,安装过程中会碰到各种各样的问题,需要有很强的搜索和解决问题的能力。
安装Python
Odoo12.0 以后已经全面使用Python3作为后端的主要语言了,因此,需要先安装Python3,推荐3.6及以后的版本。如果使用的是Ubuntu 18.04+的发行版本,系统已经集成了Python3,我们只需要使用简单的命令安装即可:
sudo apt-get install python3
sudo apt-get install python3-dev
sudo apt-get install python3-pip
数据库的安装
Odoo使用的是Postgresql,我们在正式开始安装之前需要先安装好数据库。使用安装包安装的同学可以跳过这一部分,因为安装包通常会自动把数据库安装好。
本书的环境基于ubuntu,使用centos的同学可以根据centos的命令自行替换。
-
安装postgresql:
apt-get install postgresql
-
数据库安装完成后,需要配置odoo用户:
sudo su postgres psql create user odoo with superuser
-
开启监听模式,默认情况下Postgresql只允许本地访问,因此我们需要将该条件放开。找到/etc/postgres/9.x/main/postgresql.conf,将listen_addresses改为*:
listen_address="*"
-
编辑/etc/postgres/9.x/main/pg_hba.conf文件,针对不同的IP号段设置不同的访问权限。
# Database administrative login by Unix domain socket local a # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 md5 host all all all md5 # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. local replication all peer host replication all 127.0.0.1/32 md5 host replication all ::1/128 md5
peer模式只根据操作系统的用户进行配对校验,需要有同名的系统用户。如果Postgresql的用户是新建的,在操作系统上没有与之对应的用户的话,就可以将认证模式改为md5,md5是通过密码进行认证的。如果你的用户只允许本地访问的话,也可以设置为trust,这样就不必再输入密码即可认证成功。
修改完配置文件后,需要重启postgresql才能生效:
sudo service postgresql restart
切换到postgres用户进行验证:
sudo su postgres
然后进入postgresql数据库:
psql
如果出现下面类似的结果,就说明安装成功了:
psql (10.10 (Ubuntu 10.10-0ubuntu0.18.04.1))
Type "help" for help.
postgres=#
安装odoo
-
使用git将odoo的源码克隆到本地,注意选择你要安装的版本分支。
git clone https://github.com/odoo/odoo -b 12.0 --depth=1
由于众所周知的原因,直接从github拉去代码可能会花费比较长的时间。备选方案是使用国内gitee提供的镜像服务。
-
代码下载下来之后,进入文件夹使用如下命令进行安装,由于网络的原因,很多插件自动安装不上,需要手动安装,这也是源码安装最为繁琐的地方。
python setup.py install
期间可能会遇到各种异常,这时就需要使用搜索引擎依次解决。这里列出常见的几个:
-
安装psycopg2期间出现:
error: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
需要安装:
apt install libpq-dev
-
ModuleNotFoundError: No module named 'werkzeug.contrib'
pip3 install Werkzeug==0.14.1
然后安装Python依赖:
pip3 install -r requirements.txt
-
-
所有插件安装完成后,即可使用如下的命令启动:
./odoo -r odoo --addons-path='./addons'
其中 --addons-path指向你的安装目录下的addons文件夹路径。
安装包安装
安装包安装相对要省心很多,有点类似windows下的exe安装程序,以ubuntu为例:
-
添加odoo的官方源:
deb http://nightly.odoo.com/12.0/nightly/deb/ ./
注意将12.0的版本替换为你的目标版本。
odoo官网比较慢的时候可以试试CDN odoocdn.com
-
更新源列表
apt-get udpate
此过程中可能碰到key验证失败的问题,可到https://nightly.odoo.com/odoo.key 下载公用key,然后使用sudo apt-key add命令添加key:
apt-key add odoo.key
-
使用apt-get方式安装
apt-get install odoo
由于国内复杂的网络情况,不排除有些地区的下载速度会非常缓慢,这个时候你需要的是耐心。
至此,读者应该已经安装好了odoo社区版。需要另外说明的有两点:
- 多版本的odoo: 如果用户希望在开发环境中安装多个版本的Odoo以方便测试和开发,那么你应该选择源码安装的方式进行。
- 企业版的安装: 如果你购买的企业版,通常odoo会在官网提供一个完整的安装包。但是,企业版的本质是由社区版+企业版代码包的形式组成的,也就说,你可以把企业版的代码包配置到配置文件的addons_path中,就可以让社区版转身一变为企业版。
Centos上的安装
国内很多互联网公司的服务器都是使用的Centos,Centos作为一个曾经很成功的发行版在国内拥有很大的用户数量,但是由于红帽公司的商业决策,在可见的未来Centos将逐步走向没落。Odoo的开发是基于Debian系统,虽然官方网站提供了RPM的安装包,但仍旧有可能碰到各种奇奇怪怪的问题。
笔者这里不对Centos的安装做过多的介绍,需要的同学可以参考下面连接,使用源码安装的方式进行安装:
https://mellowhost.com/blog/how-to-setup-odoo-14-in-centos-7.html
如果安装上的困难,可以购买笔者的商业部署服务。
配置文件介绍
采用deb包安装的话,配置文件通常位于/etc/odoo/目录下,配置文件中包含若干个关于Odoo的配置信息,一个典型的配置文件内容如下:
[options]
; This is the password that allows database operations:
admin_passwd = xxxxxxx
db_host = localhost
db_port = 5432
db_user = odoo
db_password = odoo
longpolling_port = 1172
log_level = debug
addons_path = /home/ubuntu/odoo/odoo-dev/enterprise-12.0,/home/ubuntu/odoo/odoo-dev/custom/addons
logfile = /home/ubuntu/odoo/odoo-dev/odoo.log
xmlrpc_port = 8069
reportgz = True
proxy_mode = True
db_filter = ^%d$
limit_time_cpu = 7200
limit_time_real = 7200
; limit_request = 200
; workers = 2
; list_db = False
- admin_passwd: odoo的管理密码,包含数据库的创建和复制、删除等权限
- db_host: 数据库地址
- db_port: 数据库端口
- db_user: 数据库用户
- db_password: 数据库的访问密码
- addons_path: addons目录路径,通常的做法是将odoo原生的模块放到一个目录中,然后将我们自己开发和其他的第三方模块放到另一个目录中,做到与原生模块的物理隔离。
- xmlrpc_port:odoo的应用端口,默认为8096
- dbfilter:数据库过滤,如果该选项设置为某单个数据库,那么web应用中就只能看到该数据库,其他数据库不可见。另外,该选项支持域名过滤,即设置为^%d$,这将过滤跟当前子域名相匹配的数据库,odoo.com和www.odoo.com都匹配数据库odoo,%h 会被替换为请求的整个主机名。
- data_dir: 附件文件的存储路径。
实际应用中发现xmlrpc设置为80端口并不能访问,具体原因还未知,还是推荐与nginx搭配使用
指定配置文件启动的命令:
odoo -c /etc/odoo/odoo.conf
数据库管理界面
环境搭建完成后,我们先启动odoo进程:
odoo -c /etc/odoo/odoo.conf
可以使用sh的别名方式,将命令存储成一个简短的命令,操作方式是编辑~/.ssh/config文件,然后在文件最后新增一行:
alias xxx='odoo -c /etc/odoo/odoo.config'
进程启动后,命令行的输出应该是这个样子:
2019-08-26 02:41:41,986 115754 INFO ? odoo: Odoo version 12.0
2019-08-26 02:41:41,986 115754 INFO ? odoo: Using configuration file at /etc/odoo/odoo.conf
2019-08-26 02:41:41,987 115754 INFO ? odoo: addons paths: ['/home/kevin/.local/share/Odoo/addons/12.0', '/usr/lib/python3/dist-packages/odoo/addons', '/home/kevin/codes/osc_addons', '/home/kevin/codes/enterprise-12.0', '/usr/local/lib/python3.6/dist-packages/odoo-12.0-py3.6.egg/odoo/addons']
2019-08-26 02:41:41,987 115754 INFO ? odoo: database: odoo@192.168.88.128:5432
2019-08-26 02:41:42,529 115754 INFO ? odoo.addons.base.models.ir_actions_report: Will use the Wkhtmltopdf binary at /usr/local/bin/wkhtmltopdf
2019-08-26 02:41:42,965 115754 WARNING ? odoo.addons.base.models.res_currency: The num2words python library is not installed, amount-to-text features won't be fully available.
2019-08-26 02:41:45,945 115754 INFO ? odoo.service.server: HTTP service (werkzeug) running on saturn:8069
命令行里指明了输出的进程和端口号,以及数据库地址。笔者这里使用的是虚拟机,虚拟机的IP地址是192.168.88.128。所以,我们用浏览器打开地址 Http://192.168.88.128:8069,如果已经存在数据库,就会看到下面的界面:
没有的话,会显示一个新建的页面,按照提示进行创建即可。数据库的管理地址:Http://192.168.88.128:8069/web/database/manager,通常可以在这里对数据库进行管理操作,包括创建、备份和删除。数据库管理是一个比较敏感的操作,如果对外服务的话,记得在配置文件中设置管理密码,以防数据丢失。
当然,数据库的管理也可以在postgresql中进行,但是需要注意的是,创建的数据库的owner需要是odoo连接数据库的那个用户。
开发工具
推荐使用vscode,搭配pylint等插件可以自己积木式地配置一个顺手地开发工具。机器配置高的同学也可以使用Pycharm,这里就不多介绍了。