ข้ามไปยังเนื้อหาหลัก

CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux

ในคู่มือนี้ คุณจะได้เรียนรู้วิธีปรับใช้ MyEMS บนเซิร์ฟเวอร์ CentOS หรือ RHEL

ข้อกำหนดเบื้องต้น

คู่มือนี้อธิบายวิธีการติดตั้ง MyEMS บน CentOS Stream 9 / Red Hat Enterprise Linux 9 (RHEL 9) / Rocky 9 / AlmaLinux 9.1 / Oracle Linux 9.1. ข้อกำหนดด้านฮาร์ดแวร์ขึ้นอยู่กับฐานข้อมูลที่เลือกและจำนวนอุปกรณ์ที่เชื่อมต่อกับระบบ. หากต้องการรัน MyEMS และ MySQL บนเครื่องเดียว คุณจะต้องมีหน่วยความจำ (RAM) อย่างน้อย 4GB.

อัปเดตระบบและติดตั้งเครื่องมือ

sudo dnf update
sudo dnf install git
sudo dnf install python3-pip

โคลนซอร์สโค้ด:

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

ขั้นตอนที่ 1 ฐานข้อมูล

ดู ฐานข้อมูล

ขั้นตอนที่ 2 myems-api

  • ติดตั้งบริการ myems-api:
sudo cp -r ~/myems/myems-api /myems-api
cd /myems-api
sudo pip install -r requirements.txt
หมายเหตุ

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) หากโค้ดไม่ทำงาน คุณสามารถใช้โค้ดต่อไปนี้: sudo pip install -r requirements.txt --break-system-packages

สร้างไฟล์ .env จาก example.env และแก้ไขไฟล์ .env หากจำเป็น:

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

เพิ่มพอร์ตไปยังไฟร์วอลล์:

sudo firewall-cmd --zone=public --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

ตั้งค่าไฟล์ 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/

เปิดใช้งานบริการเพื่อให้เริ่มอัตโนมัติเมื่อบูต:

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

เริ่มบริการ:

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

ขั้นตอนที่ 3 myems-admin

  • ติดตั้งเซิร์ฟเวอร์ NGINX

ดูข้อมูลที่ http://nginx.org/en/linux_packages.html#RHEL

เปิดใช้งานบริการ nginx:

sudo systemctl start nginx.service
  • กำหนดค่า NGINX
sudo nano /etc/nginx/nginx.conf

ในส่วน 'http' ให้เพิ่มคำสั่งดังนี้:

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

}

เพิ่มไฟล์ใหม่ที่ /etc/nginx/conf.d/

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

เขียนคำสั่งตามตัวอย่างด้านล่าง และเปลี่ยน URL myems-api จาก http://127.0.0.1:8000/ เป็น URL จริง หากบริการ myems-api อยู่บนเซิร์ฟเวอร์อื่น

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## เพื่อหลีกเลี่ยงปัญหา CORS ให้ใช้ Nginx เพื่อทำ proxy myems-api ไปยังเส้นทาง /api
## เพิ่ม location /api อีกหนึ่งรายการใน 'server'
## เปลี่ยน URL myems-api เริ่มต้น http://127.0.0.1:8000/ เป็น URL จริง หากบริการ myems-api อยู่บนเซิร์ฟเวอร์อื่น
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • ติดตั้ง myems-admin : หากเซิร์ฟเวอร์ไม่สามารถเชื่อมต่ออินเทอร์เน็ตได้ กรุณาบีบอัดโฟลเดอร์ myems/myems-admin แล้วอัปโหลดไปยังเซิร์ฟเวอร์และแตกไฟล์ไปที่ ~/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

ตรวจสอบไฟล์ config และแก้ไขหากจำเป็น:

sudo nano /var/www/myems-admin/app/api.js
ระวัง

โฟลเดอร์ 'upload' ใช้สำหรับไฟล์ที่ผู้ใช้อัปโหลด ห้ามลบ/ย้าย/เขียนทับ โฟลเดอร์ 'upload' เมื่ออัปเกรด myems-admin

 /var/www/myems-admin/upload

ปลดล็อกพอร์ตและเพิ่มพอร์ตไปยังไฟร์วอลล์:

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

รีสตาร์ทบริการ nginx:

sudo systemctl restart nginx.service
เคล็ดลับ

หากพบข้อผิดพลาด '403 Forbidden' ของ nginx สามารถแก้ไขได้โดยเปลี่ยนโหมด SELinux ด้วยคำสั่ง 'sudo setenforce 0'

ขั้นตอนที่ 4 myems-modbus-tcp

ในขั้นตอนนี้ คุณจะติดตั้งบริการ myems-modbus-tcp

sudo cp -r ~/myems/myems-modbus-tcp /myems-modbus-tcp
cd /myems-modbus-tcp
sudo pip install -r requirements.txt
หมายเหตุ

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) หากโค้ดไม่ทำงาน คุณสามารถใช้โค้ดต่อไปนี้: sudo pip install -r requirements.txt --break-system-packages

คัดลอกไฟล์ example.env ไปเป็น .env และแก้ไขไฟล์ .env:

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

ตั้งค่าบริการ systemd:

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

เปิดใช้งานบริการ:

sudo systemctl enable myems-modbus-tcp.service

เริ่มบริการ:

sudo systemctl start myems-modbus-tcp.service

ตรวจสอบสถานะบริการ:

sudo systemctl status myems-modbus-tcp.service

ดูบันทึก (log):

cat /myems-modbus-tcp.log

ขั้นตอนที่ 5 myems-cleaning

ในขั้นตอนนี้ คุณจะติดตั้งบริการ myems-cleaning

sudo cp -r ~/myems/myems-cleaning /myems-cleaning
cd /myems-cleaning
sudo pip install -r requirements.txt
หมายเหตุ

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) หากโค้ดไม่ทำงาน คุณสามารถใช้โค้ดต่อไปนี้: sudo pip install -r requirements.txt --break-system-packages

คัดลอกไฟล์ example.env ไปเป็น .env และแก้ไขไฟล์ .env:

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

ตั้งค่าบริการ systemd:

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

เปิดใช้งานบริการ:

sudo systemctl enable myems-cleaning.service

เริ่มบริการ:

sudo systemctl start myems-cleaning.service

ตรวจสอบสถานะบริการ:

sudo systemctl status myems-cleaning.service

ดูบันทึก (log):

cat /myems-cleaning.log

ขั้นตอนที่ 6 myems-normalization

ในขั้นตอนนี้ คุณจะติดตั้งบริการ myems-normalization

sudo cp -r ~/myems/myems-normalization /myems-normalization
cd /myems-normalization
sudo pip install -r requirements.txt
หมายเหตุ

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) หากโค้ดไม่ทำงาน คุณสามารถใช้โค้ดต่อไปนี้: sudo pip install -r requirements.txt --break-system-packages

คัดลอกไฟล์ example.env ไปเป็น .env และแก้ไขไฟล์ .env:

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

ตั้งค่าบริการ systemd:

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

เปิดใช้งานบริการ:

sudo systemctl enable myems-normalization.service

เริ่มบริการ:

sudo systemctl start myems-normalization.service

ตรวจสอบสถานะบริการ:

sudo systemctl status myems-normalization.service

ดูบันทึก (log):

cat /myems-normalization.log

ขั้นตอนที่ 7 myems-aggregation

ในขั้นตอนนี้ คุณจะติดตั้งบริการ myems-aggregation

sudo cp -r ~/myems/myems-aggregation /myems-aggregation
cd /myems-aggregation
sudo pip install -r requirements.txt
หมายเหตุ

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) หากโค้ดไม่ทำงาน คุณสามารถใช้โค้ดต่อไปนี้: sudo pip install -r requirements.txt --break-system-packages

คัดลอกไฟล์ example.env ไปเป็น .env และแก้ไขไฟล์ .env:

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

ตั้งค่าบริการ systemd:

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

เปิดใช้งานบริการ:

sudo systemctl enable myems-aggregation.service

เริ่มบริการ:

sudo systemctl start myems-aggregation.service

ตรวจสอบสถานะบริการ:

sudo systemctl status myems-aggregation.service

ดูบันทึก (log):

cat /myems-aggregation.log

ขั้นตอนที่ 8 myems-web

ในขั้นตอนนี้ คุณจะติดตั้งบริการ myems-web UI

  • ติดตั้งเซิร์ฟเวอร์ NGINX

ดูข้อมูลที่ http://nginx.org/en/linux_packages.html#RHEL

  • กำหนดค่า NGINX

ลบไฟล์ค่าเริ่มต้น

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

เพิ่มไฟล์ใหม่ที่ /etc/nginx/conf.d/

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

เพิ่มส่วน 'server' ใหม่พร้อมคำสั่งดังนี้:

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# เพิ่มคำสั่ง try_files เพื่อหลีกเลี่ยงข้อผิดพลาด 404 ขณะรีเฟรชหน้า
try_files $uri /index.html;
}
## เพื่อหลีกเลี่ยงปัญหา CORS ให้ใช้ Nginx proxy myems-api ไปยัง path /api
## เพิ่ม location /api ใน 'server'
## เปลี่ยน URL myems-api จาก http://127.0.0.1:8000/ เป็น URL จริง หากบริการ myems-api อยู่บนเซิร์ฟเวอร์อื่น
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • ติดตั้ง MyEMS Web UI:

ติดตั้ง NodeJS:

sudo dnf install nodejs
  • แก้ไขไฟล์ config.js:
หมายเหตุ

รับ mapboxToken ที่ https://mapbox.com แล้วตั้งค่า showOnlineMap เป็น true หากต้องการปิดฟีเจอร์แผนที่ออนไลน์ ให้ตั้งค่า showOnlineMap เป็น false

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

สร้างและบีบอัด

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

ติดตั้ง อัปโหลดไฟล์ไปยังเว็บเซิร์ฟเวอร์ โปรดตรวจสอบว่า path ด้านล่างตรงกับที่กำหนดใน nginx.conf

sudo mv build  /var/www/myems-web

ปลดล็อกพอร์ตและเพิ่มพอร์ตไปยังไฟร์วอลล์:

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

รีสตาร์ทบริการ nginx:

sudo systemctl restart nginx.service
เคล็ดลับ

หากพบข้อผิดพลาด '500 Internal Server Error' ของ nginx สามารถแก้ไขได้โดยเปลี่ยนโหมด SELinux ด้วยคำสั่ง 'sudo setenforce 0'

หลังการติดตั้ง

ขอแสดงความยินดี! ตอนนี้คุณสามารถเข้าสู่ระบบ MyEMS Admin UI และ Web UI ได้แล้ว

พอร์ตเริ่มต้น

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

รหัสผ่านเริ่มต้น

Admin UI
administrator

!MyEMS1
Web UI
administrator@myems.io

!MyEMS1

การแก้ไขปัญหา