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

Hướng dẫn Triển khai MyEMS trên Debian/Ubuntu (Bản tiếng Việt)


Trong hướng dẫn này, bạn sẽ triển khai MyEMS trên máy chủ Debian hoặc Ubuntu.

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

Hướng dẫn này mô tả cách cài đặt MyEMS trên Ubuntu 24.04 LTS / Ubuntu 22.04 LTS / Ubuntu 20.04 LTS / Ubuntu 18.04 LTS / Debian 12 Bookworm / Debian 11 Bullseye / Debian 10 Buster. 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 và MySQL trên một máy duy nhất, bạn sẽ cần ít nhất 4GB RAM.

Clone mã nguồn:

cd ~
git clone https://github.com/myems/myems

Bước 1: Cài đặt Cơ sở dữ liệu

Xem mục Cơ sở dữ liệu

Bước 2: Cài đặt myems-api

  • Cài đặt dịch vụ myems-api:
sudo cp -r ~/myems/myems-api /myems-api
cd /myems-api
sudo apt install python3-pip
sudo pip install -r requirements.txt
Lưu ý

(Ubuntu 24.04 LTS) Nếu lệnh trên không hoạt động, bạn có thể sử dụng lệnh sau:

sudo pip install -r requirements.txt --break-system-packages

Tạo tệp .env dựa trên example.env và chỉnh sửa tệp .env nếu cần:

sudo cp /myems-api/example.env /myems-api/.env
sudo nano /myems-api/.env

Thêm cổng vào tường lửa:

sudo ufw allow 8000

Cấu hình các tệp systemd:

sudo cp /myems-api/myems-api.service /lib/systemd/system/
sudo cp /myems-api/myems-api.socket /lib/systemd/system/
sudo cp /myems-api/myems-api.conf /usr/lib/tmpfiles.d/

Kích hoạt các dịch vụ để tự động khởi động khi máy chủ khởi chạy:

sudo systemctl enable myems-api.socket
sudo systemctl enable myems-api.service

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

sudo systemctl start myems-api.socket
sudo systemctl start myems-api.service

Bước 3: Cài đặt myems-admin

  • Cài đặt Máy chủ NGINX

Xem hướng dẫn tại http://nginx.org/en/linux_packages.html#Debian

Kích hoạt dịch vụ nginx:

sudo systemctl start nginx.service
  • Cấu hình NGINX
sudo nano /etc/nginx/nginx.conf

Trong phần 'http', thêm các chỉ thị sau:

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

}

Thêm tệp mới trong thư mục /etc/nginx/conf.d/

sudo nano /etc/nginx/conf.d/myems-admin.conf

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

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/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 location /api khác trong 'server'
## Thay đổi URL mặc định của myems-api http://127.0.0.1:8000/ bằng URL thực tế nếu dịch vụ myems-api được host 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 với internet, vui lòng nén thư mục myems/myems-admin và tải lên máy chủ, sau đó giải nén vào ~/myems/myems-admin
sudo mkdir /var/www
sudo cp -r ~/myems/myems-admin  /var/www/myems-admin
sudo chmod 0755 -R /var/www/myems-admin

Kiểm tra tệp cấu hình và thay đổi nếu cần:

sudo nano /var/www/myems-admin/app/api.js
Cảnh báo

Thư mục 'upload' dùng để lưu trữ các tệp người dùng tải lên. KHÔNG xóa/di chuyển/ghi đè thư mục 'upload' khi nâng cấp myems-admin.

 /var/www/myems-admin/upload

Thêm cổng vào tường lửa:

sudo ufw allow 8001

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

sudo systemctl restart nginx.service

Bước 4: Cài đặt myems-modbus-tcp

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

sudo cp -r ~/myems/myems-modbus-tcp /myems-modbus-tcp
cd /myems-modbus-tcp
sudo pip install -r requirements.txt
Lưu ý

(Ubuntu 24.04 LTS) Nếu lệnh trên không hoạt động, bạn có thể sử dụng lệnh sau:

sudo pip install -r requirements.txt --break-system-packages

Sao chép tệp exmaple.env thành .env và chỉnh sửa tệp .env:

sudo cp /myems-modbus-tcp/example.env /myems-modbus-tcp/.env
sudo nano /myems-modbus-tcp/.env

Cấu hình dịch vụ systemd:

sudo cp myems-modbus-tcp.service /lib/systemd/system/

Kích hoạt dịch vụ:

sudo systemctl enable myems-modbus-tcp.service

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

sudo systemctl start myems-modbus-tcp.service

Theo dõi trạng thái dịch vụ:

sudo systemctl status myems-modbus-tcp.service

Xem log:

cat /myems-modbus-tcp.log

Bước 5: Cài đặt myems-cleaning

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

sudo cp -r ~/myems/myems-cleaning /myems-cleaning
cd /myems-cleaning
sudo pip install -r requirements.txt
Lưu ý

(Ubuntu 24.04 LTS) Nếu lệnh trên không hoạt động, bạn có thể sử dụng lệnh sau:

sudo pip install -r requirements.txt --break-system-packages

Sao chép tệp exmaple.env thành .env và chỉnh sửa tệp .env:

sudo cp /myems-cleaning/example.env /myems-cleaning/.env
sudo nano /myems-cleaning/.env

Cấu hình dịch vụ systemd:

sudo cp /myems-cleaning/myems-cleaning.service /lib/systemd/system/

Kích hoạt dịch vụ:

sudo systemctl enable myems-cleaning.service

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

sudo systemctl start myems-cleaning.service

Theo dõi trạng thái dịch vụ:

sudo systemctl status myems-cleaning.service

Xem log:

cat /myems-cleaning.log

Bước 6: Cài đặt myems-normalization

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

sudo cp -r ~/myems/myems-normalization /myems-normalization
cd /myems-normalization
sudo pip install -r requirements.txt
Lưu ý

(Ubuntu 24.04 LTS) Nếu lệnh trên không hoạt động, bạn có thể sử dụng lệnh sau:

sudo pip install -r requirements.txt --break-system-packages

Sao chép tệp exmaple.env thành .env và chỉnh sửa tệp .env:

sudo cp /myems-normalization/example.env /myems-normalization/.env
sudo nano /myems-normalization/.env

Cấu hình dịch vụ systemd:

sudo cp /myems-normalization/myems-normalization.service /lib/systemd/system/

Kích hoạt dịch vụ:

sudo systemctl enable myems-normalization.service

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

sudo systemctl start myems-normalization.service

Theo dõi trạng thái dịch vụ:

sudo systemctl status myems-normalization.service

Xem log:

cat /myems-normalization.log

Bước 7: Cài đặt myems-aggregation

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

sudo cp -r ~/myems/myems-aggregation /myems-aggregation
cd /myems-aggregation
sudo pip install -r requirements.txt
Lưu ý

(Ubuntu 24.04 LTS) Nếu lệnh trên không hoạt động, bạn có thể sử dụng lệnh sau:

sudo pip install -r requirements.txt --break-system-packages

Sao chép tệp exmaple.env thành .env và chỉnh sửa tệp .env:

sudo cp /myems-aggregation/example.env /myems-aggregation/.env
sudo nano /myems-aggregation/.env

Cấu hình dịch vụ systemd:

sudo cp /myems-aggregation/myems-aggregation.service /lib/systemd/system/

Kích hoạt dịch vụ:

sudo systemctl enable myems-aggregation.service

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

sudo systemctl start myems-aggregation.service

Theo dõi trạng thái dịch vụ:

sudo systemctl status myems-aggregation.service

Xem log:

cat /myems-aggregation.log

Bước 8: Cài đặt myems-web

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

Xóa các tệp mặc định:

sudo rm /etc/nginx/sites-enabled/default
sudo rm /etc/nginx/conf.d/default.conf

Thêm tệp mới trong thư mục /etc/nginx/conf.d/:

sudo nano /etc/nginx/conf.d/myems-web.conf

Thêm phần 'server' mới với các chỉ thị như sau:

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
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 location /api khác trong 'server' và thay đổi địa chỉ demo http://127.0.0.1:8000/ bằng URL thực tế
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:

sudo systemctl restart nginx
  • Cài đặt Giao diện Web MyEMS:

Cấu hình NodeJS:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt-get install -y nodejs
  • Chỉnh sửa tệp config.js:
Lưu ý

Lấy mapboxToken tại https://mapbox.com và sau đó đặt showOnlineMap thành true. Nếu bạn muốn tắt tính năng bản đồ trực tuyến, đặt showOnlineMap thành false.

cd myems/myems-web
sudo nano src/config.js

Xây dựng (Build) ứng dụng:

sudo npm i --unsafe-perm=true --allow-root --legacy-peer-deps
sudo npm run build

Cài đặt: Lưu ý rằng đường dẫn sau phải trùng với đường dẫn đã cấu hình trong nginx.conf.

sudo rm -r /var/www/myems-web
sudo mv build  /var/www/myems-web

Thêm cổng vào tường lửa:

sudo ufw allow 80

Khởi động lại NGINX:

sudo systemctl restart nginx

Sau khi cài đặt

Chúc mừng! Bạn đã có thể đăng nhập vào Giao diện quản trị MyEMS Admin UI và Web UI.

Cổng mặc định

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

Giả sử địa chỉ máy chủ là 192.168.1.8 (thay bằng địa chỉ máy chủ thực tế) Truy cập MyEMS Web UI tại http://192.168.1.8 (có thể bỏ qua cổng 80) Truy cập MyEMS Admin UI tại http://192.168.1.8:8001

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

MyEMS Admin UI

Tên người dùng:

administrator

Mật khẩu:

!MyEMS1

MyEMS Web UI

Tên người dùng:

administrator@myems.io

Mật khẩu:

!MyEMS1

Khắc phục sự cố

Nếu gặp lỗi 'error: externally-managed-environment' khi thực hiện 'sudo pip install -r requirements.txt'

Tạo thư mục cấu hình môi trường ảo:

sudo python -m venv venv

Bắt đầu sử dụng môi trường ảo:

source venv/bin/activate

Cài đặt các gói yêu cầu:

sudo venv/bin/pip install -r requirements.txt

Thoát khỏi môi trường ảo:

deactivate