Đi đến nội dung chính

Windows 10 / 11 / Server

Trong hướng dẫn này, bạn sẽ triển khai MyEMS trên máy chủ Windows 10, Windows 11 và Windows Server.

Yêu cầu tiên quyết

Hướng dẫn này mô tả cách cài đặt MyEMS trên Windows 10, Windows 11 và Windows Server 2022. Yêu cầu phần cứng phụ thuộc vào cơ sở dữ liệu được chọn và số lượng thiết bị kết nối với hệ thống. Để chạy MyEMS, MySQL và một trong các phiên bản Python 3.10, 3.11 hoặc 3.12 trên một máy tính, cần ít nhất 8GB RAM.

Clone mã nguồn:

Chạy Windows PowerShell với quyền Quản trị viên
cd C:\
git clone https://gitee.com/myems/myems

Cài đặt Python 3.10:

https://www.python.org/downloads/windows/
Bộ cài Python 3.10.11 phiên bản 64-bit cho hệ thống 64-bit
Tải xuống Windows installer (64-bit)
Chạy bộ cài Python
Nhấp đúp: python-3.10.11-amd64.exe
Đánh dấu chọn “Add Python to PATH” và nhấp vào “Customize installation”
Đảm bảo tất cả các tùy chọn được chọn, đặc biệt là pip, cần thiết để cài đặt thư viện sau này; nhấp Next
Đánh dấu chọn mục đầu tiên, thay đổi đường dẫn cài đặt Python, sau đó nhấp install
Lưu ý: Mặc định cài tại C:\Program Files\Python310 Vui lòng đổi thành C:\Python310
Hoàn tất cài đặt, nhấp close
Trong Command Prompt gõ python, nhấn Enter nếu xuất hiện phiên bản Python là cài đặt thành công

Bước 1 Cơ sở dữ liệu

Tham khảo Database

Dưới đây là các bước chi tiết tải và cài đặt cơ sở dữ liệu MySQL (ví dụ MySQL 8.0, phiên bản Community miễn phí).

1.1 Tải bộ cài MySQL

  1. Mở trang chính thức: https://dev.mysql.com/downloads/mysql/
  2. Chọn nền tảng Windows, thường có hai tùy chọn:
    • mysql-installer-web-community (cài online, dung lượng nhỏ)
    • mysql-installer-community (bộ cài offline đầy đủ, khuyến nghị)
  3. Nhấp Download, nếu yêu cầu đăng nhập có thể bỏ qua (No thanks, just start my download)

1.2 Cài đặt MySQL

  1. Nhấp đúp chạy bộ cài đã tải (có thể cần quyền quản trị viên)
  2. Chọn loại cài đặt (khuyến nghị Developer Default hoặc Custom)
    • Developer Default: Cài MySQL Server, Workbench, Shell và các công cụ thông dụng khác
    • Custom: Tùy chỉnh thành phần cài đặt
  3. Nhấp Next, trình cài sẽ tự động kiểm tra phụ thuộc và tải các thành phần còn thiếu
  4. Nhấp Execute để bắt đầu cài đặt, hoàn tất thì nhấp Next

1.3 Cấu hình MySQL Server

  1. Type and Networking

    • Config Type: Chọn Development Computer
    • Port: Mặc định 3306 (không cần thay đổi)
    • Nhấp Next
  2. Authentication Method

    • Khuyến nghị chọn Use Strong Password Encryption (mã hóa mới)
    • Hoặc chọn thứ hai (tương thích phiên bản cũ)
    • Nhấp Next
  3. Accounts and Roles

    • Đặt mật khẩu root (nhớ chắc chắn)
    • Tùy chọn thêm người dùng thông thường (có thể bỏ qua)
    • Nhấp Next
  4. Windows Service

    • Đánh dấu chọn Configure MySQL Server as a Windows Service
    • Service Name: MySQL80 (mặc định)
    • Đánh dấu chọn Start the MySQL Server at System Startup
    • Nhấp Next
  5. Apply Configuration

    • Nhấp Execute để áp dụng cấu hình
    • Tất cả các bước có dấu tick xanh là thành công
    • Nhấp Finish

1.4 Hoàn tất cài đặt

  1. Tiếp tục nhấp Next cho đến khi xuất hiện Finish
  2. Đánh dấu chọn Start MySQL Workbench after Setup (tùy chọn)
  3. Nhấp Finish để thoát trình hướng dẫn cài đặt

1.5 Kiểm tra cài đặt

Phương pháp 1: Kiểm tra dòng lệnh

  1. Nhấn Win + R, gõ cmd nhấn Enter
  2. Nhập:
    mysql -u root -p
  3. Nhập mật khẩu root bạn đã đặt
  4. Xuất hiện dấu nhắc mysql> là thành công

Phương pháp 2: Kiểm tra dịch vụ

  1. Nhấn Win + R, gõ services.msc
  2. Tìm MySQL80, trạng thái phải là “Đang chạy”

1.6 Cài đặt ban đầu thông dụng (tùy chọn)

Sau khi đăng nhập MySQL, thực thi:

-- Xem cơ sở dữ liệu
show databases;

-- Tạo cơ sở dữ liệu mới
create database mydb;

-- Tạo người dùng truy cập từ xa (tùy chọn)
create user 'myems'@'%' identified by 'mật_khẩu';
grant all privileges on *.* to 'myems'@'%';
flush privileges;

Các vấn đề thường gặp

Vấn đềGiải pháp
Cổng 3306 bị chiếm dụngThay đổi cổng khác khi cài đặt (ví dụ 3307)
Quên mật khẩu rootCần khởi động MySQL bỏ qua bảng phân quyền, khá phức tạp
Không khởi động được dịch vụKiểm tra cổng bị chiếm dụng hoặc xem Nhật ký sự kiện Windows

Bước 2 myems-api

  • Cài đặt dịch vụ myems-api:
# 1. Mở cửa sổ CMD mới với quyền Quản trị viên

# 2. Đặt biến môi trường
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. Vào thư mục dự án
cd C:\myems\myems-api

# 4. Cài đặt lại tất cả các gói
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

Tạo tệp .env từ example.env và chỉnh sửa .env theo nhu cầu:

copy .\example.env .env
Mở và chỉnh sửa  C:\myems\myems-api\.env bằng trình soạn thảo văn bản
Sửa thông tin cơ sở dữ liệu

Cài đặt Dịch vụ Windows: Các bước cài đặt đầy đủ (chạy CMD với quyền Quản trị viên)

# 1. Xóa hoàn toàn các dịch vụ cũ
sc delete MyEMSAPI

# 2. Tạo thư mục log
mkdir C:\myems\myems-api\logs 2>nul

# 3. Tải WinSW (nếu chưa tải)
https://github.com/winsw/winsw/releases
Đổi tên WinSW-x64.exe thành MyEMSAPI.exe

cd C:\myems\myems-api

# 4. Tạo tệp cấu hình
Tạo `C:\myems\myems-api\MyEMSAPI.xml` (dùng notepad hoặc lệnh dưới):
notepad C:\myems\myems-api\MyEMSAPI.xml
Sao chép nội dung sau vào notepad:
<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>
Lưu và đóng notepad.

# 5. Cài đặt dịch vụ
MyEMSAPI.exe install

# 6. Khởi động dịch vụ
MyEMSAPI.exe start

# 7. Xem trạng thái
MyEMSAPI.exe status

# 8. Kiểm tra dịch vụ
curl http://localhost:8000

# 9. Nếu có lỗi xem log
C:\myems\myems-api\logs

Bước 3 myems-admin

Khởi động dịch vụ nginx chạy nền:

start /b nginx.exe
  • Cấu hình NGINX
cd C:\Program Files\nginx-1.29.1\conf
Mở và chỉnh sửa nginx.conf bằng trình soạn thảo văn bản

Trong phần 'http', thêm một số chỉ thị:

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

}

Viết các chỉ thị sau, nếu dịch vụ myems-api chạy trên máy chủ khác thì thay thế địa chỉ mặc định http://127.0.0.1:8000/ bằng địa chỉ thực tế

  server {
listen 8001;
server_name myems-admin;
location / {
root C:\myems-admin;
index index.html index.htm;
}
## Để tránh vấn đề CORS, sử dụng Nginx để proxy myems-api đến đường dẫn /api
## Thêm một location /api khác trong 'server'
## Thay thế url myems-api mặc định http://127.0.0.1:8000/ bằng url thực tế nếu dịch vụ myems-api được lưu trữ trên máy chủ khác
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Cài đặt myems-admin: Nếu máy chủ không thể kết nối internet, hãy nén thư mục myems/myems-admin và tải lên máy chủ,
  • sau đó giải nén vào c:\myems-admin

Kiểm tra tệp cấu hình, thực hiện thay đổi nếu cần:

c:\myems-admin\app\api.js
Cảnh báo

Thư mục “upload” dùng cho tệp người dùng tải lên. Khi nâng cấp myems-admin, đừng xóa/di chuyển/ghi đè thư mục “upload”.

  C:\myems-admin\upload

Khởi động lại dịch vụ nginx:

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

Bước 4 myems-modbus-tcp

Ở bước này, bạn sẽ cài đặt dịch vụ myems-modbus-tcp.

cd C:\myems\myems-modbus-tcp
# 1. Mở cửa sổ CMD mới với quyền Quản trị viên

# 2. Đặt biến môi trường
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. Vào thư mục dự án
cd C:\myems\myems-modbus-tcp

# 4. Cài đặt lại tất cả các gói
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt

Tạo tệp .env từ example.env và chỉnh sửa .env theo nhu cầu:

copy .\example.env .env
Mở và chỉnh sửa  C:\myems\myems-modbus-tcp\.env bằng trình soạn thảo văn bản

Cài đặt Dịch vụ Windows:

# 1. Xóa hoàn toàn các dịch vụ cũ
sc delete MyEMSModbusTCP

# 2. Tạo thư mục log
mkdir C:\myems\myems-modbus-tcp\logs 2>nul

# 3. Tải WinSW (nếu chưa tải)
https://github.com/winsw/winsw/releases
Đổi tên WinSW-x64.exe thành MyEMSModbusTCP.exe

cd C:\myems\myems-modbus-tcp

# 4. Tạo tệp cấu hình
Tạo `C:\myems\myems-modbus-tcp\MyEMSModbusTCP.xml` (dùng notepad hoặc lệnh dưới):
notepad C:\myems\myems-modbus-tcp\MyEMSModbusTCP.xml
Sao chép nội dung sau vào notepad:
<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>
Lưu và đóng notepad.

# 5. Cài đặt dịch vụ
MyEMSModbusTCP.exe install

# 6. Khởi động dịch vụ
MyEMSModbusTCP.exe start

# 7. Xem trạng thái
MyEMSModbusTCP.exe status

# 8. Nếu có lỗi xem log
C:\myems\myems-modbus-tcp\logs

Nếu MyEMSModbusTCP.exe install và MyEMSModbusTCP.exe start đều thực thi thành công nhưng MyEMSModbusTCP.exe status vẫn là Stopped, có thể chưa cài vc++. Địa chỉ cài vc++: https://learn.microsoft.com/vi-vn/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022

Bước 5 myems-cleaning

Ở bước này, bạn sẽ cài đặt dịch vụ myems-cleaning.

cd C:\myems\myems-cleaning
# 1. Mở cửa sổ CMD mới với quyền Quản trị viên

# 2. Đặt biến môi trường
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. Vào thư mục dự án
cd C:\myems\myems-cleaning

# 4. Cài đặt lại tất cả các gói
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt

Tạo tệp .env từ example.env và chỉnh sửa .env theo nhu cầu:

copy C:\myems\myems-cleaning\example.env .env
Mở và chỉnh sửa  C:\myems\myems-cleaning\.env bằng trình soạn thảo văn bản

Cài đặt Dịch vụ Windows:

# 1. Xóa hoàn toàn các dịch vụ cũ
sc delete MyEMSCleaning


# 2. Tạo thư mục log
mkdir C:\myems\myems-cleaning\logs 2>nul

# 3. Tải WinSW (nếu chưa tải)
https://github.com/winsw/winsw/releases
Đổi tên WinSW-x64.exe thành MyEMSCleaning.exe

cd C:\myems\myems-cleaning

# 4. Tạo tệp cấu hình
Tạo `C:\myems\myems-cleaning\MyEMSCleaning.xml` (dùng notepad hoặc lệnh dưới):
notepad C:\myems\myems-cleaning\MyEMSCleaning.xml
Sao chép nội dung sau vào notepad:
<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>
Lưu và đóng notepad.

# 5. Cài đặt dịch vụ
MyEMSCleaning.exe install

# 6. Khởi động dịch vụ
MyEMSCleaning.exe start

# 7. Xem trạng thái
MyEMSCleaning.exe status

# 8. Nếu có lỗi xem log
C:\myems\myems-cleaning\logs

Bước 6 myems-normalization

Ở bước này, bạn sẽ cài đặt dịch vụ myems-normalization.

cd C:\myems\myems-normalization
# 1. Mở cửa sổ CMD mới với quyền Quản trị viên

# 2. Đặt biến môi trường
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. Vào thư mục dự án
cd C:\myems\myems-normalization

# 4. Cài đặt lại tất cả các gói
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt

Tạo tệp .env từ example.env và chỉnh sửa .env theo nhu cầu:

copy C:\myems\myems-normalization\example.env .env
Mở và chỉnh sửa  C:\myems\myems-normalization\.env bằng trình soạn thảo văn bản

Cài đặt Dịch vụ Windows:

# 1. Xóa hoàn toàn các dịch vụ cũ
sc delete MyEMSNormalization


# 2. Tạo thư mục log
mkdir C:\myems\myems-normalization\logs 2>nul

# 3. Tải WinSW (nếu chưa tải)
https://github.com/winsw/winsw/releases
Đổi tên WinSW-x64.exe thành MyEMSNormalization.exe

cd C:\myems\myems-normalization

# 4. Tạo tệp cấu hình
Tạo `C:\myems\myems-normalization\MyEMSNormalization.xml` (dùng notepad hoặc lệnh dưới):
notepad C:\myems\myems-normalization\MyEMSNormalization.xml
Sao chép nội dung sau vào notepad:
<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>
Lưu và đóng notepad.

# 5. Cài đặt dịch vụ
MyEMSNormalization.exe install

# 6. Khởi động dịch vụ
MyEMSNormalization.exe start

# 7. Xem trạng thái
MyEMSNormalization.exe status

# 8. Nếu có lỗi xem log
C:\myems\myems-normalization\logs

Bước 7 myems-aggregation

Ở bước này, bạn sẽ cài đặt dịch vụ myems-aggregation.

cd C:\myems\myems-aggregation
# 1. Mở cửa sổ CMD mới với quyền Quản trị viên

# 2. Đặt biến môi trường
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. Vào thư mục dự án
cd C:\myems\myems-aggregation

# 4. Cài đặt lại tất cả các gói
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt

Tạo tệp .env từ example.env và chỉnh sửa .env theo nhu cầu:

copy C:\myems\myems-aggregation\example.env .env
Mở và chỉnh sửa  C:\myems\myems-aggregation\.env bằng trình soạn thảo văn bản

Cài đặt Dịch vụ Windows:

# 1. Xóa hoàn toàn các dịch vụ cũ
sc delete MyEMSAggregation

# 2. Tạo thư mục log
mkdir C:\myems\myems-aggregation\logs 2>nul

# 3. Tải WinSW (nếu chưa tải)
https://github.com/winsw/winsw/releases
Đổi tên WinSW-x64.exe thành MyEMSAggregation.exe

cd C:\myems\myems-aggregation

# 4. Tạo tệp cấu hình
Tạo `C:\myems\myems-aggregation\MyEMSAggregation.xml` (dùng notepad hoặc lệnh dưới):
notepad C:\myems\myems-aggregation\MyEMSAggregation.xml
Sao chép nội dung sau vào notepad:
<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>
Lưu và đóng notepad.

# 5. Cài đặt dịch vụ
MyEMSAggregation.exe install

# 6. Khởi động dịch vụ
MyEMSAggregation.exe start

# 7. Xem trạng thái
MyEMSAggregation.exe status

# 8. Nếu có lỗi xem log
C:\myems\myems-aggregation\logs

Bước 8 myems-web

Ở bước này, bạn sẽ cài đặt dịch vụ myems-web.

Khởi động dịch vụ nginx:

start /b nginx.exe
  • Cấu hình NGINX
cd C:\Program Files\nginx-1.29.1\conf
Mở và chỉnh sửa nginx.conf bằng trình soạn thảo văn bản

Viết các chỉ thị sau, nếu dịch vụ myems-api được lưu trữ trên máy chủ khác thì thay thế địa chỉ myems-api mặc định http://127.0.0.1:8000/ bằng địa chỉ thực tế

server {
listen 80;
server_name myems-web;
location / {
root C:\myems-web\build;
index index.html index.htm;
# thêm chỉ thị try_files để tránh lỗi 404 khi làm mới trang
try_files $uri /index.html;
}
## Để tránh vấn đề CORS, sử dụng Nginx để proxy myems-api đến đường dẫn /api
## Thêm một location /api khác trong 'server'
## thay thế url myems-api mặc định http://127.0.0.1:8000/ bằng url thực tế nếu dịch vụ myems-api lưu trữ trên máy chủ khác
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}

Khởi động lại Nginx

cd C:\Program Files\nginx-1.29.1
nginx.exe -s stop
start /b nginx.exe
  • Cài đặt Giao diện Web MyEMS:

Cài đặt NodeJS: https://nodejs.org/vi Yêu cầu phiên bản:

  • Node.js 22.22.2, 24.5.0 hoặc mới hơn
  • npm 10.9.7, 11.5.1 hoặc mới hơn
Ví dụ: C:\Program Files\nodejs
Cấu hình biến môi trường

Sửa tệp cấu hình:

cd C:\myems\myems-web
Mở và chỉnh sửa src/config.js bằng trình soạn thảo văn bản

Dựng dự án:

npm i
npm run build
Tạo thư mục build trong C:\myems\myems-web
mkdir C:\myems-web
move "C:\myems\myems-web\build" "C:\myems-web"

Nếu dựng dự án thất bại, xuất hiện lỗi timeout như sau:

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

Thực thi lệnh sau để chuyển nguồn mirror nội địa:

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

Sau cài đặt

Chúc mừng bạn hiện có thể đăng nhập vào Giao diện Quản trị MyEMS và Giao diện Web MyEMS.

Cổng mặc định

Giao diện Web MyEMS: 80

API MyEMS: 8000

Giao diện Quản trị MyEMS: 8001

Giả sử địa chỉ máy chủ là 192.168.1.8 (thay bằng địa chỉ thực tế của máy chủ) Địa chỉ truy cập Giao diện Web MyEMS là http://192.168.1.8 (có thể bỏ qua cổng 80) Địa chỉ truy cập Giao diện Quản trị MyEMS là http://192.168.1.8:8001

Mật khẩu mặc định

Giao diện Quản trị MyEMS

Tên người dùng:

administrator

Mật khẩu:

!MyEMS1

Giao diện Web MyEMS

Tên người dùng:

administrator

Mật khẩu:

!MyEMS1