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

ระบบ Kylin

คู่มือนี้จะแนะนำวิธีการติดตั้ง MyEMS บนเซิร์ฟเวอร์ Kylin V11

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

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

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

sudo yum update
sudo yum install git
systemctl stop firewalld

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

cd ~
git clone https://gitee.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 และแก้ไขตามความจำเป็น:

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:

yum install -y nginx
sudo systemctl start nginx.service
  • ตั้งค่า NGINX
sudo vi /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 vi /etc/nginx/conf.d/myems-admin.conf

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

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 ที่แท้จริง หากบริการอยู่บนเซิร์ฟเวอร์อื่น
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

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

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 setforce 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
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

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

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

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 ไปที่เส้นทาง /api
## เพิ่ม location /api อีกอันหนึ่งใน 'server'
## แทนที่ URL เริ่มต้นของ myems-api http://127.0.0.1:8000/ ด้วย URL ที่แท้จริง หากบริการอยู่บนเซิร์ฟเวอร์อื่น
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • ติดตั้งส่วนติดต่อผู้ใช้ MyEMS:

แก้ไขไฟล์คอนฟิก:

หมายเหตุ

รับ 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 rm -r /var/www/myems-web
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

คำแนะนำ

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

หลังติดตั้งเสร็จ

ยินดีด้วย! ตอนนี้คุณสามารถเข้าสู่ระบบส่วนจัดการและส่วนติดต่อผู้ใช้ MyEMS ได้แล้ว

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

ส่วนติดต่อผู้ใช้ MyEMS: 80 API MyEMS: 8000 ส่วนจัดการ MyEMS: 8001

สมมติว่าที่อยู่ IP ของเซิร์ฟเวอร์คือ 192.168.1.8 (ให้แทนที่ด้วยที่อยู่ IP จริงของเซิร์ฟเวอร์) ที่อยู่ส่วนติดต่อผู้ใช้ MyEMS: http://192.168.1.8 (สามารถละเว้นพอร์ต 80) ที่อยู่ส่วนจัดการ MyEMS: http://192.168.1.8:8001

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

ส่วนจัดการ MyEMS ชื่อผู้ใช้:

administrator

รหัสผ่าน:

!MyEMS1

ส่วนติดต่อผู้ใช้ MyEMS ชื่อผู้ใช้:

administrator

รหัสผ่าน:

!MyEMS1

แก้ไขปัญหา

ติดตั้ง MySQL 8.0

1. การเตรียมตัว

ตรวจสอบสภาพแวดล้อมระบบ

# ตรวจสอบเวอร์ชันระบบ
cat /etc/redhat-release

# ตรวจสอบว่ามีการติดตั้ง MySQL แล้วหรือไม่
rpm -qa | grep mysql
rpm -qa | grep mariadb

# ถอดออก mariadb หากมี
rpm -e --nodeps mariadb-libs-*

2. ดาวน์โหลดแพ็คเกจ RPM อย่างเป็นทางการของ MySQL

https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.45-1.el8.x86_64.rpm-bundle.tar

3. ติดตั้ง MySQL 8.0

tar -xvf *.tar
yum localinstall *.rpm

# หากมีปัญหาเกี่ยวกับคีย์ GPG ให้ใช้ชั่วคราว
yum install -y mysql-community-server --nogpgcheck

4. เริ่มบริการ MySQL

# เริ่ม MySQL
systemctl start mysqld

# เปิดใช้งานให้เริ่มอัตโนมัติเมื่อบู๊ต
systemctl enable mysqld

# ตรวจสอบสถานะบริการ
systemctl status mysqld

5. รับรหัสผ่านชั่วคราว

# ดูรหัสผ่านชั่วคราวที่ MySQL สร้างขึ้น
grep 'temporary password' /var/log/mysqld.log

6. การตั้งค่าความปลอดภัย

# รันสคริปต์ติดตั้งอย่างปลอดภัย
mysql_secure_installation

ทำตามคำแนะนำ:

  1. ใส่รหัสผ่านชั่วคราว
  2. ตั้งรหัสผ่านใหม่ (ต้องมีตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก ตัวเลข และสัญลักษณ์พิเศษ)
  3. เปลี่ยนรหัสผ่าน root? Y
  4. ลบผู้ใช้นิรนาม? Y
  5. ป้องกันการเข้าสู่ระบบ root จากระยะไกล? เลือกตามความจำเป็น
  6. ลบฐานข้อมูลทดลอง? Y
  7. โหลดรีโหลดตารางสิทธิ์? Y

7. เข้าสู่ระบบและตรวจสอบ MySQL

# เข้าสู่ระบบ MySQL
mysql -u root -p

# ตรวจสอบเวอร์ชัน
SELECT VERSION();

# แสดงรายการฐานข้อมูล
SHOW DATABASES;

8. ตั้งค่าชุดตัวอักษร (ไม่จำเป็น)

แก้ไขไฟล์คอนฟิก:

vi /etc/my.cnf

เพิ่มเนื้อหาดังนี้:

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'

# ลดระดับนโยบายรหัสผ่านหากจำเป็น
validate_password.policy = LOW
validate_password.length = 6
validate_password.mixed_case_count = 0
validate_password.number_count = 0
validate_password.special_char_count = 0

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

systemctl restart mysqld

9. ตั้งค่าไฟร์วอลล์

# เปิดพอร์ต 3306
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# หรือหยุดไฟร์วอลล์ (ไม่แนะนำ)
# systemctl stop firewalld

10. ตั้งค่าเข้าถึงจากระยะไกล (ไม่จำเป็น)

-- เข้าสู่ระบบ MySQL
mysql -u root -p

-- สร้างผู้ใช้สำหรับเข้าถึงจากระยะไกล
CREATE USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- อัปเดตรหัสผ่าน
ALTER USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- มอบสิทธิ์ทั้งหมด
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- ใช้การเปลี่ยนแปลง
FLUSH PRIVILEGES;

ปัญหาที่พบบ่อย

1. ข้อผิดพลาดขาดหน่วยความจำ

หากเซิร์ฟเวอร์มีหน่วยความจำน้อย ให้จำกัดการใช้งานหน่วยความจำของ MySQL:

vi /etc/my.cnf
# เพิ่มการตั้งค่าเหล่านี้
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 16M
max_connections = 100

2. แก้ไขปัญหาเริ่มบริการไม่สำเร็จ

# ดูบันทึกข้อผิดพลาด
tail -f /var/log/mysqld.log

# ตรวจสอบการใช้พอร์ต
netstat -tlnp | grep 3306

3. แก้ไขนโยบายรหัสผ่าน

-- ดูนโยบายรหัสผ่านปัจจุบัน
SHOW VARIABLES LIKE 'validate_password%';

-- ลดระดับนโยบาย (หากต้องการรหัสผ่านง่าย)
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 6;

ตรวจสอบการติดตั้ง

# ตรวจสอบโปรเซส MySQL
ps aux | grep mysql

# ตรวจสอบพอร์ต
netstat -tlnp | grep 3306

# ตรวจสอบเวอร์ชัน MySQL
mysql --version