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

SUSE

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

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

يصف هذا الدليل كيفية تثبيت MyEMS على خادم SUSE Linux Enterprise Server 15. تعتمد متطلبات الأجهزة على قاعدة البيانات المختارة وعدد الأجهزة المتصلة بالنظام. لتشغيل MyEMS وMySQL على جهاز واحد، ستحتاج على الأقل إلى 4 جيجابايت من ذاكرة الوصول العشوائي (RAM).

استنساخ الكود المصدري:

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 vi /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#Debian

تمكين خدمة 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/ بالرابط الفعلي إذا كانت خدمة myems-api مستضافة على خادم مختلف:

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/ بالرابط الفعلي إذا كانت خدمة myems-api مستضافة على خادم مختلف
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 vi /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

الخطوة 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

انسخ ملف exmaple.env إلى .env وعدل ملف .env:

sudo cp /myems-modbus-tcp/example.env /myems-modbus-tcp/.env
sudo vi /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

انسخ ملف exmaple.env إلى .env وعدل ملف .env:

sudo cp /myems-cleaning/example.env /myems-cleaning/.env
sudo vi /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

انسخ ملف exmaple.env إلى .env وعدل ملف .env:

sudo cp /myems-normalization/example.env /myems-normalization/.env
sudo vi /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
pip install -r requirements.txt

انسخ ملف exmaple.env إلى .env وعدل ملف .env:

sudo cp /myems-aggregation/example.env /myems-aggregation/.env
vi /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

أضف قسم 'server' جديدًا مع التوجيهات كما يلي:

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' واستبدل العنوان التجريبي 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;
}
}

أعد تشغيل NGINX

sudo systemctl restart nginx
  • تثبيت واجهة MyEMS الويب:

إعداد NodeJS:

sudo zypper install -y nodejs
  • تعديل ملف config.js:
ملاحظة

احصل على mapboxToken من https://mapbox.com ثم عيّن showOnlineMap إلى true. إذا أردت إيقاف خاصية الخريطة عبر الإنترنت، عيّن showOnlineMap إلى false

cd myems/myems-web
sudo vi src/config.js

بناء وضغط

sudo npm i --unsafe-perm=true --allow-root --legacy-peer-deps
sudo npm run build

التثبيت قم بتحميل الملفات إلى خادم الويب الخاص بك. لاحظ أن المسار التالي يجب أن يكون مطابقًا للتكوين في nginx.conf.

sudo mv build  /var/www/myems-web

أضف المنفذ إلى جدار الحماية:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

ما بعد التثبيت

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

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

واجهة MyEMS الويب: 80

MyEMS API: 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@myems.io

كلمة المرور:

!MyEMS1

استكشاف الأخطاء وإصلاحها