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

openEuler

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

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

คู่มือนี้อธิบายวิธีการติดตั้ง MyEMS บน openEuler 23.03 ข้อกำหนดของฮาร์ดแวร์ขึ้นอยู่กับฐานข้อมูลที่เลือกและจำนวนอุปกรณ์ที่เชื่อมต่อกับระบบ หากต้องการรัน MyEMS และ MySQL บนเครื่องเดียวกัน คุณต้องมี RAM อย่างน้อย 4GB

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

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 --zone=public --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

ตั้งค่าไฟล์ systemd configuration:

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;
}
## 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;
}
}
  • ติดตั้ง 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 --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

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

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

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

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

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

cat /myems-aggregation.log

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

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

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

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

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

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

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;
# add try_files directive to avoid 404 error while refreshing pages
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 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

สมมติว่าเซิร์ฟเวอร์มีที่อยู่ 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

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