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

Anolis OS

Trong hướng dẫn này, bạn sẽ triển khai MyEMS trên Anolis OS.

Điều kiện tiên quyết

Hướng dẫn này mô tả cách cài đặt MyEMS trên Anolis OS 8. 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 4GB RAM.

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

sudo dnf update
sudo yum install python39
sudo ln -sb /bin/python3.9 /bin/python3
sudo ln -sb /bin/pip3.9 /bin/pip3
sudo ln -sb /bin/python3.9 /bin/python
sudo ln -sb /bin/pip3.9 /bin/pip
sudo dnf install git

Sao chép mã nguồn:

cd ~
git clone https://github.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 tệp .env nếu cần:

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

Kiểm tra hoặc thay đổi cổng lắng nghe (mặc định là 8000) trong myems-api.service và myems-api.socket:

sudo nano /myems-api/myems-api.service
ExecStart=/usr/local/bin/gunicorn -b 0.0.0.0:8000 --pid /run/myems-api/pid --timeout 600 --workers=4 app:api
sudo nano /myems-api/myems-api.socket
ListenStream=0.0.0.0:8000

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ấ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/

Tiếp theo, kích hoạt các dịch vụ để chúng tự động khởi động khi boot:

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: myems-admin

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

tham khảo http://nginx.org/en/linux_packages.html#RHEL

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

}

Thêm tệp mới vào /etc/nginx/conf.d/

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

Viết với các chỉ thị như bên dưới, và 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

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## To avoid CORS issue, use Nginx to proxy myems-api to path /api
## Add another location /api in 'server'
## Replace the default myems-api url http://127.0.0.1:8000/ with actual url if the myems-api servcie hosted on different server
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ủ 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à thay đổi nếu cần thiết:
sudo nano /var/www/myems-admin/app/api.js
Cảnh báo

Thư mục 'upload' là nơi 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

Mở khóa cổng và 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 nginx '403 Forbidden', bạn có thể khắc phục bằng cách chuyển chế độ SELinux với lệnh 'sudo setenforce 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 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

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

Copy exmaple.env file to .env and modify the .env file:

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

Setup systemd service:

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

Enable the service:

sudo systemctl enable myems-cleaning.service

Start the service:

sudo systemctl start myems-cleaning.service

Monitor the service:

sudo systemctl status myems-cleaning.service

View the log:

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

Copy exmaple.env file to .env and modify the .env file:

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

Setup systemd service:

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

Enable the service:

sudo systemctl enable myems-normalization.service

Start the service:

sudo systemctl start myems-normalization.service

Monitor the service:

sudo systemctl status myems-normalization.service

View the log:

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

Copy exmaple.env file to .env and modify the .env file:

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

Setup systemd service:

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

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ụ giao diện người dùng myems-web.

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

tham khảo http://nginx.org/en/linux_packages.html#RHEL

  • Cấu hình NGINX

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 vào /etc/nginx/conf.d/

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

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

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# add try_files directive to avoid 404 error while refreshing pages
try_files $uri /index.html;
}
## To avoid CORS issue, use Nginx to proxy myems-api to path /api
## Add another location /api in 'server'
## replace the default myems-api url http://127.0.0.1:8000/ with actual url if the myems-api servcie hosted on different server
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 Web UI:

Cài đặt NodeJS:

sudo dnf module list nodejs
sudo dnf module reset nodejs:16/common
sudo dnf module install nodejs:16/common
  • Chỉnh sửa tệp config.js:
Ghi chú

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, hãy đặt showOnlineMap thành false

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

Nếu 'node -v' trả về 'v16.xx.xx', các tham số '--openssl-legacy-provider' của lệnh start và build phải được xóa khỏi package.json

sudo nano package.json
  ...
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
...

Biên dịch và nén

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

Cài đặt Tải các tệp lên máy chủ web của bạn. Lưu ý rằng đường dẫn sau phải giống với cấu hình trong nginx.conf.

sudo mv build  /var/www/myems-web

Mở khóa cổng và 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 dịch vụ nginx:

sudo systemctl restart nginx.service
Mẹo

Nếu bạn gặp lỗi nginx '500 Internal Server Error', bạn có thể khắc phục bằng cách chuyển chế độ SELinux với lệnh 'sudo setenforce 0'

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 và giao diện web MyEMS.

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ỉ thực tế) Truy cập MyEMS Web UI tại http://192.168.1.8 (có thể bỏ 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 nhập:

administrator

Mật khẩu:

!MyEMS1

MyEMS Web UI

Tên đăng nhập:

administrator@myems.io

Mật khẩu:

!MyEMS1

Khắc phục sự cố