Перейти к основному контенту

Windows 10 / 11 / Server

В этом руководстве вы развернете MyEMS на серверах Windows 10, Windows 11 и Windows Server.

Предварительные требования

В этом руководстве описывается установка MyEMS на Windows 10, Windows 11 и Windows Server 2022. Требования к оборудованию зависят от выбранной базы данных и количества устройств, подключенных к системе. Для запуска MyEMS, MySQL и любой версии Python 3.10, 3.11 или 3.12 на одном компьютере требуется не менее 8 ГБ оперативной памяти.

Клонирование исходного кода:

Запустите Windows PowerShell от имени администратора
cd C:\
git clone https://gitee.com/myems/myems

Установка Python 3.10:

https://www.python.org/downloads/windows/
Установочный пакет Python 3.10.11, 64-разрядная версия для 64-разрядных систем
Скачайте установщик Windows (64-разрядный)
Запустите установочный пакет Python
Дважды щелкните по python-3.10.11-amd64.exe
Установите флажок «Add Python to PATH» и нажмите «Настроить установку»
Убедитесь, что все опции выбраны, особенно pip, который понадобится позже для установки библиотек; нажмите «Далее»
Установите первый флажок, измените путь установки Python, затем нажмите «Установить»
Примечание: по умолчанию устанавливается в C:\Program Files\Python310 – измените на C:\Python310
После завершения установки нажмите «Закрыть»
В командной строке введите python, нажмите Enter; появление номера версии Python означает успешную установку

Шаг 1 База данных

Смотрите Database

Ниже приведены подробные шаги по загрузке и установке базы данных MySQL (версия Community 8.0, бесплатная).

1.1 Загрузка установочного пакета MySQL

  1. Откройте официальный сайт: https://dev.mysql.com/downloads/mysql/
  2. Выберите платформу Windows. Обычно доступны два варианта:
    • mysql-installer-web-community (онлайн-установка, небольшой размер)
    • mysql-installer-community (полный офлайн-пакет, рекомендуется)
  3. Нажмите Download. Если потребуется вход, пропустите (No thanks, just start my download)

1.2 Установка MySQL

  1. Дважды щелкните по загруженному установщику (может потребоваться права администратора)
  2. Выберите тип установки (рекомендуется Developer Default или Custom)
    • Developer Default: устанавливает сервер MySQL, Workbench, Shell и другие распространенные инструменты
    • Custom: позволяет настроить компоненты по своему усмотрению
  3. Нажмите «Далее», установщик автоматически проверит зависимости и загрузит недостающие компоненты
  4. Нажмите «Execute» для начала установки, после завершения нажмите «Далее»

1.3 Настройка сервера MySQL

  1. Type and Networking

    • Config Type: выберите Development Computer
    • Порт: по умолчанию 3306 (можно не менять)
    • Нажмите «Далее»
  2. Authentication Method

    • Рекомендуется выбрать Use Strong Password Encryption (новое шифрование)
    • Или выберите второй вариант для совместимости со старыми версиями
    • Нажмите «Далее»
  3. Accounts and Roles

    • Задайте пароль root (обязательно запомните)
    • По желанию можно добавить обычного пользователя (можно пропустить)
    • Нажмите «Далее»
  4. Windows Service

    • Установите флажок Configure MySQL Server as a Windows Service
    • Имя службы: MySQL80 (по умолчанию)
    • Установите флажок Start the MySQL Server at System Startup
    • Нажмите «Далее»
  5. Apply Configuration

    • Нажмите Execute для применения настроек
    • Все шаги с зеленой галочкой означают успех
    • Нажмите «Finish»

1.4 Завершение установки

  1. Продолжайте нажимать «Далее», пока не появится «Finish»
  2. Установите флажок Start MySQL Workbench after Setup (по желанию)
  3. Нажмите «Finish» для выхода из мастера установки

1.5 Проверка установки

Способ 1: тест в командной строке

  1. Нажмите Win + R, введите cmd, нажмите Enter
  2. Введите:
    mysql -u root -p
  3. Введите заданный пароль root
  4. Появление приглашения mysql> означает успех

Способ 2: проверка служб

  1. Нажмите Win + R, введите services.msc
  2. Найдите 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

Создайте файл .env на основе example.env и отредактируйте его при необходимости:

copy .\example.env .env
Откройте и отредактируйте C:\myems\myems-api\.env в текстовом редакторе
Измените данные базы данных

Установка как службы Windows (запускать 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 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 в текстовом редакторе

В разделе 'http' добавьте директивы:

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 работает на другом сервере, замените адрес по умолчанию http://127.0.0.1:8000/ на реальный:

  server {
listen 8001;
server_name myems-admin;
location / {
root C:\myems-admin;
index index.html index.htm;
}
## Чтобы избежать проблемы CORS, используйте Nginx для проксирования myems-api по пути /api
## Добавьте еще одну секцию location /api в 'server'
## Замените адрес myems-api по умолчанию http://127.0.0.1:8000/ на реальный, если служба myems-api находится на другом сервере
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-admin\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

Создайте файл .env на основе example.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 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/ru-ru/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022

Шаг 5 myems-cleaning

На этом шаге вы установите службу myems-cleaning.

cd C:\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

Создайте файл .env на основе example.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 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

Создайте файл .env на основе example.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\MyEMSNormalization.xml` (через Блокнот или командой ниже):
notepad C:\myems\myems-normalization\MyEMSNormalization.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

Создайте файл .env на основе example.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-aggregation

# 4. Создание файла конфигурации
Создайте `C:\myems\myems-aggregation\MyEMSAggregation.xml` (через Блокнот или командой ниже):
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 находится на другом сервере, замените адрес по умолчанию http://127.0.0.1:8000/ на реальный:

server {
listen 80;
server_name myems-web;
location / {
root C:\myems-web\build;
index index.html index.htm;
# добавьте директиву try_files, чтобы избежать ошибки 404 при обновлении страниц
try_files $uri /index.html;
}
## Чтобы избежать проблемы CORS, используйте Nginx для проксирования myems-api по пути /api
## Добавьте еще одну секцию location /api в 'server'
## Замените адрес myems-api по умолчанию http://127.0.0.1:8000/ на реальный, если служба myems-api находится на другом сервере
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:

Установка NodeJS: https://nodejs.org/ru Требования к версии:

  • 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 config set registry https://registry.npmmirror.com/

После установки

Поздравляем, теперь вы можете войти в административный интерфейс и веб-интерфейс MyEMS.

Порты по умолчанию

Веб-интерфейс MyEMS: 80

API MyEMS: 8000

Административный интерфейс MyEMS: 8001

Предположим, адрес сервера – 192.168.1.8 (замените на реальный адрес сервера) Адрес веб-интерфейса MyEMS: http://192.168.1.8 (порт 80 можно опустить) Адрес административного интерфейса MyEMS: http://192.168.1.8:8001

Пароли по умолчанию

Административный интерфейс MyEMS

Имя пользователя:

administrator

Пароль:

!MyEMS1

Веб-интерфейс MyEMS

Имя пользователя:

administrator

Пароль:

!MyEMS1