在进入Odoo开发之前,我们需要建立我们的开发环境,并学习它的基本管理任务。
在本章中,我们将学习如何设置工作环境,在这里我们将构建我们的Odoo应用程序。我们将学习如何设置Debian或Ubuntu系统来托管开发服务器实例,以及如何从GitHub源代码中安装Odoo。然后,我们将学习如何设置与Samba的文件共享,这将允许我们从运行Windows或任何其他操作系统的工作站运行Odoo文件。
Odoo是使用Python编程语言构建的,它使用PostgreSQL数据库进行数据存储;这些是Odoo主机的两个主要需求。要从源代码运行Odoo,我们首先需要安装它依赖的Python库。然后可以从GitHub下载Odoo源代码。虽然我们可以下载ZIP文件或tarball,但我们会看到,如果我们使用Git版本控制应用程序获取源代码会更好;它也会帮助我们把它安装在我们的Odoo主机上。
为Odoo服务器设置一个主机
一个Debian / Ubuntu系统被推荐用于Odoo服务器。你仍然可以在你最喜欢的桌面系统中工作,无论是Windows、Mac还是Linux。
Odoo可以在各种操作系统上运行,那么为什么要以牺牲其他操作系统为代价来选择Debian呢?因为Debian被认为是Odoo团队的参考部署平台;它有最好的支持。如果我们使用Debian / Ubuntu,它将更容易找到帮助和额外的资源。
它也是大多数开发人员工作的平台,大多数部署都是在这个平台上进行的。因此,不可避免的是,Odoo开发人员将会对Debian / Ubuntu平台感到满意。即使你是Windows背景的,你也要对它有所了解,这一点很重要。
在本章中,您将学习如何在基于debianbased的系统上设置和处理Odoo,只使用命令行。对于那些有Windows系统的家庭,我们将介绍如何设置虚拟机来托管Odoo服务器。作为一个额外的奖励,您将在这里学到的技术也将允许您在云服务器中管理Odoo,在那里您唯一的访问将通过Secure Shell (SSH)来访问。
请记住,这些指示是为了建立一个新的发展系统。如果您想在现有的系统中尝试其中的一些,总是提前进行备份,以便在出现问题时恢复它。
为Debian主机提供的服务
如前所述,我们需要一个基于debian-based的Odoo服务器主机。如果这是您第一次使用Linux,您可能会注意到Ubuntu是基于debianbased的Linux发行版,所以它们非常相似。
Odoo可以保证使用当前稳定版本的Debian或Ubuntu。在写作的时候,这些是Debian 8“Jessie”和Ubuntu 16.04.1 LTS(Xenial Xerus)。这两环境都有Python 2.7,这是运行Odoo的必要条件。值得一提的是,Odoo并不支持Python 3,因此需要Python 2。
如果你已经在运行Ubuntu或另一个基于debian-based的发行版,你就可以设置;这也可以作为Odoo的主机。
对于Windows和Mac操作系统,安装Python、PostgreSQL和所有依赖项;接下来,直接从源程序运行Odoo。然而,这可能是一个挑战,所以我们的建议是使用运行Debian或Ubuntu服务器的虚拟机。您可以选择您喜欢的虚拟化软件,以在虚拟机中获得一个工作的Debian系统。
如果您需要一些指导,这里有一些关于虚拟化软件的建议。有几个选项,比如Microsoft hyper - v(在某些版本的Windows系统中可用)、Oracle VirtualBox和VMWare工作站播放器(Mac的VMWare Fusion)。VMWare工作站的球员可能是更容易使用,并且免费下载可以在https://my.vmware.com/web/vmware/downloads上找到。
对于使用的Linux映像,安装Ubuntu服务器要比Debian更加友好。如果您从Linux开始,我建议您尝试使用现成的映像。TurnKey Linux提供了多种格式的易于使用的预安装映像,包括ISO。ISO格式将与您所选择的任何虚拟化软件一起工作,即使是在您可能拥有的裸金属机器上。一个很好的选择可能是第三方LAPP镜像,包括Python和PostgreSQL,可以在http://www.turnkeylinux.org/lapp找到。
一旦安装并启动,您应该能够登录到命令行shell。
为Odoo创建一个用户帐户
如果您正在登录使用超级用户root帐户,那么您的第一个任务应该是创建一个正常的用户帐户来使用您的工作,因为它被认为是不好的工作实践作为root。特别是,如果您将其作为root来启动,那么Odoo服务器将拒绝运行。
如果您正在使用Ubuntu,那么您可能不需要这个,因为安装过程必须已经通过创建一个用户来指导您。
首先,确保安装sudo。我们的工作用户将需要它。如果作为root登录,执行以下命令:
# apt-get update && apt-get upgrade# 安装系统更新
# apt-get install sudo# 确保安装“sudo”
下一组命令将创建一个odoo用户:
# useradd -m -g sudo -s /bin/bash odoo# 创建一个具有sudo能力的“odoo”用户
# passwd odoo # 请求并为新用户设置密码
你可以将odoo转换为你想要的任何用户名。–m选项确保创建其主目录。–g sudo选项将它添加到sudoers列表中,以便它可以作为root运行命令。–s /bin/bash选项将默认的shell设置为bash,这比默认的sh要好。
现在我们可以作为新用户登录,并设置Odoo。
从源程序中安装Odoo
可以在nightly.odoo.com,上找到现成的Odoo软件包,如Windows(.exe)、Debian(.deb)、CentOS(.rpm)和源代码tarballs(.tar.gz)。
作为开发人员,我们希望直接从GitHub存储库中安装它们。这将使我们对版本和更新有更多的控制。
为了保持整洁,在我们的主目录home内建立一个 /odoo–dev子目录以便进行工作。
在整本书中,我们假设/odoo–dev 是您的Odoo服务器安装的目录。
首先,确保您已经登录为我们现在或在安装过程中创建的用户,而不是作为root用户。假设您的用户是odoo,请使用以下命令确认:
$ whoami odoo
$ echo $HOME
/home/odoo
现在我们可以使用这个脚本了。它向我们展示了如何将Odoo从源代码安装到Debian / Ubuntu系统中。
首先,安装基本的依赖项,以使我们开始:
$ sudo apt-get update && sudo apt-get upgrade#安装系统更新
$ sudo apt-get install git# 安装Git
$ sudo apt-get install npm# 安装NodeJs及其包管理器
$ sudo ln -s /usr/bin/nodejs /usr/bin/node# 调用节点运行nodejs
$ sudo npm install -g less less-plugin-clean-css#安装less编译器
从版本9.0开始,Odoo web客户端需要在系统中安装less CSS预处理器,以便正确地呈现web页面。要安装这个,我们需要节点。Node.js和npm。
接下来,我们需要获得Odoo源代码并安装它的所有依赖项。Odoo源代码包括一个实用脚本,在odoo/setup/目录中,帮助我们在Debian / Ubuntu系统中安装所需的依赖项:
$ mkdir ~/odoo-dev# Create a directory to work in
$ cd ~/odoo-dev# Go into our work directory
$ git clone https://github.com/odoo/odoo.git -b 10.0 --depth=1# Get Odoo source code
$ ./odoo/setup/setup_dev.py setup_deps# Installs Odoo system dependencies
$ ./odoo/setup/setup_dev.py setup_pg# Installs PostgreSQL & db superuser for unix user
最后,Odoo应该准备好使用。~符号是我们的主目录(例如,/home/odoo)的快捷方式。git –b lO.O选项告诉Git明确下载Odoo的10.0分支。在写的时候,这是多余的,因为10.0是默认的分支;然而,这可能会改变,因此它可能使脚本成为未来的证明。––depth=l选项告诉Git只下载最后一个版本,而不是完整的变更历史,使下载变得更小更快。
要启动一个Odoo服务器实例,只需运行:
$ ~/odoo-dev/odoo/odoo-bin
在默认情况下,Odoo实例侦听端口8069,因此如果我们将浏览器指向http://<server–address>:8O69,我们将到达这些实例。当我们第一次访问它时,它向我们展示了一个创建新数据库的助手,如下面的截图所示:
作为开发人员,我们需要使用几个数据库,因此从命令行创建它们更方便,因此我们将学习如何做到这一点。现在在终端按Ctrl + C停止Odoo服务器并返回命令提示符。
初始化一个新的Odoo数据库
为了能够创建一个新的数据库,您的用户必须是一个PostgreSQL超级用户。下面的命令为当前的Unix用户创建一个PostgreSQL超级用户:
$ sudo createuser --superuser $(whoami)
要创建一个新的数据库,请使用createdb命令。让我们创建一个demo数据库:
$ createdb demo
要使用Odoo数据模式初始化该数据库,我们应该使用–d选项在空数据库上运行Odoo:
$ ~/odoo-dev/odoo/odoo-bin -d demo
这将花费几分钟来初始化一个demo数据库,它将以一个信息日志消息结束,Modules loaded。
注意,它可能不是最后一个日志消息,它可以在最后三到四行。这样,服务器就可以准备好侦听客户端请求了。
默认情况下,这将用演示数据初始化数据库,这通常对开发数据库非常有用。若要初始化没有演示数据的数据库––without–demo–data=all。
现在打开http://<server–name>:8069,你的浏览器会被显示在登录屏幕上。如果您不知道您的服务器名称,在终端中键入hostname命令,以便找到它或ifconfig命令来查找IP地址。
如果您在虚拟机中托管Odoo,您可能需要设置一些网络配置,以便能够从主机系统访问它。最简单的解决方案是将虚拟机网络类型从NAT改为桥接。这样,客户虚拟机就不会共享主机IP地址,而是拥有自己的IP地址。也可以使用NAT,但这需要您配置端口转发,这样您的系统就知道一些端口,比如8069,应该由虚拟机来处理。如果您遇到麻烦,希望这些细节将帮助您在您所选择的虚拟化软件的文档中找到相关信息。
管理数据库
我们已经了解了如何从命令行创建和初始化新的Odoo数据库。有更多的命令值得管理数据库。
我们已经知道如何使用createdb命令创建空的数据库,但是它也可以通过复制现有的数据库创建一个新的数据库––template选项
确保您的Odoo实例被停止,并且您没有打开的其他连接我们刚刚创建的demo数据库,然后运行这个:
$ createdb --template=demo demo-test
实际上,每次创建数据库时,都会使用模板。如果没有指定,则使用预定义的templatel。
要列出系统中的现有数据库,可以使用–l选项使用PostgreSQL psql实用程序:
$ psql -l
运行它将列出我们迄今为止创建的两个数据库: demo和demo–test。该列表还将显示每个数据库中使用的编码。默认值是UTF-8,这是Odoo数据库所需的编码。
要删除不再需要的数据库(或者需要重新创建)来使用dropdb命令:
$ dropdb demo-test
现在您知道了使用数据库的基础知识。了解更多关于PostgreSQL,请参考官方文档:http://www.postgresql.org/docs/.
删除数据库命令将不可挽回地破坏您的数据。使用此命令时要小心,并且在使用此命令之前,总是要对重要的数据库进行备份。
更多内容请访问开源智造(OSCG)官网-【资源下载】中获取《Odoo开发指南》进行详细阅读,这里非常感谢老杨为我们Odoo社区所做出的重大贡献努力,使得整体Odoo开发从业水平大幅度提高。