Windows 10 / 11 / Server
在本指南中,您将在Windows 10 / 11 / Server服务器上部署MyEMS。
前提
本指南介绍如何在Windows 10, Windows 11 及 Windows server(2022)上安装MyEMS。硬件需求取决于所选数据库和连接到系统的设备数量。要在一台电脑上运行MyEMS、MySQL和python3.10, 3.11, 或 3.12中任一版本, 至少需要8GB的内存。
克隆源代码:
以管理员身份运行,Windows PowerShell
cd C:\
git clone https://gitee.com/myems/myems
安装python10
https://www.python.org/downloads/windows/
python安装包3.10.11 版本 64-bit是64位系统
Download Windows installer (64-bit)
运行python安装包,进行安装
双击:python-3.10.11-amd64.exe
勾选“Add py... to PATH”,并点击“自定义安装(customize installation)”
确保所有选项勾选,尤其是pip,后期装库要用;点击“Next”
勾选第一项,建议更改python安装位置,然后点击“install”
注:默认安装在: C:\Program Files\Python310 请修改为C:\Python310
安装完成,点击“close”
在命令提示符输入python,回车出现python版本号即安装成功
第1步 数据库
参考 Database
以下是下载并安装 MySQL 数据库的详细步骤(以 MySQL 8.0 为例,社区版免费)。
1.1、下载 MySQL 安装包
- 打开官网:https://dev.mysql.com/downloads/mysql/
- 选择 Windows 平台,通常有两个选项:
- mysql-installer-web-community(在线安装,体积小)
- mysql-installer-community(离线完整包,推荐)
- 点击 Download,如需登录可跳过(No thanks, just start my download)
1.2、安装 MySQL
- 双击运行下载的安装程序(可能需要管理员权限)
- 选择安装类型(推荐选 Developer Default 或 Custom)
- Developer Default:安装 MySQL Server、Workbench、Shell 等常用工具
- Custom:可自定义组件
- 点击 Next,安装程序会自动检查依赖并下载缺失组件
- 点击 Execute 开始安装,完成后点击 Next
1.3、配置 MySQL Server
-
Type and Networking
- Config Type:选 Development Computer
- Port:默认 3306(可不改)
- 点击 Next
-
Authentication Method
- 推荐选择 Use Strong Password Encryption(新版加密)
- 或选第二个(兼容老版本)
- 点击 Next
-
Accounts and Roles
- 设置 root 密码(务必记住)
- 可选添加普通用户(可跳过)
- 点击 Next
-
Windows Service
- 勾选 Configure MySQL Server as a Windows Service
- Service Name:MySQL80(默认)
- 勾选 Start the MySQL Server at System Startup
- 点击 Next
-
Apply Configuration
- 点击 Execute 执行配置
- 所有步骤显示绿色对勾即成功
- 点击 Finish
1.4、完成安装
- 继续点击 Next,直到出现 Finish
- 勾选 Start MySQL Workbench after Setup(可选)
- 点击 Finish 退出安装向导
1.5、验证安装
方法1:命令行测试
- 按
Win + R,输入cmd回车 - 输入:
mysql -u root -p - 输入你设置的 root 密码
- 显示
mysql>提示符即成功
方法2:检查服务
- 按
Win + R,输入services.msc - 找到
MySQL80,状态应为“正在运行”
1.6、常用初始设置(可选)
登录 MySQL 后执行:
-- 查看数据库
show databases;
-- 创建新数据库
create database mydb;
-- 创建远程访问用户(可选)
create user 'myems'@'%' identified by '密码';
grant all privileges on *.* to 'myems'@'%';
flush privileges;
常见问题
| 问题 | 解决方法 |
|---|---|
| 端口3306被占用 | 安装时改为其他端口(如3307) |
| 忘记root密码 | 需跳过授权表启动MySQL,较复杂 |
| 无法启动服务 | 检查端口是否被占用,或查看Windows事件日志 |
需要我帮你解决安装中遇到的某个具体问题吗?
第2步 myems-api
- 安装 myems-api 服务:
# 1. 以管理员身份打开新的 CMD 窗口
# 2. 设置环境变量
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1
# 3. 进入项目目录
cd C:\myems\myems-api
# 4. 重新安装所有包
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt
C:\Python310\python.exe -m pip install --no-cache-dir --no-user waitress
根据example.env创建.env文件,并根据需要编辑.env:
copy .\example.env .env
用文本编辑工具打开并编辑 C:\myems\myems-api\.env
修改数据信息
安装 Windows服务:
完整安装步骤(以管理员身份运行 CMD)
cmd
# 1. 彻底删除所有旧服务
sc delete MyEMSAPI
# 2. 创建日志目录
mkdir C:\myems\myems-api\logs 2>nul
# 3. 下载 WinSW(如果还没下载)
https://github.com/winsw/winsw/releases
WinSW-x64.exe 重命名为 MyEMSAPI.exe
cd C:\myems\myems-api
# 4. 创建配置文件
创建 `C:\myems\myems-api\MyEMSAPI.xml`(用 notepad 或以下命令):
notepad C:\myems\myems-api\MyEMSAPI.xml
复制以下内容到记事本:
<service>
<id>MyEMSAPI</id>
<name>MyEMS API Service</name>
<description>MyEMS API Service</description>
<executable>C:\Python310\python.exe</executable>
<arguments>-m waitress --listen=0.0.0.0:8000 app:api</arguments>
<workingdirectory>C:\myems\myems-api</workingdirectory>
<logmode>rotate</logmode>
<logpath>C:\myems\myems-api\logs</logpath>
<onfailure action="restart" delay="10 sec"/>
<stoptimeout>15 sec</stoptimeout>
<startmode>Automatic</startmode>
</service>
保存并关闭记事本。
# 5. 安装服务
MyEMSAPI.exe install
# 6. 启动服务
MyEMSAPI.exe start
# 7. 查看状态
MyEMSAPI.exe status
# 8. 测试服务
curl http://localhost:8000
# 9. 如出问题查看日志
C:\myems\myems-api\logs
第3步 myems-admin
- 安装 NGINX 服务器: https://nginx.org/en/download.html
后台启用nginx服务:
start /b nginx.exe
- 配置 NGINX
cd C:\Program Files\nginx-1.29.1\conf
用文本编辑工具打开并编辑nginx.conf
In the 'http' section, add some directives:
http {
client_header_timeout 600;
client_max_body_size 512M;
gzip on;
gzip_min_length 512;
gzip_proxied any;
gzip_types *;
gzip_vary on;
proxy_buffering off;
...
}
编写如下指令, 如果myems-api服务运行在其它服务器上则用实际的地址替换 myems-api 默认地址 http://127.0.0.1:8000/
server {
listen 8001;
server_name myems-admin;
location / {
root C:\myems-admin;
index index.html index.htm;
}
## To avoid CORS issue, use Nginx to proxy myems-api to path /api
## Add another location /api in 'server'
## Replace the default myems-api url http://127.0.0.1:8000/ with actual url if the myems-api servcie hosted on a different server
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
- 安装 myems-admin : 如果服务器无法连接到互联网,请压缩myems/myems-admin文件夹并将其上传到服务器,
- 然后将其解压缩到 c:\myems-admin
检查配置文件,必要时进行更改:
c:\myems-admins\app\api.js
“upload”文件夹用于用户上传的文件。升级myems-admin时,请勿删除/移动/覆盖“upload”文件夹。
C:\myems-admin\upload
重启nginx服务:
cd C:\Program Files\nginx-1.29.1
nginx.exe -s stop
start /b nginx.exe
第4步 myems-modbus-tcp
在此步骤中,您将安装myems-modbus-tcp服务。
cd C:\myems\myems-modbus-tcp
# 1. 以管理员身份打开新的 CMD 窗口
# 2. 设置环境变量
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1
# 3. 进入项目目录
cd C:\myems\myems-modbus-tcp
# 4. 重新安装所有包
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt
根据example.env创建.env文件,并根据需要编辑.env:
copy .\example.env .env
用文本编辑工具打开并编辑 C:\myems\myems-modbus-tcp\.env
安装 Windows服务:
# 1. 彻底删除所有旧服务
sc delete MyEMSModbusTCP
# 2. 创建日志目录
mkdir C:\myems\myems-modbus-tcp\logs 2>nul
# 3. 下载 WinSW(如果还没下载)
https://github.com/winsw/winsw/releases
WinSW-x64.exe 重命名为 MyEMSModbusTCP.exe
cd C:\myems\myems-modbus-tcp
# 4. 创建配置文件
创建 `C:\myems\myems-modbus-tcp\MyEMSModbusTCP.xml`(用 notepad 或以下命令):
notepad C:\myems\myems-modbus-tcp\MyEMSModbusTCP.xml
复制以下内容到记事本:
<service>
<id>MyEMSModbusTCP</id>
<name>MyEMS Modbus TCP Service</name>
<description>MyEMS Modbus TCP Service</description>
<executable>C:\Python310\python.exe</executable>
<arguments>main.py</arguments>
<workingdirectory>C:\myems\myems-modbus-tcp</workingdirectory>
<logmode>rotate</logmode>
<logpath>C:\myems\myems-modbus-tcp\logs</logpath>
<onfailure action="restart" delay="10 sec"/>
<stoptimeout>15 sec</stoptimeout>
<startmode>Automatic</startmode>
</service>
保存并关闭记事本。
# 5. 安装服务
MyEMSModbusTCP.exe install
# 6. 启动服务
MyEMSModbusTCP.exe start
# 7. 查看状态
MyEMSModbusTCP.exe status
# 8. 如出问题查看日志
C:\myems\myems-modbus-tcp\logs
若 MyEMSModbusTCP.exe install 和 MyEMSModbusTCP.exe start 均执行成功,MyEMSModbusTCP.exe status仍是Stopped,可能是vc++未安装 vc++安装地址:https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022
第5步 myems-cleaning
在此步骤中,您将安装myems-cleaning服务。
cd C:\Program Files\myems\myems-cleaning
# 1. 以管理员身份打开新的 CMD 窗口
# 2. 设置环境变量
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1
# 3. 进入项目目录
cd C:\myems\myems-cleaning
# 4. 重新安装所有包
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt
根据example.env创建.env文件,并根据需要编辑.env:
copy C:\myems\myems-cleaning\example.env \.env
用文本编辑工具打开并编辑 C:\myems\myems-cleaning\.env
安装 Windows服务:
# 1. 彻底删除所有旧服务
sc delete MyEMSCleaning
# 2. 创建日志目录
mkdir C:\myems\myems-cleaning\logs 2>nul
# 3. 下载 WinSW(如果还没下载)
https://github.com/winsw/winsw/releases
WinSW-x64.exe 重命名为 MyEMSCleaning.exe
cd C:\myems\myems-cleaning
# 4. 创建配置文件
创建 `C:\myems\myems-cleaning\MyEMSCleaning.xml`(用 notepad 或以下命令):
notepad C:\myems\myems-cleaning\MyEMSCleaning.xml
复制以下内容到记事本:
<service>
<id>MyEMSCleaning</id>
<name>MyEMS Cleaning Service</name>
<description>MyEMS Cleaning Service</description>
<executable>C:\Python310\python.exe</executable>
<arguments>main.py</arguments>
<workingdirectory>C:\myems\myems-cleaning</workingdirectory>
<logmode>rotate</logmode>
<logpath>C:\myems\myems-cleaning\logs</logpath>
<onfailure action="restart" delay="10 sec"/>
<stoptimeout>15 sec</stoptimeout>
<startmode>Automatic</startmode>
</service>
保存并关闭记事本。
# 5. 安装服务
MyEMSCleaning.exe install
# 6. 启动服务
MyEMSCleaning.exe start
# 7. 查看状态
MyEMSCleaning.exe status
# 8. 如出问题查看日志
C:\myems\myems-cleaning\logs
第6步 myems-normalization
在此步骤中,您将安装 myems-normalization服务。
cd C:\myems\myems-normalization
# 1. 以管理员身份打开新的 CMD 窗口
# 2. 设置环境变量
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1
# 3. 进入项目目录
cd C:\myems\myems-normalization
# 4. 重新安装所有包
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt
根据example.env创建.env文件,并根据需要编辑.env:
copy C:\myems\myems-normalization\example.env \.env
用文本编辑工具打开并编辑 C:\myems\myems-normalization\.env
安装 Windows服务:
# 1. 彻底删除所有旧服务
sc delete MyEMSNormalization
# 2. 创建日志目录
mkdir C:\myems\myems-normalization\logs 2>nul
# 3. 下载 WinSW(如果还没下载)
https://github.com/winsw/winsw/releases
WinSW-x64.exe 重命名为 MyEMSNormalization.exe
cd C:\myems\myems-normalization
# 4. 创建配置文件
创建 `C:\myems\myems-normalization\MyEMSCleaning.xml`(用 notepad 或以下命令):
notepad C:\myems\myems-normalization\MyEMSCleaning.xml
复制以下内容到记事本:
<service>
<id>MyEMSNormalization</id>
<name>MyEMS Normalization Service</name>
<description>MyEMS Normalization Service</description>
<executable>C:\Python310\python.exe</executable>
<arguments>main.py</arguments>
<workingdirectory>C:\myems\myems-normalization</workingdirectory>
<logmode>rotate</logmode>
<logpath>C:\myems\myems-normalization\logs</logpath>
<onfailure action="restart" delay="10 sec"/>
<stoptimeout>15 sec</stoptimeout>
<startmode>Automatic</startmode>
</service>
保存并关闭记事本。
# 5. 安装服务
MyEMSNormalization.exe install
# 6. 启动服务
MyEMSNormalization.exe start
# 7. 查看状态
MyEMSNormalization.exe status
# 8. 如出问题查看日志
C:\myems\myems-normalization\logs
第7步 myems-aggregation
在此步骤中,您将安装myems-aggregation服务。
cd C:\myems\myems-aggregation
# 1. 以管理员身份打开新的 CMD 窗口
# 2. 设置环境变量
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1
# 3. 进入项目目录
cd C:\myems\myems-aggregation
# 4. 重新安装所有包
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt
根据example.env创建.env文件,并根据需要编辑.env:
copy C:\myems\myems-aggregation\example.env \.env
用文本编辑工具打开并编辑 C:\myems\myems-aggregation\.env
安装 Windows服务:
# 1. 彻底删除所有旧服务
sc delete MyEMSAggregation
# 2. 创建日志目录
mkdir C:\myems\myems-aggregation\logs 2>nul
# 3. 下载 WinSW(如果还没下载)
https://github.com/winsw/winsw/releases
WinSW-x64.exe 重命名为 MyEMSAggregation.exe
cd C:\myems\myems-normalization
# 4. 创建配置文件
创建 `C:\myems\myems-aggregation\MyEMSAggregation.xml`(用 notepad 或以下命令):
notepad C:\myems\myems-aggregation\MyEMSAggregation.xml
复制以下内容到记事本:
<service>
<id>MyEMSAggregation</id>
<name>MyEMS Aggregation Service</name>
<description>MyEMS Aggregation Service</description>
<executable>C:\Python310\python.exe</executable>
<arguments>main.py</arguments>
<workingdirectory>C:\myems\myems-aggregation</workingdirectory>
<logmode>rotate</logmode>
<logpath>C:\myems\myems-aggregation\logs</logpath>
<onfailure action="restart" delay="10 sec"/>
<stoptimeout>15 sec</stoptimeout>
<startmode>Automatic</startmode>
</service>
保存并关闭记事本。
# 5. 安装服务
MyEMSAggregation.exe install
# 6. 启动服务
MyEMSAggregation.exe start
# 7. 查看状态
MyEMSAggregation.exe status
# 8. 如出问题查看日志
C:\myems\myems-aggregation\logs
第8步 myems-web
在此步骤中,您将安装myems-web服务。
启用nginx服务:
start /b nginx.exe
- 配置 NGINX
cd C:\Program Files\nginx-1.29.1\conf
用文本编辑工具打开并编辑nginx.conf
使用如下指令编写,如果myems-api服务托管在不同的服务器上,则使用实际的地址替换默认的myems-api地址http://127.0.0.1:8000/
server {
listen 80;
server_name myems-web;
location / {
root C:\myems-web\build;
index index.html index.htm;
# add try_files directive to avoid 404 error while refreshing pages
try_files $uri /index.html;
}
## To avoid CORS issue, use Nginx to proxy myems-api to path /api
## Add another location /api in 'server'
## replace the default myems-api url http://127.0.0.1:8000/ with actual url if the myems-api servcie hosted on different server
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
重启Nginx
cd C:\Program Files\nginx-1.29.1
nginx.exe -s stop
start /b nginx.exe
- 安装 MyEMS Web UI:
安装NodeJS: https://nodejs.org/zh-cn 版本要求:
- Node.js 需 22.22.2、24.5.0 及以上任意更高版本
- npm 需 10.9.7、11.5.1 及以上任意更高版本
如:C:\Program Files\nodejs
配置环境变量
修改配置文件:
cd C:\myems\myems-web
用文本编辑工具打开并编辑 src/config.js
编译:
npm i
npm run build
在C:\myems\myems-web下生成build目录
mkdir C:\myems-web
move "C:\myems\myems-web\build" "C:\myems-web"
若编译失败,出现如下超时错误:
npm error code EIDLETIMEOUT
npm error Idle timeout reached for host `registry.npmjs.org:443`
npm error A complete log of this run can be found in执行以下命令切换为国内镜像源:
npm config set registry https://registry.npmmirror.com/
安装后
祝贺您现在可以登录MyEMS Admin UI和Web UI。
默认端口
MyEMS Web UI: 80
MyEMS API: 8000
MyEMS Admin UI: 8001
假设服务器地址是 192.168.1.8 (替换为服务器真实地址) 访问MyEMS Web UI地址是 http://192.168.1.8 (80可以忽略) 访问MyEMS Admin UI地址是 http://192.168.1.8:8001
默认密码
MyEMS Admin UI
用户名:
administrator
密码:
!MyEMS1
MyEMS Web UI
用户名:
administrator
密码:
!MyEMS1