본문으로 바로 가기

Windows 10 / 11 / Server

이 가이드에서는 Windows 10, Windows 11 및 Windows Server에서 MyEMS를 배포하는 방법을 설명합니다.

사전 요구 사항

이 가이드는 Windows 10, Windows 11 및 Windows Server 2022에 MyEMS를 설치하는 방법을 설명합니다. 하드웨어 요구 사항은 선택한 데이터베이스와 시스템에 연결된 장치 수에 따라 달라집니다. 한 대의 컴퓨터에서 MyEMS, MySQL 및 Python 3.10, 3.11, 3.12 중 하나를 실행하려면 최소 8GB RAM이 필요합니다.

소스 코드 클론:

Windows PowerShell을 관리자 권한으로 실행
cd C:\
git clone https://gitee.com/myems/myems

Python 3.10 설치:

https://www.python.org/downloads/windows/
64비트 시스템용 Python 3.10.11 64비트 설치 프로그램
Windows 인스톨러(64비트) 다운로드
Python 설치 프로그램 실행
더블 클릭: python-3.10.11-amd64.exe
“Add Python to PATH” 체크 후 “Customize installation” 클릭
나중에 라이브러리 설치에 필요한 pip를 포함한 모든 옵션이 선택되었는지 확인 후 Next 클릭
첫 번째 항목 체크, Python 설치 경로 변경 후 install 클릭
참고: 기본 경로는 C:\Program Files\Python310이므로 C:\Python310으로 변경하십시오.
설치 완료 후 close 클릭
명령 프롬프트에서 python 입력, Enter 키 누르면 버전이 표시되면 설치 성공

1단계 데이터베이스

Database 참조

아래는 MySQL 데이터베이스(예: MySQL 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 Server, Workbench, Shell 및 기타 공통 도구 설치
    • Custom: 설치 구성 요소 사용자 정의
  3. Next 클릭, 설치 프로그램이 자동으로 의존성 검사 및 누락된 구성 요소 다운로드
  4. Execute 클릭하여 설치 시작, 완료 후 Next 클릭

1.3 MySQL Server 구성

  1. Type and Networking

    • Config Type: Development Computer 선택
    • 포트: 기본 3306 (변경 불필요)
    • Next 클릭
  2. Authentication Method

    • Use Strong Password Encryption (새 암호화 방식) 선택 권장
    • 또는 이전 버전과 호환되는 두 번째 옵션 선택
    • Next 클릭
  3. Accounts and Roles

    • root 비밀번호 설정 (반드시 기억)
    • 일반 사용자 추가 선택 사항 (건너뛸 수 있음)
    • Next 클릭
  4. Windows Service

    • Configure MySQL Server as a Windows Service 체크
    • 서비스 이름: MySQL80 (기본값)
    • Start the MySQL Server at System Startup 체크
    • Next 클릭
  5. Apply Configuration

    • Execute 클릭하여 구성 적용
    • 모든 단계에 녹색 체크 표시가 나타나면 성공
    • Finish 클릭

1.4 설치 완료

  1. Finish가 나타날 때까지 계속 Next 클릭
  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

example.env를 기반으로 .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 경로로 프록시
## 'server' 내에 다른 location /api 추가
## myems-api 서비스가 다른 서버에 있는 경우 기본 url http://127.0.0.1:8000/를 실제 url로 변경
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

example.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 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 및 start가 성공했지만 status가 Stopped인 경우 vc++가 설치되지 않았을 수 있습니다. vc++ 설치 주소: https://learn.microsoft.com/ko-kr/cpp/windows/latest-supported-vc-redist?view=msvc-170

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

example.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 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 파일 생성 및 필요에 따라 편집:

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

example.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-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;
# 페이지 새로고침 시 404 오류 방지 위해 try_files 지시문 추가
try_files $uri /index.html;
}
## CORS 문제를 피하기 위해 Nginx를 사용하여 myems-api를 /api 경로로 프록시
## 'server' 내에 다른 location /api 추가
## myems-api 서비스가 다른 서버에 있는 경우 기본 url http://127.0.0.1:8000/를 실제 url로 변경
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/ko 버전 요구 사항:

  • 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

MyEMS API: 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