نظام كيلين
في هذا الدليل، ستقوم بنشر 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.
- قم بتثبيت خادم 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 لتحويل 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
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