본문으로 바로 가기

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