专栏首页云计算教程系列在Ubuntu 16.04上安装Odoo 10
原创

在Ubuntu 16.04上安装Odoo 10

介绍

Odoo(以前称为OpenERP)是一个开源的业务应用程序套件,包括客户关系管理(CRM),销售渠道,项目管理,制造,发票,会计,电子商务和库存工具,仅举几例。Odoo团队创建了34个主要应用程序,社区成员开发了超过5,500个应用程序,涵盖了广泛的业务需求。

部署后,Odoo允许管理员安装任何模块组合,并根据业务需求配置/定制它,范围从小型商店到企业级公司。

本教程介绍了如何使用Git源代码在一小时内安装和配置Odoo,以便于升级,维护和自定义。

准备

  • 一台已经设置好可以使用sudo命令的非root账号的Ubuntu 16.04服务器。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • 更新您的软件包:
sudo apt update && sudo apt upgrade

为Odoo 配置UFW防火墙

在安装Odoo之前,我们将设置一些基本的防火墙规则,以允许SSH连接和访问Odoo服务器。在此示例中,我们将使用Odoo的默认端口8069,但这可能是您稍后在配置文件中指定的任何端口。如果您计划运行任何其他服务,也可以在此处添加其端口。

sudo ufw allow ssh
sudo ufw allow 8069/tcp
sudo ufw enable

安装PostgreSQL数据库和服务器依赖项

安装PostgreSQL数据库,Python和其他必要的服务器库:

sudo apt install git python-pip postgresql postgresql-server-dev-9.5 python-all-dev python-dev python-setuptools libxml2-dev libxslt1-dev libevent-dev libsasl2-dev libldap2-dev pkg-config libtiff5-dev libjpeg8-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev liblcms2-utils libwebp-dev tcl8.6-dev tk8.6-dev python-tk libyaml-dev fontconfig

创建PostgreSQL用户

  • 切换到postgres用户:
sudo su - postgres
  • 为数据库用户设置一个强密码并将其记录在一个安全的位置,您将在以下部分中需要它:
createuser odoo -U postgres -dRSP

CTRL + D退出postgres用户会话。

注意 如果要在同一个腾讯云CVM服务器上运行多个Odoo实例,请记住检查PostgreSQL客户端配置文件(截至本教程发布之日,其位于/etc/postgresql/9.5/main/pg_hba.conf中)并根据您的需要进行修改。

创建一个Odoo用户

为了将Odoo与其他服务分开,请创建一个新的Odoo系统用户来运行其进程:

sudo adduser --system --home=/opt/odoo --group odoo

注意 如果您在同一个腾讯云CVM服务器上运行多个Odoo版本,则可能需要为每个实例使用不同的用户和目录。

配置日志

对于记录的,Ubuntu 16.04默认使用systemdjournald。考虑到这一点,您可以通过多种方式设置Odoo 10日志。我们将在本教程中考虑两种情况。您选择的选项取决于您的特定需求:

  • 要同时使用日志单独的Odoo日志文件,请创建相应的目录:
sudo mkdir /var/log/odoo

要仅使用journald用于日志记录,您不需要创建任何目录。

安装Odoo

将Odoo文件克隆到您的服务器上:

sudo git clone https://www.github.com/odoo/odoo --depth 1 --branch 10.0 --single-branch /opt/odoo

注意 使用git提供了极大的灵活性。当有新的升级时,请拉出新分支。您甚至可以在生产版本旁边安装不同的版本,只需更改目标目录和--branch X.x标志即可。在升级之前,请记住对数据库和自定义文件进行完整备份。想要了解什么是git,请参考这篇Git使用教程

为Odoo应用程序安装依赖项

在准备好使用Odoo应用程序之前,您需要安装一些依赖项。我们将使用Python包管理器,pip代替apt以保证您安装正确的版本。我们也不会使用Ubuntu的Wkhtmltopdfnode-Less的打包版本。

请务必按照本节中的步骤作为有限的非root用户(而非odoo用户)。

安装Python依赖项

安装所需的Python库:

sudo pip install -r /opt/odoo/doc/requirements.txt
sudo pip install -r /opt/odoo/requirements.txt

这些命令使用随Odoo安装提供的requirements.txt文件,以确保您获得应用程序所依赖的软件包的正确版本。

通过Node.js和npm安装更少的CSS

  • 从nodesource 下载并运行nodejs安装脚本:
sudo curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
  • 现在我们的存储库列表已使用apt更新安装nodejs
sudo apt install -y nodejs
  • 安装较新版本的Less via npm,Node.js包管理器:
sudo npm install -g less less-plugin-clean-css

安装稳定的Wkhtmltopdf版本

  • 切换到临时目录:
cd /tmp
  • 下载适用于Odoo服务器的wkhtmltopdf的推荐版本。在这个例子中,我们使用0.12.1。请参阅Odoo存储库以获取最新的兼容版本列表:
sudo wget https://downloads.wkhtmltopdf.org/0.12/0.12.1/wkhtmltox-0.12.1_linux-trusty-amd64.deb
  • 使用dpkg命令安装包:
sudo dpkg -i wkhtmltox-0.12.1_linux-trusty-amd64.deb
  • 要确保wkhtmltopdf正常运行,请将二进制文件复制到可执行文件路径中的某个位置:
sudo cp /usr/local/bin/wkhtmltopdf /usr/bin
sudo cp /usr/local/bin/wkhtmltoimage /usr/bin

注意 虽然wkhtmltopdf版本0.12.2.4在Ubuntu官方16.04仓库可用,但是我们不建议从那里安装它,由于大量的依赖关系,包括:xservergstreamerlibcupswaylandqt5等等。项目页面上还没有正式的Xenial软件包,但是Ubuntu 14.04的Trusty软件包在本出版物中是兼容的。

Odoo服务器配置

  • 将包含的配置文件复制到更方便的位置,将其名称更改为 odoo-server.conf
sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server.conf
  • 接下来,修改配置文件。完整文件应与此类似,具体取决于您的部署需求:
[options]
admin_passwd = admin
db_host = False
db_port = False
db_user = odoo
db_password = FALSE
db_password = FALSE
addons_path = /opt/odoo/addons
;Uncomment the following line to enable a custom log
;logfile = /var/log/odoo/odoo-server.log
xmlrpc_port = 8069
  • admin_passwd = admin - 这是允许数据库操作的密码。一定要将admin更改为更安全的内容。
  • db_host = False - 除非您计划连接到其他数据库服务器地址,否则请保持此行不变。
  • db_port = False- Odoo使用PostgreSQL默认端口5432,只有在使用自定义PostgreSQL设置时才更改此设置。
  • db_user = odoo - PostgreSQL数据库用户的名称。在这种情况下,我们使用默认名称,但如果您在创建用户时使用了其他名称,请在此处替换。
  • db_password = FALSE- 更改FALSE为您之前创建的PostgreSQL密码。
  • addons_path =- 修改此行以阅读:addons_path = /opt/odoo/addons。如果您使用自定义模块,请添加</path/to/custom/modules>替换您自己的路径。
  • 包括日志文件的路径,并添加一个新行:logfile = /var/log/odoo/odoo-server.log。如果您打算仅使用journald用于记录,则可以跳过此行。
  • 或者,我们可以包含一个新行,指定用于连接的Odoo前端端口:xmlrpc_port = 8069。只有在计划在同一服务器上运行多个Odoo实例(或版本)时才有意义。对于正常安装,您可以跳过此行,并且此Odoo实例将默认连接到端口8069。 注意 如配置日志部分中所述,在Ubuntu 16.04中有很多Odoo日志记录选项。此配置文件假定除了自定义日志路径之外,您还将使用Ubuntu系统日志。

创建一个Odoo服务

创建一个名为systemd的单元,odoo-server以允许您的应用程序作为服务运行。在/lib/systemd/system/odoo-server.service中创建一个新文件并添加以下内容:

[Unit]
Description=Odoo Open Source ERP and CRM
Requires=postgresql.service
After=network.target postgresql.service
​
[Service]
Type=simple
PermissionsStartOnly=true
SyslogIdentifier=odoo-server
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo-bin --config=/etc/odoo-server.conf --addons-path=/opt/odoo/addons/
WorkingDirectory=/opt/odoo/
StandardOutput=journal+console
​
[Install]
WantedBy=multi-user.target

此文件中最相关的行是StandardOutput=journal+console。如上例所示,Odoo日志将完全由系统日志管理(“ 配置日志”部分中的选项2 )。如果需要单独的日志文件,请省略该行并进行配置相应的odoo-server.conf,指定日志文件的位置。请记住,journald将始终捕获主要的Odoo服务活动(服务启动,停止,重新启动,错误),使用单独的日志文件将仅排除日志“信息”消息,如Web服务器消息,呈现引擎等。

更改文件所有权和权限

  • 更改odoo-server服务权限和所有权,以便只有root可以写入,而odoo用户只能读取和执行它。
sudo chmod 755 /lib/systemd/system/odoo-server.service
sudo chown root: /lib/systemd/system/odoo-server.service
  • 由于odoo用户将运行该应用程序,因此相应地更改其所有权。
sudo chown -R odoo: /opt/odoo/
  • 如果您选择使用自定义日志,请将odoo用户也设置为日志目录的所有者(仅当您决定使用单独的日志文件时才适用):
sudo chown odoo:root /var/log/odoo
  • 最后,保护服务器配置文件。更改其所有权和权限,以便其他非root用户无法访问它:
sudo chown odoo: /etc/odoo-server.conf
sudo chmod 640 /etc/odoo-server.conf

测试服务器

  • 确认一切都按预期工作。首先,启动Odoo服务器:
sudo systemctl start odoo-server
  • 检查服务状态以确保其正在运行。这还包括期刊日志。您可以在下面的图片中看到示例输出:
sudo systemctl status odoo-server
  • 检查数据库日志以确保没有错误:
sudo journalctl -u postgresql
  • 验证服务器是否能够正常停止:
sudo systemctl stop odoo-server
  • 再次运行服务状态检查以确保没有错误:
sudo systemctl status odoo-server

您的输出应该类似于:

启用Odoo服务

  • 如果系统日志未指示任何问题,请启用odoo-server设备以启动和停止服务器:
sudo systemctl enable odoo-server
  • 登录腾讯云CVM服务器并重新启动您的腾讯云CVM服务器以查看是否所有内容都按预期工作。
  • 重新启动后,通过SSH登录并验证日记消息:
sudo journalctl -u odoo-server

输出应包含一条消息,指示Odoo已成功启动。

测试Odoo

  1. 打开一个新的浏览器窗口并访问以下地址: http://<your_domain_or_IP_address>:8069
  2. 如果一切正常,将出现类似于此的屏幕:
  1. 恭喜,现在您可以创建第一个数据库并开始使用Odoo 10应用程序了!

更新Odoo

在更新Odoo系统之前,您应该检查一切是否按预期工作,尤其是第三方模块。最安全的方法是使用测试环境,这只是一个单独的Odoo安装。

根据您的服务器资源,安全性问题和测试第二次安装的范围可以与生产实例一起或在其他位置(远程或本地)进行。出于本教程的目的,我们将使用与生产环境在同一服务器上运行的测试环境。

配置UFW防火墙

为了在生产的同时使用测试环境,我们需要使用不同的TCP端口进行服务器连接:

sudo ufw allow 8080/tcp

创建单独的数据库用户

一个独立的数据库用户没有必要像以前一样使用密码:

sudo su - postgres
createuser odoo-te -U postgres -dRS

CTRL + D退出postgres用户会话。

创建一个测试Odoo用户

使用与生产用户不同的odoo用户非常重要:

sudo adduser --system --home=/opt/odoo-te --group odoo-te

配置日志

对于测试环境,建议使用单独的日志文件:

sudo mkdir /var/log/odoo-te

安装Odoo测试环境

克隆与旧生产实例不同的更新的Odoo源:

sudo git clone https://www.github.com/odoo/odoo --depth 1 --branch 10.0 --single-branch /opt/odoo-te

测试环境配置

使用相同服务器的优点是已经满足所有依赖项。接下来是相应地配置服务器。

  1. 将原始配置文件从源复制到适当的位置: sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server-te.conf
  2. 修改配置文件。以前的安装有一些小的变化,包括包含logfile和指定的通信端口: [options] admin_passwd = admin db_host = False db_port = False db_user = odoo-te db_password = FALSE addons_path = /opt/odoo-te/addons logfile = /var/log/odoo-te/odoo-server-te.log xmlrpc_port = 8080 ​
  3. 为Odoo测试环境创建一个systemd单元。这允许您将其作为独立服务运行: [Unit] Description=Odoo Open Source ERP and CRM (Test Env) Requires=postgresql.service After=network.target postgresql.service [Service] Type=simple PermissionsStartOnly=true SyslogIdentifier=odoo-server-te User=odoo-te Group=odoo-te ExecStart=/opt/odoo-te/odoo-bin --config=/etc/odoo-server-te.conf --addons-path=/opt/odoo-te/addons/ WorkingDirectory=/opt/odoo-te/ [Install] WantedBy=multi-user.target ​

更改文件所有权和权限

设置测试环境的权限:

sudo chmod 755 /lib/systemd/system/odoo-server-te.service
sudo chown root: /lib/systemd/system/odoo-server-te.service
sudo chown -R odoo-te: /opt/odoo-te/
sudo chown odoo-te:root /var/log/odoo-te
sudo chown odoo-te: /etc/odoo-server-te.conf
sudo chmod 640 /etc/odoo-server-te.conf

检查您的测试环境

现在,您可以启动新的Odoo服务并验证错误的日志条目:

sudo systemctl start odoo-server-te
sudo systemctl status odoo-server-te
sudo journalctl -u postgresql
sudo cat /var/log/odoo-te/odoo-server-te.log

准备系统进行生产测试

此时,您有一个完全独立的Odoo安装。接下来的步骤将设置您的测试环境以复制生产环境。

  1. 使用Odoo图形界面备份生产数据库。在Web浏览器中切换到以下URL。这假设您使用的是默认端口8069: http://your_domain_or_IP_address:8069/web/database/manager
  1. 通过切换到下面的URL,启动odoo-server-te服务并使用Odoo图形界面恢复生产数据库。请注意,这次您将使用端口8080,因为测试环境正在运行: http://your_domain_or_IP_address:8080/web/database/manager
  1. 最后一步是将Odoo模块更新为更新的版本,这样做会重新启动服务并更新数据库条目,告诉系统应用更改: sudo service odoo-server-te restart -u all -d <production_database_name> 在此阶段,您可能会遇到模块中不兼容的更改所产生的错误。Odoo标准模块很少出现这种情况,但从第三方下载的模块并不少见。如果确实遇到错误,则需要检查导致它的模块的新版本,然后重新安装。
  2. 如果一切按预期进行,您可以启动负载测试模块“行为”测试(与代码不兼容的错误不同),以及您配置的任何其他测试。

更新您的生产系统

如果所有测试都通过,您可以更新生产安装。

  1. 从源代码下载新代码: cd /opt/odoo sudo git fetch origin 10.0
  2. 将更改应用于存储库: sudo git reset --hard origin/10.0
  3. 访问您的新系统: http://your_domain_or_IP_address:8069

如果您计划将Odoo 10用于您的业务,您可能希望配置SSL / TLS加密以启用与服务器的安全连接。自建服务器难免会遇到这样的问题,配置SSL很麻烦,虽然对一部分人来说这也是一种乐趣,但是如果您在生产环境使用,我还是建议您直接使用云关系型数据库,云关系型数据库让您在云中轻松部署、管理和扩展的关系型数据库,提供安全可靠、伸缩灵活的按需云数据库服务。腾讯云关系型数据库提供 MySQL、SQL Server、MariaDB、PostgreSQL 数据库引擎,并针对数据库引擎的性能进行了优化。云关系型数据库是一种高度可用的托管服务,提供容灾、备份、恢复、监控、迁移等数据库运维全套解决方案,可将您从耗时的数据库管理任务中解放出来,让您有更多时间专注于您的应用和业务。想要了解更多关于SSL证书的内容请前往腾讯云+社区学习更多知识。

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

Odoo用户文档

Odoo开发人员文档

欢迎您使用腾讯云免费的开发者专属在线实验平台进行试验。更多云计算教程,请前往腾讯云+社区学习。


参考文献:《Install Odoo 10 on Ubuntu 16.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在Ubuntu 14.04上使用Apache将www重定向到非www

    当你有你的网站或应用程序启动和运行一个域的背后,则是经常需要还允许用户通过简单的域名访问到它,并在WWW子域名。也就是说,他们应该可以使用或不使用“ www. ...

    你在哪里
  • 如何使用Python-GnuPG和Python 3验证代码和加密数据

    GnuPG包提供用于生成和存储加密密钥的完整解决方案。它还允许您加密和签名数据和通信。

    你在哪里
  • 如何在Ubuntu 14.04上将Symfony应用程序部署到生产环境中

    Symfony是一个用PHP编写的开源Web框架,适用于构建任何规模的项目。它提供了一个基于可重用组件的精心设计的结构,您可以在其上构建自己的PHP应用程序。

    你在哪里
  • 在Ubuntu 16.04上安装Odoo 11堆栈

    Odoo(以前称为OpenERP)是一个由10,000多个开源应用程序组成的自托管套件,可满足各种业务需求,包括CRM,电子商务,会计,库存,销售点和项目管理。...

    用户1196457
  • 近 400 万用户正在使用的开源 Odoo ERP 系统

    前天有个朋友私信问我,有没有推荐的 ERP 系统或者厂商。我当时心想:“市面上ERP不是有很多么?”。我也是这样回复的,不过据他回应到:“主要是价格太贵了......

    Jared.Tan
  • 论文阅读:对抗训练(Adversarial Training)

    对抗训练(adversarial training)是增强神经网络鲁棒性的重要方式。在对抗训练的过程中,样本会被混合一些微小的扰动(改变很小,但是很可能造成误分...

    朴素人工智能
  • Python实现局域网(Socket)通

    这学期课很多,加上学校就业办这边事情也不少,所以零散时间琢磨了很多天,开始想用进程的并发实现一个收,一个发,但ide无法实现同时print和input,所以暂时...

    py3study
  • 【实验楼-Python 科学计算】Numpy - 多维数组(下)

    矢量化是用 Python/Numpy 编写高效数值计算代码的关键,这意味着在程序中尽量选择使用矩阵或者向量进行运算,比如矩阵乘法等。

    统计学家
  • 巧用 Redis Hyperloglog,轻松统计 UV 数据

    如果你正在开发一个基于“事件”的应用程序,该应用程序可以处理来自不同用户的许多请求,那么你很大可能希望能够计算滑动窗口或指定时间范围内不同的用户操作。

    乔戈里
  • vue学习起步,vue环境安装

    vue安装的前提是安装了nodejs 安装淘宝镜像 npm install -g cnpm --registry=https://registry.npm.t...

    蓓蕾心晴

扫码关注云+社区

领取腾讯云代金券