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

Fedora

ในคู่มือนี้ คุณจะติดตั้ง MyEMS บนเซิร์ฟเวอร์ Fedora

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

คู่มือนี้อธิบายวิธีการติดตั้ง MyEMS บน Fedora 37 Server ความต้องการด้านฮาร์ดแวร์ขึ้นอยู่กับฐานข้อมูลที่เลือกและจำนวนอุปกรณ์ที่เชื่อมต่อกับระบบ หากต้องการรัน MyEMS และ MySQL บนเครื่องเดียว คุณจะต้องมีแรมอย่างน้อย 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

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

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

เพิ่มพอร์ตในไฟร์วอลล์:

sudo firewall-cmd --add-service=http --permanent
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 เป็นพร็อกซี่ myems-api ไปยังเส้นทาง /api
## เพิ่มตำแหน่ง /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 firewall-cmd --add-service=http --permanent
sudo firewall-cmd --zone=public --add-port=8001/tcp --permanent
sudo firewall-cmd --reload

เริ่มการทำงานของบริการ nginx ใหม่:

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

หากคุณพบข้อผิดพลาด nginx '403 Forbidden' คุณอาจแก้ไขได้โดยเปลี่ยนโหมด 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

คัดลอกไฟล์ exmaple.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

ดูบันทึก:

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

คัดลอกไฟล์ exmaple.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

ดูบันทึก:

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

คัดลอกไฟล์ exmaple.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

ดูบันทึก:

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

คัดลอกไฟล์ exmaple.env ไปยัง .env และแก้ไขไฟล์ .env:

sudo cp /myems-aggregation/example.env /myems-aggregation/.env
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

ดูบันทึก:

cat /myems-aggregation.log

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

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

  • ติดตั้งเซิร์ฟเวอร์ 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 เป็นพร็อกซี่ myems-api ไปยังเส้นทาง /api
## เพิ่มตำแหน่ง /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

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

sudo mv build  /var/www/myems-web

ปลดล็อคพอร์ตและเพิ่มพอร์ตในไฟร์วอลล์:

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload

เริ่มการทำงานของบริการ nginx ใหม่:

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

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

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

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

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

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

สมมติว่าที่อยู่เซิร์ฟเวอร์คือ 192.168.1.8 (แทนที่ด้วยที่อยู่เซิร์ฟเวอร์จริง) เข้าถึง MyEMS Web UI ที่ http://192.168.1.8 (สามารถละ 80 ได้) เข้าถึง MyEMS Admin UI ที่ http://192.168.1.8:8001

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

MyEMS Admin UI

ชื่อผู้ใช้:

administrator

รหัสผ่าน:

!MyEMS1

MyEMS Web UI

ชื่อผู้ใช้:

administrator@myems.io

รหัสผ่าน:

!MyEMS1

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