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回車 - 輸入:
bash 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 EIDLETIMEOUTnpm 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