انتقل إلى المحتوى الرئيسي

نظام كيلين

في هذا الدليل، ستقوم بنشر MyEMS على خادم Kylin V11.

المتطلبات الأساسية

يصف هذا الدليل كيفية تثبيت MyEMS على Kylin V11. تعتمد المتطلبات المادية على قاعدة البيانات المختارة وعدد الأجهزة المتصلة بالنظام. لتشغيل MyEMS وMySQL على جهاز واحد، تحتاج إلى 8 جيجابايت من الذاكرة على الأقل.

قم بتحديث النظام وتثبيت الأدوات:

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 لتحويل myems-api إلى المسار /api
## أضف موقعًا آخر /api داخل 'server'
## استبدل الرابط الافتراضي لـ myems-api http://127.0.0.1:8000/ بالرابط الفعلي إذا كانت الخدمة مستضافة على خادم مختلف
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 ممنوع' في 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

اعرض السجل:

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

اعرض السجل:

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

اعرض السجل:

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

اعرض السجل:

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 لتحويل myems-api إلى المسار /api
## أضف موقعًا آخر /api داخل 'server'
## استبدل الرابط الافتراضي لـ myems-api http://127.0.0.1:8000/ بالرابط الفعلي إذا كانت الخدمة مستضافة على خادم مختلف
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 خطأ داخلي في الخادم' في nginx، يمكنك إصلاحه عن طريق تغيير وضع SELinux بالأمر 'sudo setforce 0'.

بعد التثبيت

تهانينا! يمكنك الآن تسجيل الدخول إلى واجهة الإدارة وواجهة الويب لـ MyEMS.

المنافذ الافتراضية

واجهة الويب MyEMS: 80 واجهة برمجة التطبيقات MyEMS: 8000 واجهة الإدارة MyEMS: 8001

لنفترض أن عنوان الخادم هو 192.168.1.8 (استبدله بالعنوان الفعلي لخادمك) عنوان واجهة الويب 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