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