在 CentOS 7 上安装 Odoo 12

2023-10-29

Odoo 是世界上最受欢迎的一体化商业软件。它提供一系列业务应用程序,包括 CRM、网站、电子商务、计费、会计、制造、仓库、项目管理、库存等等,所有这些都无缝集成。

在本教程中,我们将向您展示如何安装Odoo12 来自 CentOS 7 计算机上 Python 虚拟环境内的源代码。

先决条件#

确保您以以下身份登录具有 sudo 权限的用户在继续本教程之前。

安装 Python 3.6 和 Odoo 依赖项#

We will 安装Python 3.6来自 Software Collections (SCL) 存储库的软件包。

通过启用 SCL,您将可以访问核心存储库中不可用的较新版本的编程语言和服务。

使用以下命令启用 EPEL 和 SCL 存储库:

sudo yum install epel-release centos-release-scl

启用存储库后,安装 Python 3.6 构建 Odoo 依赖项所需的所有工具:

sudo yum install rh-python36 git gcc wget nodejs-less libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel

在安装过程中,系统将提示您接受 GPG 密钥。

创建 Odoo 用户#

使用主目录创建新的系统用户和组/opt/odoo将运行 Odoo 服务:

sudo useradd -m -U -r -d /opt/odoo12 -s /bin/bash odoo12
您可以随意命名用户,只需确保创建一个具有相同名称的 PostgreSQL 用户即可。

安装和配置 PostgreSQL#

在撰写本文时,CentOS 存储库提供的最新 PostgreSQL 版本是 PostgreSQL 版本 9.2,Odoo 尚未正式支持该版本。

我们将从官方 PostgreSQL 存储库安装 PostgreSQL 10。

首先启用 PostgreSQL 存储库:

sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm

安装PostgreSQL服务器并创建一个新的 PostgreSQL 数据库集群:

sudo yum install postgresql10-server postgresql10-develsudo /usr/pgsql-10/bin/postgresql-10-setup initdb

安装完成后,启用并启动 PostgreSQL 服务:

sudo systemctl enable postgresql-10sudo systemctl start postgresql-10

创建一个与之前创建的系统用户同名的 PostgreSQL 用户(在我们的例子中)odoo12:

sudo su - postgres -c "createuser -s odoo12"

安装Wkhtmltopdf#

The wkhtmltox软件包提供了一组开源命令行工具,可以将 HTML 渲染为 PDF 和各种图像格式。为了打印 PDF 报告,您需要wkhtmltopdf工具。 Odoo 的推荐版本是0.12.1CentOS 7 官方存储库中不提供该文件。

下载推荐版本如下wget命令 :

wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.1/wkhtmltox-0.12.1_linux-centos7-amd64.rpm

下载完成后,安装rpm通过键入以下内容进行打包:

sudo yum localinstall wkhtmltox-0.12.1_linux-centos7-amd64.rpm

安装和配置 Odoo 12#

在开始安装过程之前,请确保您切换到用户“odoo12”:

sudo su - odoo12

首先从 Odoo GitHub 存储库克隆 Odoo 12 源代码:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 12.0 /opt/odoo12/odoo

启用软件集合,以便我们可以访问 python 3.6 二进制文件:

scl enable rh-python36 bash

使用以下命令为 Odoo 安装创建新的 Python 虚拟环境:

cd /opt/odoo12python3 -m venv venv

激活环境:

source venv/bin/activate

安装所有必需的 Python 模块:

pip3 install -r odoo/requirements.txt
如果在安装过程中遇到任何编译错误,请确保安装了列出的所有必需依赖项Install Python 3.6 and Odoo Dependencies部分。

安装完成后,使用以下命令停用环境:

deactivate

为自定义插件创建一个新目录:

mkdir /opt/odoo12/odoo-custom-addons

切换回您的 sudo 用户:

exit

接下来,打开你的文本编辑器并创建以下配置文件:

sudo nano /etc/odoo12.conf
/etc/odoo12.conf
[options]
; This is the password that allows database operations:
admin_passwd = superadmin_passwd
db_host = False
db_port = False
db_user = odoo12
db_password = False
addons_path = /opt/odoo12/odoo/addons, /opt/odoo12/odoo-custom-addons

保存并关闭文件。

不要忘记更改superadmin_passwd到更安全的东西。

创建一个systemd单元文件#

为了将 Odoo 作为服务运行,我们将创建一个单元文件。

打开文本编辑器并创建一个名为odoo12.service在 - 的里面/etc/systemd/system/目录:

sudo nano /etc/systemd/system/odoo12.service

粘贴以下内容:

/etc/systemd/system/odoo12.service
[Unit]
Description=Odoo12
Requires=postgresql-10.service
After=network.target postgresql-10.service

[Service]
Type=simple
SyslogIdentifier=odoo12
PermissionsStartOnly=true
User=odoo12
Group=odoo12
ExecStart=/usr/bin/scl enable rh-python36 -- /opt/odoo12/venv/bin/python3 /opt/odoo12/odoo/odoo-bin -c /etc/odoo12.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

保存文件并关闭编辑器。

通知 Systemd 我们创建了一个新的单元文件:

sudo systemctl daemon-reload

通过执行以下命令启动并启用 Odoo 服务:

sudo systemctl enable odoo12sudo systemctl start odoo12

您可以使用以下命令检查服务状态:

sudo systemctl status odoo12
● odoo12.service - Odoo12
   Loaded: loaded (/etc/systemd/system/odoo12.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2018-10-30 16:35:09 UTC; 6s ago
 Main PID: 24649 (scl)
   CGroup: /system.slice/odoo12.service
           ├─24649 /usr/bin/scl enable rh-python36 -- /opt/odoo12/venv/bin/python3 /opt/odoo12/odoo/odoo-bin -c /etc/odoo12.conf
           ├─24650 /bin/bash /var/tmp/scldyaa9h
           └─24653 /opt/odoo12/venv/bin/python3 /opt/odoo12/odoo/odoo-bin -c /etc/odoo12.conf

如果您想查看 Odoo 服务记录的消息,可以使用以下命令:

sudo journalctl -u odoo12

测试安装#

打开浏览器并输入:http://<your_domain_or_IP_address>:8069

假设安装成功,将出现类似以下的屏幕:

如果您无法访问该页面,那么可能是您的firewall正在阻塞端口8069.

使用以下命令打开必要的端口:

sudo firewall-cmd --permanent --zone=public --add-port=8069/tcpsudo firewall-cmd --reload

结论#

本教程引导您在 Python 虚拟环境中的 CentOS 7 上安装 Odoo 12。

您可能还想查看我们的教程如何创建 Odoo 数据库的自动每日备份 .

如果您遇到任何问题,请在下面发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 CentOS 7 上安装 Odoo 12 的相关文章

  • Pandas 中的索引如何工作?

    我是Python新手 这似乎是一个需要问的基本问题 但我真的很想了解这里发生了什么 import numpy as np import pandas as pd tempdata np random random 5 myseries on
  • (Python) 我应该使用参数还是将其设为全局参数? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有许多共享相同参数的函数 他们将多次输入和输出该参数 例如 a foo a fun a a bar a def fun a return a
  • 如何使用Python从pdf文件中删除页面?

    我有一些超过 500 页的 pdf 文件 但每个文件中只需要几页 有必要保留文档的标题页 我确切地知道程序应该删除的页数 如何使用安装在 MS Visual Studio 上的 Python 2 7 环境来完成此操作 尝试使用PyPDF2
  • 从 Rails 4 启用 Amazon RDS 中的 hstore 扩展

    我有一个 Rails 4 应用程序 它使用 ActiveRecord 与 PostgreSQL 9 3 数据库交互 该应用程序利用hstorePostgreSQL 中的扩展 用于在单个数据库字段中存储键值对 因此 Rails 会自动检测我对
  • IP保持不变

    我正在尝试通过代码连接到 Tor 并更改我的身份 到目前为止我得到的结果是我连接成功但无法更改我的身份 这是我的代码 import socket import socks import httplib def connectTor sock
  • 为什么tcl/tkinter只支持BMP字符?

    我正在尝试在基于 tkinter 和 tcl 构建的 gui 中查询和显示 utf 8 编码字符 但是 我发现 tkinter 无法显示 4 字节字符 即大于 U FFFF 的 unicode 代码点 为什么会这样呢 实现非 BMP 字符对
  • 如何在pytorch中动态索引张量?

    例如 我有一个张量 tensor torch rand 12 512 768 我得到了一个索引列表 说它是 0 2 3 400 5 32 7 8 321 107 100 511 我希望从给定索引列表的维度 2 上的 512 个元素中选择 1
  • Python 的贝叶斯垃圾邮件过滤库

    我正在寻找一个可以进行贝叶斯垃圾邮件过滤的 Python 库 我查看了 SpamBayes 和 OpenBayes 但两者似乎都没有维护 我可能是错的 谁能推荐一个好的 Python 或 Clojure Common Lisp 甚至 Rub
  • 我怎样才能用Python中的语音识别来检测一个单词

    我知道如何用 Python 检测语音 但这个问题更具体 如何让 Python 只监听一个单词 然后如果 Python 可以识别该单词则返回 True 我知道 我可以让 Python 一直监听 然后做出类似的东西 伪代码 while True
  • Panda如何将行分组到不同的时间桶中?

    我有一个带有名为时间戳的日期时间类型列的数据帧 我想根据时间部分的时间戳将数据帧拆分为多个数据帧 每个数据帧包含按其值模 x 分钟进行值的行 其中 x 是变量 请注意e and f不按原来的顺序 以 10 分钟为模 我希望所有时间都以3在一
  • lxml 属性需要完整的命名空间

    下面的代码使用 lxml python 3 3 从 Excel 2003 XML 工作簿中读取表格 该代码工作正常 但是为了通过 get 方法访问 Data 元素的 Type 属性 我需要使用键 urn schemas microsoft
  • 从 DST 感知日期时间对象在 Dataframe 中创建 pandas DatetimeIndex

    我从在线 API 收集了一系列数据点 每个数据点都有一个值和一个 ISO 时间戳 不幸的是我需要循环它们 所以我将它们存储在临时的dict然后从中创建一个 pandas 数据帧并将索引设置为时间戳列 简化示例 from datetime i
  • 从 Python 调试 C 库 (ctypes)

    我有一个使用 ctypes 和 C 共享库 dll 文件 的 Python 程序 作为 IDE 我使用 Eclipse 其中将开发两个项目 C 共享库和使用它的 python 程序 我的想法是 当我在调试模式下启动Python程序时 我可以
  • 如何为 matplotlib 中已绘制的线设置标签?

    在我的代码中我已经执行了 ax plot x y b 并且需要能够在事后设置相应行的标签 以达到与我相同的效果 ax plot x y b label lbl 有没有办法在 Matplotlib 中做到这一点 如果你抓住了line2D创建对
  • AWS Cognito 作为网站的 Django 身份验证后端

    我对 Cognito 的理解是 它可以用来代替本地 Django 管理数据库来对网站的用户进行身份验证 然而 我没有找到任何带有通过 Cognito 登录屏幕的基本 Hello World 应用程序的详细示例 如果有人可以发布一篇文章 逐步
  • 在 Python 中将主题标头添加到 server.sendmail()

    我正在编写一个 python 脚本来从终端发送电子邮件 在我目前发送的邮件中 它没有主题 我们如何为此电子邮件添加主题 我当前的代码 import smtplib msg From email protected cdn cgi l ema
  • 需要FTP文件而不存储解释器文件通过Python保存在本地

    我正在尝试做一些图像解释器并尝试将它们直接存储到 FTP 服务器 但我的步骤是从本地文件夹上传图像 然后将其转换为蒙版图像 然后它将获得最终输出 但是在我的蒙版和最终输出场景中 临时图像被保存在本地 这是我不想要的 但如果不将图像存储在本地
  • Django MySQL 创建表时出错

    我有一个类似的问题这张票 https code djangoproject com ticket 18256在 Django 论坛上提出 我该如何解决这个问题 我还扩展了一个用户模型 如下所示 class Profile models Mo
  • Django ALLOWED_HOSTS 与 CORS(django-cors-headers)

    ALLOWED HOSTS 和 CORS 之间有什么区别 如果我定义了 ALLOWED HOSTS 我还需要定义 CORS 吗 我没有使用 django 模板 我也有可能动态定义这两个吗 我认为没有 我使用 django 作为后端 并在不同
  • Bokeh 中的相关图问题

    当我通过绘制数据时rect 来自 Bokeh 我在可视化中得到了一条由水平块组成的单行 数据打印正确 据我所知格式正确 type 验证它们都是列表 谁能诊断这个吗 如果问题不在这里 那么我可以附加更多代码 如果需要 在 Ubuntu 14

随机推荐

  • Qt之输入对话框(QInputDialog)的相关参数(Qt::InputMethodHints)和(QLineEdit::EchoMode)学习

    本文参考文章 Qt 编程 输入对话框 QInputDialog 的使用 学习笔记 前言 QInputDialog类提供了一个简单的便捷对话框 可以从用户那里获取用户录入的单个值 当前Qt提供了五个静态接口函数用于获取常用的数据类型参数 单文
  • 【华为OD机试真题2023 JS】上班之路

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 上班之路 知识点BFS搜索广搜 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 Jungle生活在美丽的蓝鲸城 大马路都是方方正正 但是每天马路的封闭情况都不一样
  • 在 Bash 中获取明天的日期:实用演练

    在系统管理和 shell 脚本世界中 操作日期和时间的能力至关重要 无论是用于计划任务 日志轮换还是简单地为文件添加时间戳 了解如何在脚本中使用日期都可以节省大量时间和精力 Bash Bourne Again Shell 为此提供了一组强大
  • 使用 PHP 和 Docker 设置开发环境

    本地开发环境对于 PHP 开发人员测试和调试应用程序至关重要 传统上 开发人员会依赖 XAMPP MAMP 或 WAMP 等工具 它们为本地开发提供成熟的 LAMP 堆栈 Linux Apache MySQL PHP 然而 随着应用程序变得
  • 如何使用 Iptables 在 Linux 中阻止 IP 地址

    Iptables 是 Linux 操作系统中内置的强大且灵活的防火墙工具 它用于建立 管理和配置IP数据包过滤规则表 Iptables 的常见用途之一是阻止或限制来自特定 IP 地址或 IP 地址范围的访问 本文提供了有关如何使用 Ipta
  • 如何在 Python 中创建和读取列表

    Python 是一种流行的编程语言 具有广泛的应用范围 包括数据科学 Web 开发和自动化 Python 中最基本 最重要的数据结构之一是列表 列表是值或项目的集合 可以是任何数据类型 包括字符串 整数 浮点数 甚至其他列表 在本文中 我们
  • 如何在 MacOS 上安装 Golang

    Go 是 Google 于 2009 年开发的一种编译型编程语言 由于其性能 可读性和简单性 它在软件开发行业中广受欢迎 Go 是一种通用编程语言 它的代码片段感觉很自然 与 C 或 Java 等其他语言相比 它可以用更少的代码行编写 Go
  • 什么是 Apache Prefork、Worker 和 Event MPM(多处理模块)

    Apache 是最流行的 Linux Web 服务器 大多数Linux系统管理员的学习阶段都是从Apache httpd Web服务器开始的 甚至我在学习过程中也使用过Apache Web服务器 在初始级别 系统管理员使用 Apache 他
  • 如何在 Debian 8 上安装 Ansible (Jessie)

    Ansible 是一种自动化工具 用于从单台计算机管理多个远程主机 它为您提供了针对大量远程主机的轻松配置 例如 您在多台机器上执行相同的任务 Ansible 为您提供了自动执行这些任务的选项 本教程将帮助您在 Debian 8 Jessi
  • Ubuntu 和 Debian Linux 中的 12 个 Apt 命令示例

    apt 命令是 Linux 操作系统中最强大 最通用的工具之一 它为用户提供了一个功能强大且易于使用的包管理系统 可用于轻松管理和安装软件 使用 apt 命令 用户可以快速轻松地从系统中搜索 安装 升级和卸载软件应用程序 本指南详细概述了
  • Linux 中的排序命令及实例

    The sort Linux 中的命令是 GNU Coreutils 包的一部分 此命令用于按升序 降序对指定文件或标准输入中的文本行进行排序 排序后的输出可以写入文件或显示在标准输出上 这 sort 命令是一个简单而强大的工具 可用于各种
  • 使用.nvmrc指定节点版本

    您可以使用特定的 Node js 版本锁定您的应用程序 这将帮助您隔离 Node js 应用程序的依赖关系 因此您可以在任何系统上快速安装所需的软件包 在本教程中 您将学习使用 nvmrc 文件指定 node js 版本的简单过程 使用 n
  • 如何在 Apache 中启用过期标头

    Apache 是一种高度灵活 功能强大且开源的 HTTP 服务器软件 广泛用于托管网站 它的功能之一是操作响应中的 HTTP 标头 该功能可以显着提高网站的性能 在这些操作中 启用 过期标头 是管理网站缓存行为的有效技术 本质上 过期标头告
  • 如何在 Ubuntu 20.04 上安装 Zoom

    Zoom 应用程序是当今最流行的应用程序之一 Zoom 云会议应用程序通过互联网上的实时消息传递和内容共享提供简化的视频会议 Zoom 客户端允许您无需登录应用程序即可加入会议 要开始新会议 您需要登录该应用程序 访问zoom us创建帐户
  • 如何在 Linux 中重命名文件和目录

    重命名文件是您经常需要在 Linux 系统上执行的最基本任务之一 您可以使用 GUI 文件管理器或通过命令行终端重命名文件 重命名单个文件很容易 但一次重命名多个文件可能是一个挑战 特别是对于 Linux 新手来说 在本教程中 我们将向您展
  • Linux 中的 Tr 命令及示例

    tr是 Linux 和 Unix 系统中的一个命令行实用程序 用于翻译 删除和压缩标准输入中的字符 并将结果写入标准输出 The tr命令可以执行删除重复字符 将大写转换为小写以及基本字符替换和删除等操作 通常 它通过管道与其他命令结合使用
  • Python 列表反转

    在 Python 中使用列表时 有时可能需要反转列表的元素 反转列表意味着列表的第一个元素成为最后一个元素 第二个元素成为倒数第二个元素 最后一个元素成为第一个元素 依此类推 在 Python 中 有几种不同的方法可以反转列表 具体取决于您
  • 如何在 CentOS 7 上安装 Java

    Java 是世界上最流行的编程语言之一 用于构建不同类型的应用程序和系统 本教程介绍如何在 CentOS 7 上安装 Java 的各种版本和实现 我们将向您展示如何安装 OpenJDK 以及 Oracle Java 先决条件 在继续本教程之
  • 如何在Ubuntu 18.04上配置MySQL主从复制

    MySQL 复制是一个允许数据从一台数据库服务器自动复制到一台或多台服务器的过程 MySQL 支持多种复制拓扑 其中主 从拓扑是最著名的拓扑之一 其中一台数据库服务器充当主服务器 而一台或多台服务器充当从服务器 默认情况下 复制是异步的 主
  • 在 CentOS 7 上安装 Odoo 12

    Odoo 是世界上最受欢迎的一体化商业软件 它提供一系列业务应用程序 包括 CRM 网站 电子商务 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 在本教程中 我们将向您展示如何安装Odoo12 来自 CentOS 7 计算