ระบบ 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
- ติดตั้งเซิร์ฟเวอร์ NGINX ดูที่ http://nginx.org/en/linux_packages.html#Debian
- ตั้งค่า 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
เขียนคำสั่งดังนี้ หากบริการ 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
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
ทำตามคำแนะนำ:
- ใส่รหัสผ่านชั่วคราว
- ตั้งรหัสผ่านใหม่ (ต้องมีตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก ตัวเลข และสัญลักษณ์พิเศษ)
- เปลี่ยนรหั สผ่าน root? Y
- ลบผู้ใช้นิรนาม? Y
- ป้องกันการเข้าสู่ระบบ root จากระยะไกล? เลือกตามความจำเป็น
- ลบฐานข้อมูลทดลอง? Y
- โหลดรีโหลดตารางสิทธิ์? 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