Przejdź do głównej zawartości

Windows 10 / 11 / Server

W tym przewodniku wdrożysz MyEMS na serwerach Windows 10, Windows 11 i Windows Server.

Wymagania wstępne

Ten przewodnik wyjaśnia, jak zainstalować MyEMS na Windows 10, Windows 11 i Windows Server 2022. Wymagania sprzętowe zależą od wybranej bazy danych i liczby urządzeń podłączonych do systemu. Do uruchomienia MyEMS, MySQL i dowolnej wersji Pythona 3.10, 3.11 lub 3.12 na jednym komputerze wymagane jest co najmniej 8 GB pamięci RAM.

Sklonuj kod źródłowy:

Uruchom Windows PowerShell jako Administrator
cd C:\
git clone https://gitee.com/myems/myems

Zainstaluj Pythona 3.10:

https://www.python.org/downloads/windows/
Pakiet instalacyjny Pythona w wersji 3.10.11 64-bit dla systemów 64-bit
Pobierz instalator Windows (64-bit)
Uruchom pakiet instalacyjny Pythona
Kliknij dwukrotnie: python-3.10.11-amd64.exe
Zaznacz „Add Python to PATH” i kliknij „Customize installation”
Upewnij się, że wszystkie opcje są zaznaczone, w szczególności pip, wymagane do zainstalowania bibliotek później; kliknij Next
Zaznacz pierwszą opcję, zmień ścieżkę instalacji Pythona, a następnie kliknij install
Uwaga: Domyślna ścieżka to C:\Program Files\Python310. Zmień ją na C:\Python310
Po zakończeniu instalacji kliknij close
W wierszu poleceń wpisz python, naciśnij Enter – jeśli wyświetli się wersja Pythona, instalacja zakończyła się powodzeniem

Krok 1 Baza danych

Zobacz Baza danych

Poniżej znajdują się szczegółowe kroki pobrania i zainstalowania bazy danych MySQL (np. MySQL 8.0, wersja Community, darmowa).

1.1 Pobranie pakietu instalacyjnego MySQL

  1. Otwórz oficjalną stronę: https://dev.mysql.com/downloads/mysql/
  2. Wybierz platformę Windows, zazwyczaj dostępne są dwie opcje:
    • mysql-installer-web-community (instalacja online, mały rozmiar)
    • mysql-installer-community (pełny pakiet offline, zalecany)
  3. Kliknij Download, jeśli wymagane jest logowanie, możesz pominąć (No thanks, just start my download)

1.2 Instalacja MySQL

  1. Kliknij dwukrotnie, aby uruchomić pobrany instalator (może wymagać uprawnień administratora)
  2. Wybierz typ instalacji (zalecane Developer Default lub Custom)
    • Developer Default: Instaluje MySQL Server, Workbench, Shell i inne popularne narzędzia
    • Custom: Dostosowuje składniki instalacji
  3. Kliknij Next, instalator automatycznie sprawdzi zależności i pobierze brakujące składniki
  4. Kliknij Execute, aby rozpocząć instalację, po zakończeniu kliknij Next

1.3 Konfiguracja MySQL Server

  1. Type and Networking

    • Config Type: Wybierz Development Computer
    • Port: Domyślny 3306 (nie trzeba zmieniać)
    • Kliknij Next
  2. Authentication Method

    • Zalecane jest wybranie Use Strong Password Encryption (nowe szyfrowanie)
    • Lub wybierz drugą opcję (kompatybilność ze starszymi wersjami)
    • Kliknij Next
  3. Accounts and Roles

    • Ustaw hasło root (zapamiętaj je dokładnie)
    • Opcja dodania zwykłego użytkownika (możesz pominąć)
    • Kliknij Next
  4. Windows Service

    • Zaznacz Configure MySQL Server as a Windows Service
    • Nazwa usługi: MySQL80 (domyślna)
    • Zaznacz Start the MySQL Server at System Startup
    • Kliknij Next
  5. Apply Configuration

    • Kliknij Execute, aby zastosować konfigurację
    • Wszystkie kroki z zielonym znacznikiem oznaczają powodzenie
    • Kliknij Finish

1.4 Zakończenie instalacji

  1. Kontynuuj klikanie Next, aż pojawi się Finish
  2. Zaznacz Start MySQL Workbench after Setup (opcjonalnie)
  3. Kliknij Finish, aby zamknąć kreator instalacji

1.5 Sprawdzenie instalacji

Metoda 1: Test wiersza poleceń

  1. Naciśnij Win + R, wpisz cmd, naciśnij Enter
  2. Wpisz:
    mysql -u root -p
  3. Wpisz ustawione hasło root
  4. Wyświetlenie zachęty mysql> oznacza powodzenie

Metoda 2: Sprawdzenie usługi

  1. Naciśnij Win + R, wpisz services.msc
  2. Znajdź MySQL80, stan powinien być „Uruchomiona”

1.6 Podstawowe ustawienia początkowe (opcjonalnie)

Po zalogowaniu do MySQL uruchom:

-- Wyświetl bazy danych
show databases;

-- Utwórz nową bazę danych
create database mydb;

-- Utwórz użytkownika do zdalnego dostępu (opcjonalnie)
create user 'myems'@'%' identified by 'hasło';
grant all privileges on *.* to 'myems'@'%';
flush privileges;

Częste problemy

ProblemRozwiązanie
Port 3306 jest zajętyZmień port na inny podczas instalacji (np. 3307)
Zapomniane hasło rootKonieczne jest uruchomienie MySQL z pominięciem tabeli uprawnień, dość skomplikowana procedura
Nie można uruchomić usługiSprawdź zajętość portu lub przejrzyj Dziennik zdarzeń Windows

Krok 2 myems-api

Zainstaluj usługę myems-api:

# 1. Otwórz nowe okno CMD jako Administrator

# 2. Ustaw zmienne środowiskowe
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. Przejdź do katalogu projektu
cd C:\myems\myems-api

# 4. Zainstaluj ponownie wszystkie pakiety
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

Utwórz plik .env na podstawie example.env i edytuj .env zgodnie z potrzebami:

copy .\example.env .env
Otwórz i edytuj C:\myems\myems-api\.env za pomocą edytora tekstu
Zmień dane bazy danych

Zainstaluj jako usługę Windows (uruchom CMD jako Administrator):

# 1. Całkowicie usuń starą usługę
sc delete MyEMSAPI

# 2. Utwórz katalog logów
mkdir C:\myems\myems-api\logs 2>nul

# 3. Pobierz WinSW (jeśli jeszcze nie pobrano)
https://github.com/winsw/winsw/releases
Zmień nazwę WinSW-x64.exe na MyEMSAPI.exe

cd C:\myems\myems-api

# 4. Utwórz plik konfiguracyjny
Utwórz `C:\myems\myems-api\MyEMSAPI.xml` (użyj notatnika lub poniższego polecenia):
notepad C:\myems\myems-api\MyEMSAPI.xml
Wklej poniższą zawartość do notatnika:
<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>
Zapisz i zamknij notatnik.

# 5. Zainstaluj usługę
MyEMSAPI.exe install

# 6. Uruchom usługę
MyEMSAPI.exe start

# 7. Sprawdź stan
MyEMSAPI.exe status

# 8. Testuj usługę
curl http://localhost:8000

# 9. W przypadku problemów sprawdź logi
C:\myems\myems-api\logs

Krok 3 myems-admin

Zainstaluj serwer NGINX: https://nginx.org/en/download.html

Uruchom usługę nginx w tle:

start /b nginx.exe

Konfiguracja NGINX:

cd C:\Program Files\nginx-1.29.1\conf
Otwórz i edytuj nginx.conf za pomocą edytora tekstu

W sekcji „http” dodaj kilka dyrektyw:

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;
...

}

Wpisz poniższe dyrektywy; jeśli usługa myems-api działa na innym serwerze, zamień domyślny adres http://127.0.0.1:8000/ na rzeczywisty adres

  server {
listen 8001;
server_name myems-admin;
location / {
root C:\myems-admin;
index index.html index.htm;
}
## Aby uniknąć problemów CORS, użyj Nginx do przekierowania myems-api na ścieżkę /api
## Dodaj kolejną lokalizację /api w sekcji „server”
## Zamień domyślny adres URL myems-api http://127.0.0.1:8000/ na rzeczywisty adres URL, jeśli usługa myems-api jest hostowana na innym serwerze
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}

Zainstaluj myems-admin: Jeśli serwer nie może połączyć się z internetem, spakuj folder myems/myems-admin i prześlij go na serwer, następnie rozpakuj do c:\myems-admin

Sprawdź plik konfiguracyjny, wprowadź zmiany w razie potrzeby:

c:\myems-admin\app\api.js
Ostrzeżenie

Folder „upload” przeznaczony jest dla plików przesyłanych przez użytkowników. Podczas aktualizacji myems-admin nie usuwaj/przenoś/nadpisuj folderu „upload”.

  C:\myems-admin\upload

Uruchom ponownie usługę nginx:

cd C:\Program Files\nginx-1.29.1
nginx.exe -s stop
start /b nginx.exe

Krok 4 myems-modbus-tcp

W tym kroku zainstalujesz usługę myems-modbus-tcp.

cd C:\myems\myems-modbus-tcp
# 1. Otwórz nowe okno CMD jako Administrator

# 2. Ustaw zmienne środowiskowe
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. Przejdź do katalogu projektu
cd C:\myems\myems-modbus-tcp

# 4. Zainstaluj ponownie wszystkie pakiety
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt

Utwórz plik .env na podstawie example.env i edytuj .env zgodnie z potrzebami:

copy .\example.env .env
Otwórz i edytuj C:\myems\myems-modbus-tcp\.env za pomocą edytora tekstu

Zainstaluj jako usługę Windows:

# 1. Całkowicie usuń starą usługę
sc delete MyEMSModbusTCP

# 2. Utwórz katalog logów
mkdir C:\myems\myems-modbus-tcp\logs 2>nul

# 3. Pobierz WinSW (jeśli jeszcze nie pobrano)
https://github.com/winsw/winsw/releases
Zmień nazwę WinSW-x64.exe na MyEMSModbusTCP.exe

cd C:\myems\myems-modbus-tcp

# 4. Utwórz plik konfiguracyjny
Utwórz `C:\myems\myems-modbus-tcp\MyEMSModbusTCP.xml` (użyj notatnika lub poniższego polecenia):
notepad C:\myems\myems-modbus-tcp\MyEMSModbusTCP.xml
Wklej poniższą zawartość do notatnika:
<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>
Zapisz i zamknij notatnik.

# 5. Zainstaluj usługę
MyEMSModbusTCP.exe install

# 6. Uruchom usługę
MyEMSModbusTCP.exe start

# 7. Sprawdź stan
MyEMSModbusTCP.exe status

# 8. W przypadku problemów sprawdź logi
C:\myems\myems-modbus-tcp\logs

Jeśli MyEMSModbusTCP.exe install i MyEMSModbusTCP.exe start zostaną pomyślnie uruchomione, ale MyEMSModbusTCP.exe status nadal wyświetla Stopped, może brakować biblioteki vc++. Adres do pobrania vc++: https://learn.microsoft.com/pl-pl/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022

Krok 5 myems-cleaning

W tym kroku zainstalujesz usługę myems-cleaning.

cd C:\myems\myems-cleaning
# 1. Otwórz nowe okno CMD jako Administrator

# 2. Ustaw zmienne środowiskowe
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. Przejdź do katalogu projektu
cd C:\myems\myems-cleaning

# 4. Zainstaluj ponownie wszystkie pakiety
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt

Utwórz plik .env na podstawie example.env i edytuj .env zgodnie z potrzebami:

copy C:\myems\myems-cleaning\example.env .env
Otwórz i edytuj C:\myems\myems-cleaning\.env za pomocą edytora tekstu

Zainstaluj jako usługę Windows:

# 1. Całkowicie usuń starą usługę
sc delete MyEMSCleaning


# 2. Utwórz katalog logów
mkdir C:\myems\myems-cleaning\logs 2>nul

# 3. Pobierz WinSW (jeśli jeszcze nie pobrano)
https://github.com/winsw/winsw/releases
Zmień nazwę WinSW-x64.exe na MyEMSCleaning.exe

cd C:\myems\myems-cleaning

# 4. Utwórz plik konfiguracyjny
Utwórz `C:\myems\myems-cleaning\MyEMSCleaning.xml` (użyj notatnika lub poniższego polecenia):
notepad C:\myems\myems-cleaning\MyEMSCleaning.xml
Wklej poniższą zawartość do notatnika:
<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>
Zapisz i zamknij notatnik.

# 5. Zainstaluj usługę
MyEMSCleaning.exe install

# 6. Uruchom usługę
MyEMSCleaning.exe start

# 7. Sprawdź stan
MyEMSCleaning.exe status

# 8. W przypadku problemów sprawdź logi
C:\myems\myems-cleaning\logs

Krok 6 myems-normalization

W tym kroku zainstalujesz usługę myems-normalization.

cd C:\myems\myems-normalization
# 1. Otwórz nowe okno CMD jako Administrator

# 2. Ustaw zmienne środowiskowe
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. Przejdź do katalogu projektu
cd C:\myems\myems-normalization

# 4. Zainstaluj ponownie wszystkie pakiety
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt

Utwórz plik .env na podstawie example.env i edytuj .env zgodnie z potrzebami:

copy C:\myems\myems-normalization\example.env .env
Otwórz i edytuj C:\myems\myems-normalization\.env za pomocą edytora tekstu

Zainstaluj jako usługę Windows:

# 1. Całkowicie usuń starą usługę
sc delete MyEMSNormalization


# 2. Utwórz katalog logów
mkdir C:\myems\myems-normalization\logs 2>nul

# 3. Pobierz WinSW (jeśli jeszcze nie pobrano)
https://github.com/winsw/winsw/releases
Zmień nazwę WinSW-x64.exe na MyEMSNormalization.exe

cd C:\myems\myems-normalization

# 4. Utwórz plik konfiguracyjny
Utwórz `C:\myems\myems-normalization\MyEMSNormalization.xml` (użyj notatnika lub poniższego polecenia):
notepad C:\myems\myems-normalization\MyEMSNormalization.xml
Wklej poniższą zawartość do notatnika:
<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>
Zapisz i zamknij notatnik.

# 5. Zainstaluj usługę
MyEMSNormalization.exe install

# 6. Uruchom usługę
MyEMSNormalization.exe start

# 7. Sprawdź stan
MyEMSNormalization.exe status

# 8. W przypadku problemów sprawdź logi
C:\myems\myems-normalization\logs

Krok 7 myems-aggregation

W tym kroku zainstalujesz usługę myems-aggregation.

cd C:\myems\myems-aggregation
# 1. Otwórz nowe okno CMD jako Administrator

# 2. Ustaw zmienne środowiskowe
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. Przejdź do katalogu projektu
cd C:\myems\myems-aggregation

# 4. Zainstaluj ponownie wszystkie pakiety
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt

Utwórz plik .env na podstawie example.env i edytuj .env zgodnie z potrzebami:

copy C:\myems\myems-aggregation\example.env .env
Otwórz i edytuj C:\myems\myems-aggregation\.env za pomocą edytora tekstu

Zainstaluj jako usługę Windows:

# 1. Całkowicie usuń starą usługę
sc delete MyEMSAggregation

# 2. Utwórz katalog logów
mkdir C:\myems\myems-aggregation\logs 2>nul

# 3. Pobierz WinSW (jeśli jeszcze nie pobrano)
https://github.com/winsw/winsw/releases
Zmień nazwę WinSW-x64.exe na MyEMSAggregation.exe

cd C:\myems\myems-aggregation

# 4. Utwórz plik konfiguracyjny
Utwórz `C:\myems\myems-aggregation\MyEMSAggregation.xml` (użyj notatnika lub poniższego polecenia):
notepad C:\myems\myems-aggregation\MyEMSAggregation.xml
Wklej poniższą zawartość do notatnika:
<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>
Zapisz i zamknij notatnik.

# 5. Zainstaluj usługę
MyEMSAggregation.exe install

# 6. Uruchom usługę
MyEMSAggregation.exe start

# 7. Sprawdź stan
MyEMSAggregation.exe status

# 8. W przypadku problemów sprawdź logi
C:\myems\myems-aggregation\logs

Krok 8 myems-web

W tym kroku zainstalujesz usługę myems-web.

Uruchom usługę nginx:

start /b nginx.exe

Konfiguracja NGINX:

cd C:\Program Files\nginx-1.29.1\conf
Otwórz i edytuj nginx.conf za pomocą edytora tekstu

Wpisz poniższe dyrektywy; jeśli usługa myems-api jest hostowana na innym serwerze, zamień domyślny adres http://127.0.0.1:8000/ na rzeczywisty adres

server {
listen 80;
server_name myems-web;
location / {
root C:\myems-web\build;
index index.html index.htm;
# dodaj dyrektywę try_files, aby uniknąć błędu 404 podczas odświeżania strony
try_files $uri /index.html;
}
## Aby uniknąć problemów CORS, użyj Nginx do przekierowania myems-api na ścieżkę /api
## Dodaj kolejną lokalizację /api w sekcji „server”
## zamień domyślny adres URL myems-api http://127.0.0.1:8000/ na rzeczywisty adres URL, jeśli usługa myems-api jest hostowana na innym serwerze
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}

Uruchom ponownie Nginx:

cd C:\Program Files\nginx-1.29.1
nginx.exe -s stop
start /b nginx.exe

Zainstaluj interfejs sieciowy MyEMS:

Zainstaluj NodeJS: https://nodejs.org/pl Wymagania wersji:

  • Node.js 22.22.2, 24.5.0 lub nowsza
  • npm 10.9.7, 11.5.1 lub nowsza
Przykład: C:\Program Files\nodejs
Konfiguruj zmienne środowiskowe

Edytuj plik konfiguracyjny:

cd C:\myems\myems-web
Otwórz i edytuj src/config.js za pomocą edytora tekstu

Zbuduj projekt:

npm i
npm run build
Folder build zostanie utworzony w C:\myems\myems-web
mkdir C:\myems-web
move "C:\myems\myems-web\build" "C:\myems-web"

Jeśli budowanie nie powiedzie się i pojawi się błąd limitu czasu, jak poniżej:

npm error code EIDLETIMEOUT
npm error Idle timeout reached for host `registry.npmjs.org:443`

Uruchom poniższe polecenie, aby zmienić lokalne repozytorium lustrzane:

npm config set registry https://registry.npmmirror.com/

Po instalacji

Gratulacje! Możesz teraz zalogować się do interfejsu administracyjnego MyEMS i interfejsu sieciowego MyEMS.

Domyślne porty

Interfejs sieciowy MyEMS: 80

API MyEMS: 8000

Interfejs administracyjny MyEMS: 8001

Załóżmy, że adres serwera to 192.168.1.8 (zamień na rzeczywisty adres serwera) Adres dostępu do interfejsu sieciowego MyEMS: http://192.168.1.8 (port 80 można pominąć) Adres dostępu do interfejsu administracyjnego MyEMS: http://192.168.1.8:8001

Domyślne hasła

Interfejs administracyjny MyEMS

Nazwa użytkownika:

administrator

Hasło:

!MyEMS1

Interfejs sieciowy MyEMS

Nazwa użytkownika:

administrator

Hasło:

!MyEMS1