第2章 安装与配置
本书的编写宗旨是以实用为主,也希望读者在使用本书时能够在实际环境中边操作边参考本书。本书编写案例所使用的Odoo环境是安装在云服务器上的,使用的操作系统是Ubuntu16.04,建议读者也使用该操作系统。如果身边没有合适的操作系统,又觉得在Windows系统上安装虚拟机太消耗性能,那么建议租一个云服务器作为学习使用,其性价比非常高,也符合目前的主流工程应用方向。
当然,如果硬件配置较高的话,那么在Windows上安装Linux/Unix虚拟机,然后在虚拟机上进行应用也是可以的。
这里我们还是建议大家首选Debian/Ubuntu系统,虽然Odoo在多种操作系统上都可以运行,但Odoo的开发团队一直将Debian作为参考部署平台,而且其SaaS应用也是基于Debian的。这就意味着,如果选择Debian或Ubuntu,那么从网上查找相关资料将会更容易。
2.1 在Ubuntu上安装Odoo
2.1.1 创建Odoo用户并授权
在Ubuntu上安装Odoo时,首先需要注意一点的是:不可以在root用户下安装Odoo。
所以第一步,我们需要在操作系统上新创建一个用户,新建用户的命令如下:
1. $ sudo adduser odoo
然后,编辑文件/etc/sudoers为Odoo授权,修改文件命令如下:
1. # User privilege specification 2. root ALL=(ALL:ALL) ALL 3. odoo ALL=(ALL:ALL) ALL
最后,保存退出,这样Odoo用户就拥有了root权限。
接着从当前的root用户切换到Odoo用户,并进入Odoo用户的home目录,命令如下:
1. $ su odoo 2. 3. $cd ~
2.1.2 更新依赖包并使用git克隆Odoo源码
检查一下软件包是否为最新版本,并且安装git。Ubuntu的16.04版本中已经自带了git,不管之前有没有安装git都可以按照如下代码直接执行:
1. $ sudo apt update 2. $ sudo apt upgrade 3. $ sudo apt install git
更新完成后需要重启一下服务器:
1. $ sudo reboot
接下来,安装Node.js:
1. $ sudo apt-get install -y npm 2. $ sudo ln -s /usr/bin/nodejs /usr/bin/node 3. $ sudo npm install -g less
在安装时一定要注意系统提示的消息,如果安装不成功则需要重新执行安装命令。
安装Odoo的使用文档介绍,Odoo提供了三种安装方式,因为本书主要是讲解开发,所以这里采用源码安装的方式直接从git上下载安装,这样既便于参考源码也便于使用git更新版本。可使用如下命令下载Odoo11版本源码:
1. $ git clone https://github.com/odoo/odoo.git odoo11 -b 11.0 --depth=1
如果要安装其他版本(比如Odoo12),则直接修改上面–b后的数值参数即可。
这样便可以将Odoo11的源码下载进odoo11的文件夹内。注意下载过程中的提示信息,如果超时报错则可以换时间再尝试,下载的文件一定要完整。
2.1.3 安装Odoo依赖包及PostgreSQL
因为Odoo11已经完全支持Python3,所以这里需要安装Python3依赖的pip3:
1. $ sudo apt-get install -y python3-pip
然后,安装如下依赖包:
1. $ sudo pip3 install Babel decorator docutils ebaysdk feedparser gevent greenlet html2text Jinja2 lxml Mako MarkupSafe mock num2words ofxparse passlib Pillow psutil psycogreen psycopg2 pydot pyparsing PyPDF2 pyserial python-dateutil python-openid pytz pyusb PyYAML qrcode reportlab requests six suds-jurko vatnumber vobject Werkzeug XlsxWriter xlwt xlrd
注意提示的信息,一定要确保都安装成功。
安装完这些依赖包之后,下面开始安装PostgreSQL:
1. $ sudo apt-get install -y postgresql
然后,进入postgres命令窗口并创建数据库用户odoo:
1. $ sudo su - postgres 2. 3. >createuser --createdb --username postgres --no-createrole --no-superuser --pwprompt odoo 4. >Enter password for new role: ***** 5. >Enter it again:***** 6. 7. >exit
安装中文字体和报表打印需要的wkhtmltopdf:
1. $ sudo apt-get install ttf-wqy-zenhei -y 2. $ sudo apt-get install ttf-wqy-microhei -y 3. $ wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/ 0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb 4. $ sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
前两步是安装中文字体,第三步是下载wkhtmltopdf,第四步是安装wkhtmltopdf。在执行第四步的时候很可能会提示缺少依赖包,根据提示的信息使用命令sudo apt-get-f install进行安装即可。
2.1.4 启动Odoo服务
以前版本的Odoo只支持Python2.7,不过从11.0版本起Odoo开始支持Python3.5及更高版本,而且就作者的实际应用经验来看,对Python3.5的支持确实是一个非常好的改进,本书的代码书写主要以Python3.5为主,如果使用Python2.7则会进行特别说明。如果读者使用的是Odoo12版本,那么也可以完全支持本书的示例代码,而且对Python3.7的支持也非常好。总体来看,对于Odoo的二次开发而言,Odoo11和Odoo12的差别并不大,都是基于Python3。
不过,Ubuntu自14.0版本开始就同时安装了Python2和Python3,我们在使用的时候,需要确定所用的是Python3.5,可以在使用前先将Python3.5(Ubuntu16默认已安装)设为默认的Python版本,然后启动Odoo服务:
1. $ ./odoo-bin
接下来就可以通过浏览器查看Odoo的前端页面,验证登录情况。
默认情况下,Odoo实例使用的是8069端口,因此我们访问时浏览器的地址应该是http://<server-address>:8069,第一次访问时页面会进入提示创建数据库的界面,如图2-1所示。
图2-1 创建数据库界面
我们可以在界面上创建数据库,不过作为开发人员,我们需要使用多个数据库,所以从命令行创建会更加方便,接下来我们就来介绍Odoo数据库的使用。
[1] <server-address> 对应你的服务器ip,如果是本机,则可以使用127.0.0.1。
2.2 在Windows上安装Odoo
为了便于开发和调试,我们往往会将开发的工程部署在本地,虽然可以使用远程调试在Ubuntu系统上直接进行开发,但考虑到多人协作以及全文搜索等功能的实现,一般还是会在Windows系统上安装Odoo。本节就来介绍一下,如何在Windows上安装Odoo。
2.2.1 准备工作
因为前面已经详细介绍了Odoo在Ubuntu上面的安装操作,所以本节将会简单介绍Odoo在Windows上的安装,而不会提供详细的图文。首先我们要做以下几项准备。
1)Python安装,官网下载地址为https://www.python.org/,安装步骤直接选择下一步即可,不过需要注意环境变量的路径。
2)Node.js安装,从https://nodejs.org/en/上下载后直接安装。
3)PyCharm安装,下载地址为https://www.jetbrains.com。当然也可以使用其他的IDE,不过作者觉得PyCharm是Python开发的一个不错的IDE。
4)PostgreSQL数据库安装,下载地址为https://www.postgresql.org/,安装过程中直接选择下一步即可,不过需要注意密码与端口号。
5)在git上下载Odoo源码,具体可以参考2.1节的方法。
2.2.2 环境配置
这些准备工作完成以后,下面就来进行一些环境的配置。
1)进入Odoo源码目录下安装虚拟环境virtualenv:
1. pip install virtualenv
2)创建虚拟环境,进入刚安装的虚拟环境目录并执行:
1. virtualenv.exe venv
3)激活虚拟环境,进入虚拟环境的文件夹路径后执行:
1. venv\Scripts\activate
4)将Odoo下载包内的requirement.txt复制到虚拟环境内,并安装依赖包:
1. pip install -r requirements.txt -i https://pypi.doubanio.com/simple
5)配置config,具体请参考2.1节的方法。
6)最后,在IDE内配置Python使用的解释器,将project interpreter设定为刚刚安装的虚拟环境内的python.exe,如图2-2所示。
这样,我们就可以在PyCharm内运行Odoo了。
图2-2 PyCharm内配置Python解释器
2.3 使用和创建Odoo数据库
2.3.1 创建Odoo数据库
先在命令窗口中用Ctrl+C停止Odoo服务,然后回到命令提示符界面。
使用-d参数重新启动Odoo服务:
1. $ ~/odoo11/odoo-bin -d testdb
注意
自Odoo9.0开始,数据库会自动创建参数中出现的新数据库,而不需要单独创建。
在启动的时候,我们可以看到窗口的提示信息,需要将testdb数据库初始化,这个过程需要等待一分钟甚至更长时间。默认情况下将会使用演示数据来初始化数据库,这些演示数据可以方便我们从业务层面了解系统的用法,在图2-1创建数据库的界面中,我们可以看到下面有一个“加载演示数据”(Load demonstration data)的复选框。我们可以通过命令行创建数据库,如果不想要演示数据,则请添加--without-demo=all参数。
访问地址http://<server-address>:8069,这时,我们所看到的界面是一个登录界面,可以使用admin/admin账号进行登录,如图2-3所示的是登录后看到的最简洁的Odoo界面。
图2-3 Odoo应用界面
注意
虽然作为开发人员,我们推荐使用命令行方式,但通过页面创建数据库也是完全可以的。
2.3.2 语言选择
Odoo是多语言的,我们可以在自己的账号设置中选择需要的语言,比如这里选择简体中文,如图2-4所示。
图2-4 Odoo语言设置界面
下面再来看看我们的Odoo界面,已经变成中文的了,如图2-5所示。
图2-5 Odoo汉语界面效果
此处,你可以选择自己需要的模块进行安装,具体请参考2.5节。
管理Odoo数据库
在介绍完数据库的创建之后,下面就对Odoo数据库的管理进行专门的介绍。虽然Odoo11及以上版本都完全可以根据设置的参数自动化创建数据库,但如果我们想要新建数据库的话,就需要退出当前的用户,进入到登录界面,如图2-6所示。
图2-6 Odoo登录界面
点击上方选择按钮就可以进入数据库的管理界面。数据库管理界面可以新建、备份或删除数据库,如图2-7所示。
图2-7 Odoo数据库管理界面
2.4 服务器配置
Odoo服务支持的参数非常多,可以使用--help参数来查看:
1. $ ~/odoo11/odoo-bin --help
首先,我们来看一下这些参数是如何保存在配置文件中的,以避免每次都在命令行键入。
2.4.1 Odoo服务器配置文件
在默认情况下,Odoo使用.odoorc文件来保存配置参数。在Ubuntu系统中,该文件存储于/home/odoo/路径下,Windows系统中则是与可执行文件在同一路径下。
注意
较老的版本(包括OpenERP)中是使用.openerp-serverrc作为配置文件的,Odoo是向后兼容的,但此处还是优先使用.odoorc文件。
为了更方便非root用户远程登录使用,我们可以在Ubuntu中修改一下.odoorc文件的路径,由用户的home路径修改到/etc下面:
1. $ sudo mkdir /etc/odoo 2. $ sudo cp /home/odoo/.odoorc /etc/odoo/odoo.conf 3. $ sudo chown -R odoo /etc/odoo
可以看到,上述命令不仅复制了.odoorc,还将其改名为odoo.conf,这是根据个人的项目习惯来修改的,而且也便于与系统原始文件进行区分,读者可以取一个自己习惯的其他文件名。
然后,我们通过vi编辑器进入配置文件,可以看到有很多可配置的参数,一些重要的参数具体解释如下。
·addons_path:使用逗号(,)分隔扩展路径,会在路径中寻找模块,从左至右阅读,最左侧拥有最高的优先级。
·admin_passwd:是master的主控密码,可用于访问Web客户端数据库管理。建议设置一个安全性足够强的密码,设置为False会使此功能失效。
·db_user:数据库实例,在服务器启动序列期间进行初始化。
·dbfilter:用于筛选可访问的数据库,它是Pythoninterpreted正则表达式,用于不让用户选择数据库,以及使未验证的URL能够正常工作,它应该以^dbname$格式进行设置,例如dbfilter=^odoo-prod$。它支持%h和%d占位符,可用来作为HTTP请求的主机名和子域名。
·logfile:Odoo服务日志写入的地方。系统的服务日志通常位于/var/log中,若留空,或者设置为False,则日志会以标准方式进行输出。
·logrotate=True:表示按天存放日志。
·proxy_mode:当使用反向代理时,应将其设为True。
·without_demo:在生产环境中应将其设为True,这样新的数据库中就不会再有演示数据。
·workers:其值为启用的处理器数量。
·xmlrpc_port:服务监听的端口号。默认使用8069。
·data_dir:会话数据和附件存储的位置,应记得备份它。
·xmlrpc-interface:设置监听的地址。默认值会监听所有端口0.0.0.0,在使用反向代理时,可以设置为127.0.0.1,目的是只对本地请求响应。
可以通过以上参数来进行服务器的相关配置,下面是配置服务器日志记录文件的示例:
1. $ sudo mkdir /var/log/odoo 2. $ sudo chown odoo /var/log/odoo 3. $ sudo vi /etc/odoo/odoo.conf 4. 5. [options] 6. 7. logfile = /var/log/odoo/odoo.log 8. logrotate = True
通过上面的配置,日志就记录在/var/log/odoo文件内了。
2.4.2 远程开发
在项目中,我们的服务一般运行在服务器或者云上,而非本地,而且很多项目为了方便通常把开发机也放在远程位置,这就需要我们能够进行远程开发。
我们自然也可以选择成熟的SSH等工具来登录服务器,然后进行开发,但是那样可用的编辑工具就比较简单了,需要非常好的编程习惯和较高的编程水平,不过更多的人还是习惯在IDE(集成开发环境)内进行编程,接下来我们将介绍如何使用IDE远程开发。
因为Odoo是用Python语言开发的,所以对于IDE的选择,我们推荐使用PyCharm开发环境,因为其对Python的支持非常好。
PyCharm是支持远程开发的,我们只需要进行如下的简单设置:菜单Tools→Deployment→Configuration…,就可以看到如图2-8所示的界面。
图2-8 PyCharm远程配置界面
在上面的配置窗口中,将Type设置为SFTP,地址设置为输入服务器地址,端口使用SSH默认的22,路径设置为Odoo安装所在的路径。这样设置之后,就可以在本地打开远程的工程了。
2.5 安装模块
已经安装好的Odoo相当于一个ERP系统的平台,但是还不具备直接使用的能力,因为企业的业务多种多样,所以需要根据自己的业务特点选择需要的模块进行安装,应用菜单内已有的模块直接安装即可,没有的模块则需要我们单独下载或自行开发后安装。
2.5.1 配置模块插件路径
如果需要安装一个安装时没有的(也就是当前在应用内搜索不到的)模块,那么需要先找到该模块的包,然后复制到odoo11/addons/路径下,最后重启就可以看到新复制过来的模块了。不过,最好不要那样做,因为我们采用的是源码安装方式,也就是说我们在addons路径下的包与GitHub上的包是一样的,后续还可以更新。如果我们将第三方或者自开发的模块安装在这里,那么会导致整个工程的后续难以运维。
一般的做法是单独配置一个或多个路径提供给自开发或第三方模块使用。比如新建一个my-modules路径,然后配置到odoo.conf文件内,命令如下:
1. $ vi /etc/odoo/odoo.conf 2. 3. [options] 4. addons_path = /home/odoo11/odoo/addons,/home/odoo11/addons,/home/odoo11/my-modules
在参数addons_path上增加刚刚创建的路径就可以了,如果有多个则用逗号隔开。
注意
因为在前面作者复制了.odoorc文件并改名为odoo.conf,所以请读者在使用时根据自己的实际情况进行操作,也可以直接使用.odoorc文件。
然后就可以在my-modules路径下创建自己需要的模块了,当然将第三方的模块复制过来也是可以的。
2.5.2 更新应用列表
对于这些新的模块,我们需要先更新应用列表才可以进行模块插件的安装。现在在系统内是找不到“更新应用”这个功能的,因为我们还没有激活开发者模式,关于开发者模式更具体的介绍请参考3.3节,本节主要介绍操作。
我们从前端页面进入设置界面,然后点击右下角的激活开发者模式按钮,如图2-9所示。
然后,我们可以在应用页面的左侧,看到更新应用列表,如图2-10所示。
图2-9 “激活开发者模式”所在界面
图2-10 “更新应用列表”界面
点击该按钮后,系统会重新加载配置文件,这时我们可以在上方的搜索框内搜索自己的新模块进行安装。
2.6 总结
本章主要介绍了如何在Ubuntu系统上通过git以源码的方式安装Odoo,如何进行数据库的相关操作,以及如何进行常用的配置(如日志、anddons路径配置等)。
目前我们应该可以运行自己的Odoo实例,熟悉数据库的基本操作,并且知道如何安装一个模块。
在接下来的章节中,我们会快速地浏览一遍Odoo,查看其主要的架构并进行简单的系统配置应用。