CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux
ในคู่มือนี้ คุณจะได้เรียนรู้วิธีปรับใช้ MyEMS บนเซิร์ฟเวอร์ CentOS หรือ RHEL
ข้อกำหนดเบื้องต้น
คู่มือนี้อธ ิบายวิธีการติดตั้ง MyEMS บน CentOS Stream 10 / Red Hat Enterprise Linux 10 (RHEL 10) / Rocky Linux 10 / AlmaLinux 10 / Oracle Linux 10. ข้อกำหนดด้านฮาร์ดแวร์ขึ้นอยู่กับฐานข้อมูลที่เลือกและจำนวนอุปกรณ์ที่เชื่อมต่อกับระบบ. หากต้องการรัน MyEMS และ MySQL บนเครื่องเดียว คุณจะต้องมีหน่วยความจำ (RAM) อย่างน้อย 8GB.
อัปเดตระบบและติดตั้งเครื่องมือ
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
โฟลเดอร์ '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: ข้อกำหนดเวอร์ชัน:
- Node.js 22.22.2, 24.5.0 หรือใหม่กว่า
- npm 10.9.7, 11.5.1 หรือใหม่กว่า
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
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
!MyEMS1