第一章 环境搭建

本章将讲述如何从头开始搭建一个odoo系统, 适用于对odoo没有经验的小白读者.如果您对odoo已经有经验可以跳过本章.

操作系统的选择

Odoo的最佳操作系统是Ubuntu,如果你对Linux不熟悉,也可以选择Windows进行安装,只是Window上只推荐做开发环境,并不推荐部署生产环境。关于Odoo生产环境的部署,后面会有专门的章节介绍。这里还是推荐读者是使用Linux环境进行学习开发,也可以在Window上使用虚拟机软件(VMWare和VirtualBox)配合ssh终端软件(Xshell,个人用户免费)进行环境搭建。

本书将仅详细介绍Linux下的安装步骤,windows,mac以及Docker用户可以到以下地址找到相关安装资料:

环境的搭建

Odoo的环境搭建方式多种多样,按方式划分的话可以分为源码安装安装包安装两种方式。 源码安装的方式相对比较繁琐,适合于喜欢自己动手同学。安装包安装的方式比较简洁,适合于喜欢傻瓜式安装软件的同学。两种方式没有优劣之分,取决于你的心情。下面简单介绍一下这两种安装方式。

源码安装

我们首先来看一下,如何使用源码安装的方式进行安装。源码安装的优势是,所有的组件都是自己完成的,相对的灵活可控,不必拘泥于系统安装方式的束缚。缺点是,对用户的动手能力要求很高,安装过程中会碰到各种各样的问题,需要有很强的搜索和解决问题的能力。

安装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的命令自行替换。

  1. 安装postgresql:

     apt-get install postgresql
    
  2. 数据库安装完成后,需要配置odoo用户:

     sudo su postgres
     psql
     create user odoo with superuser
    
  3. 开启监听模式,默认情况下Postgresql只允许本地访问,因此我们需要将该条件放开。找到/etc/postgres/9.x/main/postgresql.conf,将listen_addresses改为*:

     listen_address="*"
    
  4. 编辑/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

  1. 使用git将odoo的源码克隆到本地,注意选择你要安装的版本分支。

     git clone https://github.com/odoo/odoo -b 12.0 --depth=1
    

    由于众所周知的原因,直接从github拉去代码可能会花费比较长的时间。备选方案是使用国内gitee提供的镜像服务。

  2. 代码下载下来之后,进入文件夹使用如下命令进行安装,由于网络的原因,很多插件自动安装不上,需要手动安装,这也是源码安装最为繁琐的地方。

     python setup.py install
    

    期间可能会遇到各种异常,这时就需要使用搜索引擎依次解决。这里列出常见的几个:

    1. 安装psycopg2期间出现:

      error: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
      

      需要安装:

      apt install libpq-dev
      
    2. ModuleNotFoundError: No module named 'werkzeug.contrib'

      pip3 install Werkzeug==0.14.1
      

      然后安装Python依赖:

      pip3 install -r requirements.txt
      
  3. 所有插件安装完成后,即可使用如下的命令启动:

     ./odoo -r odoo --addons-path='./addons'
    

    其中 --addons-path指向你的安装目录下的addons文件夹路径。

安装包安装

安装包安装相对要省心很多,有点类似windows下的exe安装程序,以ubuntu为例:

  1. 添加odoo的官方源:

     deb http://nightly.odoo.com/12.0/nightly/deb/ ./
    

    注意将12.0的版本替换为你的目标版本。

    odoo官网比较慢的时候可以试试CDN odoocdn.com

  2. 更新源列表

     apt-get udpate
    

    此过程中可能碰到key验证失败的问题,可到https://nightly.odoo.com/odoo.key 下载公用key,然后使用sudo apt-key add命令添加key:

     apt-key add odoo.key
    
  3. 使用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,这里就不多介绍了。

results matching ""

    No results matching ""