当前位置: 首页 > article >正文

OpenEuler学习笔记(二十三):在OpenEuler上部署开源MES系统

在这里插入图片描述

在OpenEuler上部署小企业开源MES(制造执行系统,Manufacturing Execution System)是一个非常有价值的项目,可以帮助企业实现生产过程的数字化管理。以下是基于开源MES系统(如 Odoo MESOpenMES)的部署步骤。
在这里插入图片描述


1. 环境准备

1.1 系统要求
  • 操作系统:OpenEuler 20.03 LTS 或更高版本。
  • 硬件:建议至少4核CPU、8GB内存、50GB存储。
  • 网络:确保服务器可以访问互联网。
1.2 更新系统

确保系统是最新的:

sudo dnf update -y
1.3 安装基础工具

安装必要的工具和依赖:

sudo dnf install -y git wget curl

2. 安装依赖

MES系统通常需要数据库(如PostgreSQL)、Python环境和Web服务器(如Nginx)。

2.1 安装Python 3

OpenEuler默认可能已经安装了Python 3,如果没有,可以手动安装:

sudo dnf install -y python3 python3-pip
2.2 安装PostgreSQL

MES系统通常使用PostgreSQL作为数据库后端:

sudo dnf install -y postgresql-server postgresql-contrib

初始化PostgreSQL并启动服务:

sudo postgresql-setup --initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql

创建MES数据库用户:

sudo -u postgres createuser --createdb --username postgres --no-createrole --no-superuser --pwprompt mesuser
2.3 安装其他依赖

安装MES系统所需的系统依赖:

sudo dnf install -y libxslt-devel libxml2-devel libjpeg-devel libopenjp2-7-devel zlib-devel libpq-devel

3. 选择开源MES系统

以下是两个常见的开源MES系统:

  1. Odoo MES:基于Odoo的MES模块,适合中小企业。
  2. OpenMES:一个轻量级的开源MES系统。

以下以 Odoo MES 为例进行部署。


4. 部署Odoo MES

4.1 下载Odoo源码

从GitHub下载Odoo源码:

git clone https://github.com/odoo/odoo.git --depth 1 --branch 16.0 --single-branch /opt/odoo
4.2 创建虚拟环境

为Odoo创建一个Python虚拟环境:

python3 -m venv /opt/odoo/venv
source /opt/odoo/venv/bin/activate
4.3 安装Python依赖

在虚拟环境中安装Odoo所需的Python包:

pip install -r /opt/odoo/requirements.txt
4.4 配置Odoo

创建Odoo配置文件:

sudo mkdir /etc/odoo
sudo nano /etc/odoo/odoo.conf

在配置文件中添加以下内容:

[options]
; 数据库配置
db_host = localhost
db_port = 5432
db_user = mesuser
db_password = your_password
db_name = mesdb; Odoo服务配置
addons_path = /opt/odoo/addons
data_dir = /var/lib/odoo
logfile = /var/log/odoo/odoo.log
log_level = info; HTTP服务配置
http_port = 8069
4.5 创建日志和数据目录

创建Odoo日志和数据目录并设置权限:

sudo mkdir /var/log/odoo
sudo mkdir /var/lib/odoo
sudo chown -R odoo:odoo /var/log/odoo /var/lib/odoo
4.6 创建系统服务

创建Systemd服务文件:

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

添加以下内容:

[Unit]
Description=Odoo
After=postgresql.service[Service]
Type=simple
User=odoo
Group=odoo
ExecStart=/opt/odoo/venv/bin/python3 /opt/odoo/odoo-bin -c /etc/odoo/odoo.conf
Restart=on-failure[Install]
WantedBy=multi-user.target

启动并启用Odoo服务:

sudo systemctl daemon-reload
sudo systemctl start odoo
sudo systemctl enable odoo

5. 安装MES模块

  1. 访问Odoo的Web界面:
    http://<your-server-ip>:8069
    
  2. 创建数据库并登录。
  3. 在应用商店中搜索并安装 MES 模块。

6. 配置MES系统

根据企业的生产流程配置MES模块:

  • 定义生产线和工作中心。
  • 配置生产订单和工单。
  • 设置物料清单(BOM)和工艺路线。
  • 集成条码扫描或RFID设备(可选)。

7. 优化与维护

7.1 配置Nginx反向代理(可选)

使用Nginx作为反向代理,提供HTTPS支持:

sudo dnf install -y nginx
sudo nano /etc/nginx/conf.d/odoo.conf

添加以下内容:

server {listen 80;server_name your_domain.com;location / {proxy_pass http://127.0.0.1:8069;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

重启Nginx:

sudo systemctl restart nginx
7.2 定期备份

定期备份数据库和Odoo数据目录:

sudo -u postgres pg_dump mesdb > /backup/mesdb_$(date +%F).sql
sudo tar -czvf /backup/odoo_data_$(date +%F).tar.gz /var/lib/odoo

8. 常见问题排查

  • 数据库连接失败:检查PostgreSQL服务是否运行,以及odoo.conf中的数据库配置是否正确。
  • 权限问题:确保Odoo用户对相关目录有读写权限。
  • 日志查看:查看/var/log/odoo/odoo.log以获取错误信息。

总结

通过以上步骤,你可以在OpenEuler上成功部署开源MES系统,为小企业提供生产管理支持。根据企业需求,你可以进一步扩展和优化系统,例如:

  • 集成企业现有系统(如ERP、SCADA)。
  • 配置自动化数据采集(如PLC、传感器)。
  • 扩展MES功能(如质量管理、设备维护)。

如果有更具体的需求或问题,可以进一步讨论!

相关文章:

OpenEuler学习笔记(二十三):在OpenEuler上部署开源MES系统

在OpenEuler上部署小企业开源MES&#xff08;制造执行系统&#xff0c;Manufacturing Execution System&#xff09;是一个非常有价值的项目&#xff0c;可以帮助企业实现生产过程的数字化管理。以下是基于开源MES系统&#xff08;如 Odoo MES 或 OpenMES&#xff09;的部署步骤…...

深入与浅出-Python爬虫逆向实战

一、什么是爬虫逆向&#xff1f; 爬虫逆向&#xff0c;简单来说&#xff0c;就是通过分析网页的前端和后端行为&#xff0c;找出数据的来源和获取方式&#xff0c;从而实现自动化抓取。很多时候&#xff0c;直接使用requests和BeautifulSoup可能无法获取到目标数据&#xff0c…...

ubuntu中如何在vscode的终端目录后显示(当前的git分支名) 实测有用

效果展示 配置过程&#xff1a; 在 Ubuntu 中&#xff0c;如果你想在 VS Code 的终端提示符后显示当前的 Git 分支名&#xff0c;可以通过修改 Shell 配置文件&#xff08;如 ~/.bashrc 或 ~/.zshrc&#xff09;来实现。以下是具体步骤&#xff1a; 1. 确定使用的 Shell 首…...

什么是自回归范式

Autoregressive Paradigm&#xff08;自回归范式&#xff09;是一种广泛应用于 序列数据建模 的方法&#xff0c;它在生成模型中发挥着重要作用。自回归范式的核心思想是 基于已知的历史信息&#xff08;或前一个状态&#xff09;&#xff0c;来预测下一个值。这种方法在 时间序…...

Jenkins 使用教程:从入门到精通

在软件开发的复杂流程中&#xff0c;持续集成与持续交付&#xff08;CI/CD&#xff09;是提升开发效率和保障软件质量的核心实践。Jenkins 作为一款备受欢迎的开源自动化服务器&#xff0c;在 CI/CD 流程中发挥着举足轻重的作用。本文将深入、详细地介绍 Jenkins 的使用方法&am…...

DeepSeek大模型的微调流程

DeepSeek大模型的微调流程通常包括以下几个步骤&#xff1a; 1. 环境准备 硬件&#xff1a;确保有足够的GPU资源&#xff0c;通常需要高性能GPU&#xff08;如NVIDIA A100、V100等&#xff09;。软件&#xff1a;安装必要的深度学习框架&#xff08;如PyTorch、TensorFlow&am…...

关于“i18n“在vue中的使用

关于"i18n"在vue中的使用 <!-- vue2中 --> <template><div>{{ $t("This campaign has expired.") }}}}</div> </template> <script> export default {created() {this.onLoading();},methods: {onLoading () {this.$…...

Android图片加载框架Coil,Kotlin

Android图片加载框架Coil&#xff0c;Kotlin implementation("io.coil-kt:coil:1.4.0") import android.os.Bundle import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope import coil.Coil i…...

从二叉树遍历深入理解BFS和DFS

1. 介绍 1.1 基础 BFS&#xff08;Breadth-First Search&#xff0c;广度优先搜索&#xff09;和 DFS&#xff08;Depth-First Search&#xff0c;深度优先搜索&#xff09;是两种常见的图和树的遍历算法。 BFS&#xff1a;从根节点&#xff08;或起始节点&#xff09;开始&am…...

强化学习之 PPO 算法:原理、实现与案例深度剖析

目录 一、引言二、PPO 算法原理2.1 策略梯度2.2 PPO 核心思想 三、PPO 算法公式推导3.1 重要性采样3.2 优势函数估计 四、PPO 算法代码实现&#xff08;以 Python 和 PyTorch 为例&#xff09;五、PPO 算法案例应用5.1 机器人控制5.2 自动驾驶 六、总结 一、引言 强化学习作为…...

Docker 部署 MongoDB | 国内阿里镜像

一、简易单机版 1、镜像拉取 docker pull registry.cn-hangzhou.aliyuncs.com/farerboy/mongo:8.0.5-rc1 2、运行镜像 docker run -it --name mongodb \ -e MONGO_INITDB_ROOT_USERNAMEmongoroot \ -e MONGO_INITDB_ROOT_PASSWORDmongoroot \ -v /wwwroot/opt/docker/mong…...

1.1 Spring Security 概述

Spring Security 概述 1. 什么是 Spring Security&#xff1f; Spring Security 是 Spring 生态中专注于应用安全的核心框架&#xff0c;为 Java 企业应用提供认证&#xff08;Authentication&#xff09;、授权&#xff08;Authorization&#xff09;以及安全攻击防护&#x…...

Kotlin协程详解——协程上下文

目录 一、上下文结构 get()获取元素 minusKey()删除元素 fold()元素遍历 plus()添加元素 CombinedContext Key 二、协程名称CoroutineName 三、上下文组合 四、协程作用域CoroutineScope 五、典型用例 协程的上下文&#xff0c;它包含用户定义的一些数据集合&#x…...

手写一个C++ Android Binder服务及源码分析

手写一个C Android Binder服务及源码分析 前言一、 基于C语言编写Android Binder跨进程通信Demo总结及改进二、C语言编写自己的Binder服务Demo1. binder服务demo功能介绍2. binder服务demo代码结构图3. binder服务demo代码实现3.1 IHelloService.h代码实现3.2 BnHelloService.c…...

今日AI和商界事件(2025-02-10)

今日AI领域的相关事件包括&#xff1a; 一、技术与应用进展 全球首例AI驱动供应链攻击曝光&#xff1a; 网络安全机构披露一起新型供应链攻击事件&#xff0c;攻击者利用AI技术生成高度仿真的供应商邮件&#xff0c;诱骗目标企业员工下载恶意软件&#xff0c;进而渗透至大众汽…...

全面理解-c++中的异常处理机制

C 的异常处理机制是一种用于处理程序运行时错误的结构化方法&#xff0c;通过分离正常逻辑与错误处理代码&#xff0c;提高代码的可读性和可维护性。以下是其核心组成部分和工作原理的详细说明&#xff1a; 1. 异常处理的三大关键字 1.1 try 块 作用&#xff1a;包裹可能抛出异…...

Deep Dive into LLMs like ChatGPT - by Andrej Karpathy

https://www.youtube.com/watch?v7xTGNNLPyMIhttps://www.youtube.com/watch?v7xTGNNLPyMIDeep Dive into LLMs like ChatGPT - by Andrej Karpathy_哔哩哔哩_bilibilihttps://www.youtube.com/watch?v7xTGNNLPyMI转载自Andrej Karpathy Youtube ChannelThis is a general a…...

react实例与总结(一)

目录 一、简单认识 1.1、特点 1.2、JSX语法规则 1.3、函数组件和类式组件 1.4、类组件三大属性state、props、refs 1.4.1、state 1.4.2、props 1.4.3、refs 1.5、事件处理 1.6、收集表单数据—非受控组件和受控组件 1.7、高阶函数—函数柯里化 1.8、生命周期—新旧…...

51单片机(国信长天)矩阵键盘的基本操作

在CT107D单片机综合训练平台上&#xff0c;首先将J5处的跳帽接到1~2引脚&#xff0c;使按键S4~S19按键组成4X4的矩阵键盘。在扫描按键的过程中&#xff0c;发现有按键触发信号后(不做去抖动)&#xff0c;待按键松开后&#xff0c;在数码管的第一位显示相应的数字:从左至右&…...

在cursor/vscode中使用godot C#进行游戏开发

要在 Visual Studio Code(VS Code)中启动 C#Godot 项目&#xff0c;可以按照以下步骤进行配置&#xff1a; 1.安装必要的工具 • 安装 Visual Studio Code&#xff1a;确保你已经安装了最新版本的 VS Code。 • 安装.NET SDK&#xff1a;下载并安装.NET 7.x SDK&#xff08;…...

机器学习怎么学习,还有算法基本的源代码

1.scikit-learn官方文档&#xff0c;中文版/英文版 中文社区&#xff1a;https://scikit-learn.org.cn/ 中文官方文档&#xff1a;https://scikitlearn.com.cn/ 英文版&#xff1a;https://scikit-learn.org/stable/&#xff08;翻墙&#xff09; 2.菜鸟教程&#xff1a;AI&a…...

STM32 RTC亚秒

rtc时钟功能实现&#xff1a;rtc模块在stm32内部&#xff0c;由电池或者主电源供电。如下图&#xff0c;需注意实现时仅需设置一次初始化。 1、stm32cubemx 代码生成界面设置&#xff0c;仅需开启时钟源和激活日历功能。 2、生成的代码,需要对时钟进行初始化&#xff0c;仅需…...

【Linux】深入理解linux权限

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;Linux 目录 前言 一、权限是什么 二、用户和身份角色 三、文件属性 1. 文件属性表示 2. 文件类型 3. 文件的权限属性 四、修改文件的权限属性和角色 1. …...

json格式,curl命令,及轻量化处理工具

一. JSON格式 JSON&#xff08;JavaScript Object Notation&#xff09; 是一种轻量级的数据交换格式。它基于一个子集的JavaScript编程语言&#xff0c;使用人类易于阅读的文本格式来存储和表示数据。尽管名字中有“JavaScript”&#xff0c;但JSON是语言无关的&#xff0c;几…...

DeepSeek模拟阿里面试——java面向对象

作为一位阿里高级Java程序员面试官&#xff0c;我会围绕Java面向对象编程的核心概念、实际应用以及设计原则设计问题&#xff0c;以全面评估候选人的理解和应用能力。以下是可能的面试问题&#xff1a; 基本概念与实现方式 请解释Java中封装、继承、多态的基本概念及其在Java中…...

web直播弹幕抓取分析 signature

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言 最近遇到太多难点了卡了很久&am…...

【04】RUST特性

文章目录 隐藏shadowing所有权ownership堆区&栈区所有权规则变量&数据Copy Trait与Drop TraitCopy TraitDrop Trait移动克隆函数参数与返回值的所有权参数引用可变引用悬垂引用slice生命周期隐藏shadowing 有点像同名覆盖 let mut guess = String::new();let guess: u3…...

PL/SQL块结构

目录 一、声明部分&#xff08;declare&#xff09; 二、执行部分&#xff08;begin end&#xff09; 三、异常处理部分 &#xff08;Exception end&#xff09; 四、代码示例 PL/SQL&#xff08;Procedural Language/Structured Query Language&#xff09;是Oracle数据库…...

基于 FFmpeg 和 OpenGLES 的 iOS 视频预览和录制技术方案设计

基于 FFmpeg 和 OpenGLES 的 iOS 视频预览和录制技术方案设计 在 iOS 上实现一个基于 FFmpeg 和 OpenGLES 的视频预览和录制功能,需要结合 FFmpeg 的强大音视频处理能力和 OpenGLES 的高效图形渲染能力。以下是一个完整的技术方案设计,包含项目的架构设计、模块划分、技术选…...

【LeetCode 刷题】贪心算法(4)-区间问题

此博客为《代码随想录》贪心算法章节的学习笔记&#xff0c;主要内容为贪心算法区间问题的相关题目解析。 文章目录 55. 跳跃游戏45. 跳跃游戏 II452. 用最少数量的箭引爆气球435. 无重叠区间763. 划分字母区间56. 合并区间 55. 跳跃游戏 题目链接 class Solution:def canJu…...