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

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