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

FreeBSD

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

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

Hướng dẫn này mô tả cách cài đặt MyEMS trên FreeBSD 13.2. 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ụ

pkg install git
pkg install python3
pkg install py39-pip-22.3.1
pkg install nginx
pkg install monit

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:
cp -r ~/myems/myems-api /myems-api
cd /myems-api
pip install -r requirements.txt
Mẹo

Nếu bạn gặp lỗi 'Failed building wheel for pillow', bạn cần Cài đặt Pillow

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

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

Sử dụng dịch vụ giám sát monit và chỉnh sửa tệp cấu hình monit:

nano /etc/monit.d/myems-api
check process mymes-api with pidfile /var/run/myems-api/pid
start program = "/usr/local/bin/gunicorn -b 0.0.0.0:8000 --pid /var/run/myems-api/pid --timeout 600 --workers=4 app:api &"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

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

monit restart

Bước 3: myems-admin

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

tham khảo http://nginx.org/en/docs/install.html

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

service nginx enable
  • Cấu hình NGINX
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/

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
mkdir /var/www
cp -r ~/myems/myems-admin  /var/www/myems-admin
chmod 0755 /var/www/myems-admin
Kiểm tra tệp cấu hình và thay đổi nếu cần thiết:
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

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

service nginx restart

Bước 4: myems-modbus-tcp

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

cp -r ~/myems/myems-modbus-tcp /myems-modbus-tcp
cd /myems-modbus-tcp
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:

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

Sử dụng dịch vụ giám sát monit và chỉnh sửa tệp cấu hình monit:

nano /etc/monit.d/myems-modbus-tcp
check file myems-modbus-tcp path /myems-modbus-tcp/main.py
start program = "/usr/local/bin/python3 /myems-modbus-tcp/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

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

monit restart

Bước 5: myems-cleaning

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

cp -r ~/myems/myems-cleaning /myems-cleaning
cd /myems-cleaning
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:

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

Sử dụng dịch vụ giám sát monit và chỉnh sửa tệp cấu hình monit:

nano /etc/monit.d/myems-cleaning
check file myems-cleaning path /myems-cleaning/main.py
start program = "/usr/local/bin/python3 /myems-cleaning/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

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

monit restart

Bước 6: myems-normalization

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

cp -r ~/myems/myems-normalization /myems-normalization
cd /myems-normalization
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:

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

Sử dụng dịch vụ giám sát monit và chỉnh sửa tệp cấu hình monit:

nano /etc/monit.d/myems-normalization
check file myems-normalization path /myems-normalization/main.py
start program = "/usr/local/bin/python3 /myems-normalization/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

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

monit restart

Bước 7: myems-aggregation

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

cp -r ~/myems/myems-aggregation /myems-aggregation
cd /myems-aggregation
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:

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

Sử dụng dịch vụ giám sát monit và chỉnh sửa tệp cấu hình monit:

nano /etc/monit.d/myems-aggregation
check file myems-aggregation path /myems-aggregation/main.py
start program = "/usr/local/bin/python3 /myems-aggregation/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

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

monit restart

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/docs/install.html

  • 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:

pkg install node-18.16.0

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
nano src/config.js

Biên dịch

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

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

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

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

service nginx restart

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ố