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