引言

在进入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 sourcecode

$ ./odoo/setup/setup_dev.py setup_deps# Installs Odoo system dependencies

$ ./odoo/setup/setup_dev.py setup_pg# Installs PostgreSQL & db superuser for unixuser

最后,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开发从业水平整体大幅度提高。

《Odoo开发指南》精选分享—第1章-开始使用Odoo开发(1)的更多相关文章

  1. 开发指南专题十四:JEECG微云高速开发平台MiniDao 介绍

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhangdaiscott/article/details/27068645   开发指南专题十四:J ...

  2. 移动应用安全开发指南(Android)--完结篇(http://www.bubuko.com/infodetail-577312.html)

    1.认证和授权 概述 认证是用来证明用户身份合法性的过程,授权是用来证明用户可以合法地做哪些事的过程,这两个过程一般是在服务器端执行的,但也有的APP出于性能提升或用户体验等原因,将其做在客户端完成, ...

  3. 腾讯云安全:开发者必看|Android 8.0 新特性及开发指南

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 背景介绍 谷歌2017 I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 A ...

  4. [翻译]现代java开发指南 第三部分

    现代java开发指南 第三部分 第三部分:Web开发 第一部分,第二部分,第三部分 =========================== 欢迎来到现代 Java 开发指南第三部分.在第一部分中,我们 ...

  5. 开发者必看|Android 8.0 新特性及开发指南

    背景介绍 谷歌2017 I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 Android 系统,今年为 Android 8.0.谷歌在今年3 月21日发布 Andro ...

  6. Delphi for iOS开发指南(3):创建一个FireMonkey iOS应用程序

    http://cache.baiducontent.com/c?m=9d78d513d9d431a94f9d92697d60c015134381132ba1d0020fa48449e3732b4b50 ...

  7. 移动应用安全开发指南(Android)--完结篇

    如果IE显示格式不正常,请使用chrome浏览器 1.认证和授权 概述 认证是用来证明用户身份合法性的过程,授权是用来证明用户可以合法地做哪些事的过程,这两个过程一般是在服务器端执行的,但也有的APP ...

  8. 移动IM开发指南3:如何优化登录模块

    <移动IM开发指南>系列文章将会介绍一个IM APP的方方面面,包括技术选型.登陆优化等.此外,本文作者会结合他在网易云信多年iOS IM SDK开发的经验,深度分析实际开发中的各种常见问 ...

  9. 移动IM开发指南2:心跳指令详解

    <移动IM开发指南>系列文章将会介绍一个IM APP的方方面面,包括技术选型.登陆优化等.此外,本文作者会结合他在网易云信多年iOS IM SDK开发的经验,深度分析实际开发中的各种常见问 ...

随机推荐

  1. RabbitMQ in Action (1): Understanding messaging

    1. Consumers and producers Producers create messages and publish (send) them to a broker server (Rab ...

  2. FFmpeg 结构体学习(七): AVIOContext 分析

    在上文FFmpeg 结构体学习(六): AVCodecContext 分析我们学习了AVCodec结构体的相关内容.本文,我们将讲述一下AVIOContext. AVIOContext是FFMPEG管 ...

  3. Java线程池核心原理剖析

    在系统开发时,我们经常会遇到“池”的概念.使用池一种以空间换时间的做法,通常在内存中事先保存一系列整装待命的对象,以供后期供其他对象随时调用.常见的池有:数据库连接池,socket连接池,线程池等.今 ...

  4. JS数组slice()和splice()的区别

    以前还是纯小白的时候,总会搞混JS数组的 slice() 和 splice() 方法.因为这2个方法名字太像了,就差一个字母,语法也有类似之处.    现在久了没用,有时候也会忘记,所以做一个总结来区 ...

  5. [Swift]LeetCode86. 分隔链表 | Partition List

    Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...

  6. [Swift]LeetCode450. 删除二叉搜索树中的节点 | Delete Node in a BST

    Given a root node reference of a BST and a key, delete the node with the given key in the BST. Retur ...

  7. [Swift]LeetCode632. 最小区间 | Smallest Range

    You have k lists of sorted integers in ascending order. Find the smallest range that includes at lea ...

  8. 机器学习入门 - Google机器学习速成课程 - 笔记汇总

    机器学习入门 - Google机器学习速成课程 https://www.cnblogs.com/anliven/p/6107783.html MLCC简介 前提条件和准备工作 完成课程的下一步 机器学 ...

  9. MyBatis 处理关系运算符

    MyBatis mapper文件是xml文件,使用关系运算符需要进行转义. 关系运算符 转义后字符 < < <= <= > > > >=

  10. 用sklearn封装的kmeans库

    由于需要海量的进行聚类,所以将 k-means 算法自我封装成一个方便利用的库,可以直接调用得到最优的 k值 和 中心点: #!/usr/bin/python3.4 # -*- coding: utf ...