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

Hệ điều hành Kylin

Trong hướng dẫn này, bạn sẽ triển khai MyEMS trên máy chủ Kylin V11.

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

Hướng dẫn này mô tả cách cài đặt MyEMS trên Kylin V11. 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, bạn cần ít nhất 8GB RAM.

Cập nhật hệ thống và cài đặt công cụ:

sudo yum update
sudo yum install git
systemctl stop firewalld

Clone mã nguồn:

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

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

Xem Cơ sở dữ liệu

Bước 2 myems-api

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

Tạo tệp .env dựa trên example.env và chỉnh sửa 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 firewall-cmd --zone=public --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

Cài đặt tệp cấu hình 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/

Tiếp theo, bật dịch vụ để tự khởi động khi boot:

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

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

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

Bước 3 myems-admin

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

Xem http://nginx.org/en/linux_packages.html#RHEL

Bật dịch vụ nginx:

yum install -y nginx
sudo systemctl start nginx.service
  • Cấu hình NGINX
sudo vi /etc/nginx/nginx.conf

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

}

Tạo tệp mới trong /etc/nginx/conf.d/:

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

Viết các chỉ thị sau. Nếu dịch vụ myems-api chạy trên máy chủ khác, 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 /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 một location /api khác trong 'server'
## Thay URL mặc định myems-api 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, nén thư mục myems/myems-admin, tải lên máy chủ rồi 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à chỉnh sửa nếu cần:

sudo nano /var/www/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. Không xóa, di chuyển hoặc 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 semanage port -a -t http_port_t  -p tcp 8001
sudo firewall-cmd --zone=public --add-port=8001/tcp --permanent
sudo firewall-cmd --reload

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

sudo systemctl restart nginx.service

MẸO

Nếu bạn gặp lỗi '403 Cấm truy cập' trên nginx, có thể khắc phục bằng cách thay đổi chế độ SELinux bằng lệnh 'sudo setforce 0'.

Bước 4 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

Sao chép tệp example.env sang .env và sửa tệp .env:

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

Cài đặt dịch vụ systemd:

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

Bật dịch vụ:

sudo systemctl enable myems-modbus-tcp.service

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

sudo systemctl start myems-modbus-tcp.service

Giám sát dịch vụ:

sudo systemctl status myems-modbus-tcp.service

Xem nhật ký:

cat /myems-modbus-tcp.log

Bước 5 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

Sao chép tệp example.env sang .env và sửa tệp .env:

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

Cài đặt dịch vụ systemd:

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

Bật dịch vụ:

sudo systemctl enable myems-cleaning.service

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

sudo systemctl start myems-cleaning.service

Giám sát dịch vụ:

sudo systemctl status myems-cleaning.service

Xem nhật ký:

cat /myems-cleaning.log

Bước 6 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

Sao chép tệp example.env sang .env và sửa tệp .env:

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

Cài đặt dịch vụ systemd

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

Bật dịch vụ:

sudo systemctl enable myems-normalization.service

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

sudo systemctl start myems-normalization.service

Giám sát dịch vụ:

sudo systemctl status myems-normalization.service

Xem nhật ký:

cat /myems-normalization.log

Bước 7 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

Sao chép tệp example.env sang .env và sửa tệp .env:

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

Cài đặt dịch vụ systemd

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

Bật dịch vụ:

sudo systemctl enable myems-aggregation.service

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

sudo systemctl start myems-aggregation.service

Giám sát dịch vụ:

sudo systemctl status myems-aggregation.service

Xem nhật ký:

cat /myems-aggregation.log

Bước 8 myems-web

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

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

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

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

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, thay thế địa chỉ 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 /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 một location /api khác trong 'server'
## thay URL mặc định myems-api 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 giao diện web MyEMS:

Chỉnh sửa tệp cấu hình:

LƯU Ý

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

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

Build:

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

Cài đặt: Lưu ý đường dẫn bên dưới phải khớp 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 semanage port -a -t http_port_t  -p tcp 80
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

Khởi động lại NGINX

sudo systemctl restart nginx

MẸO

Nếu bạn gặp lỗi '500 Lỗi máy chủ nội bộ' trên nginx, có thể khắc phục bằng cách thay đổi chế độ SELinux bằng lệnh 'sudo setforce 0'.

Sau khi cài đặt

Chúc mừng! Bây giờ bạn có thể đăng nhập vào giao diện quản trị 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 bạn) Địa chỉ giao diện web MyEMS: http://192.168.1.8 (có thể bỏ cổng 80) Địa chỉ giao diện quản trị MyEMS: 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

Khắc phục sự cố

Cài đặt MySQL 8.0

1. Chuẩn bị

Kiểm tra môi trường hệ thống

# Kiểm tra phiên bản hệ thống
cat /etc/redhat-release

# Kiểm tra xem MySQL đã được cài đặt chưa
rpm -qa | grep mysql
rpm -qa | grep mariadb

# Gỡ cài đặt mariadb nếu có
rpm -e --nodeps mariadb-libs-*

2. Tải gói rpm chính thức của MySQL

https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.45-1.el8.x86_64.rpm-bundle.tar

3. Cài đặt MySQL 8.0

tar -xvf *.tar
yum localinstall *.rpm

# Nếu gặp vấn đề về khóa GPG, sử dụng tạm thời
yum install -y mysql-community-server --nogpgcheck

4. Khởi động dịch vụ MySQL

# Khởi động MySQL
systemctl start mysqld

# Bật tự khởi động khi boot
systemctl enable mysqld

# Kiểm tra trạng thái dịch vụ
systemctl status mysqld

5. Lấy mật khẩu khởi tạo

# Xem mật khẩu tạm thời do MySQL tạo
grep 'temporary password' /var/log/mysqld.log

6. Cấu hình bảo mật

# Chạy script cài đặt bảo mật
mysql_secure_installation

Làm theo hướng dẫn:

  1. Nhập mật khẩu tạm thời
  2. Đặt mật khẩu mới (phải chứa chữ hoa, chữ thường, số và ký tự đặc biệt)
  3. Thay đổi mật khẩu root? Y
  4. Xóa người dùng ẩn danh? Y
  5. Ngăn đăng nhập root từ xa? Chọn theo nhu cầu
  6. Xóa cơ sở dữ liệu thử nghiệm? Y
  7. Tải lại bảng quyền? Y

7. Đăng nhập và kiểm tra MySQL

# Đăng nhập vào MySQL
mysql -u root -p

# Kiểm tra phiên bản
SELECT VERSION();

# Liệt kê cơ sở dữ liệu
SHOW DATABASES;

8. Cấu hình bộ ký tự (Tùy chọn)

Chỉnh sửa tệp cấu hình:

vi /etc/my.cnf

Thêm nội dung sau:

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'


# Giảm chính sách mật khẩu nếu cần
validate_password.policy = LOW
validate_password.length = 6
validate_password.mixed_case_count = 0
validate_password.number_count = 0
validate_password.special_char_count = 0

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

systemctl restart mysqld

9. Cấu hình tường lửa

# Mở cổng 3306
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# Hoặc dừng tường lửa (không khuyến nghị)
# systemctl stop firewalld

10. Cấu hình truy cập từ xa (Tùy chọn)

-- Đăng nhập vào MySQL
mysql -u root -p

-- Tạo người dùng truy cập từ xa
CREATE USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Cập nhật mật khẩu
ALTER USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Cấp tất cả quyền
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- Áp dụng thay đổi
FLUSH PRIVILEGES;

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

1. Lỗi thiếu bộ nhớ

Nếu máy chủ có ít bộ nhớ, giới hạn sử dụng bộ nhớ của MySQL:

vi /etc/my.cnf
# Thêm các cấu hình này
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 16M
max_connections = 100

2. Khắc phục lỗi khởi động

# Xem nhật ký lỗi
tail -f /var/log/mysqld.log

# Kiểm tra sử dụng cổng
netstat -tlnp | grep 3306

3. Thay đổi chính sách mật khẩu

-- Xem chính sách mật khẩu hiện tại
SHOW VARIABLES LIKE 'validate_password%';

-- Giảm chính sách (nếu cần mật khẩu đơn giản)
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 6;

Kiểm tra cài đặt

# Kiểm tra tiến trình MySQL
ps aux | grep mysql

# Kiểm tra cổng
netstat -tlnp | grep 3306

# Kiểm tra phiên bản MySQL
mysql --version