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

Debian/Ubuntu

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

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

يصف هذا الدليل كيفية تثبيت MyEMS على Ubuntu 24.04 LTS / Ubuntu 22.04 LTS / Ubuntu 20.04 LTS / Ubuntu 18.04 LTS / Debian 12 Bookworm / Debian 11 Bullseye / Debian 10 Buster. تتوقف متطلبات الأجهزة على قاعدة البيانات المختارة وكمية الأجهزة المتصلة بالنظام. لتشغيل 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 apt install python3-pip
sudo pip install -r requirements.txt
ملاحظة

(Ubuntu 24.04 LTS) إذا لم يعمل الكود، يمكنك استخدام الكود التالي: sudo pip install -r requirements.txt --break-system-packages

إنشاء ملف .env بناءً على example.env وتعديل ملف .env إذا لزم الأمر:

sudo cp /myems-api/example.env /myems-api/.env
sudo nano /myems-api/.env

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

sudo ufw allow 8000

إعداد ملفات تكوين 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 nano /etc/nginx/nginx.conf

في قسم 'http'، أضف بعض التوجيهات (directives):

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 nano /etc/nginx/conf.d/myems-admin.conf

اكتب التوجيهات كما يلي، واستبدل عنوان URL الافتراضي لـ 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'
## استبدل عنوان URL الافتراضي لـ 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 nano /var/www/myems-admin/app/api.js
احذر

مجلد 'upload' مخصص للملفات التي يقوم المستخدم بتحميلها. لا تُحذف/تُنقل/تُكتب فوق مجلد 'upload' عند تحديث myems-admin.

 /var/www/myems-admin/upload

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

sudo ufw allow 8001

إعادة تشغيل خدمة nginx:

sudo systemctl restart nginx.service

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

(Ubuntu 24.04 LTS) إذا لم يعمل الكود، يمكنك استخدام الكود التالي: sudo pip install -r requirements.txt --break-system-packages

نسخ ملف exmaple.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
ملاحظة

(Ubuntu 24.04 LTS) إذا لم يعمل الكود، يمكنك استخدام الكود التالي: sudo pip install -r requirements.txt --break-system-packages

نسخ ملف exmaple.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
ملاحظة

(Ubuntu 24.04 LTS) إذا لم يعمل الكود، يمكنك استخدام الكود التالي: sudo pip install -r requirements.txt --break-system-packages

نسخ ملف exmaple.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
ملاحظة

(Ubuntu 24.04 LTS) إذا لم يعمل الكود، يمكنك استخدام الكود التالي: sudo pip install -r requirements.txt --break-system-packages

نسخ ملف exmaple.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

في هذه الخطوة، سوف تقوم بتثبيت خدمة واجهة المستخدم الرسومية (UI) لـ 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
  • تثبيت واجهة المستخدم الرسومية (UI) لـ MyEMS Web:

إعداد NodeJS:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt-get install -y nodejs
  • تعديل ملف config.js:
ملاحظة

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

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

البناء (Build)

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

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

sudo ufw allow 80

إعادة تشغيل NGINX

sudo systemctl restart nginx

بعد التثبيت

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

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

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

بافتراض أن عنوان الخادم هو 192.168.1.8 (استبدل بالعنوان الفعلي للخادم) الوصول إلى MyEMS Web UI على http://192.168.1.8 (يمكن حذف 80) الوصول إلى MyEMS Admin UI على http://192.168.1.8:8001

كلمات المرور الافتراضية

MyEMS Admin UI

اسم المستخدم:

administrator

كلمة المرور:

!MyEMS1

MyEMS Web UI

اسم المستخدم:

administrator@myems.io

كلمة المرور:

!MyEMS1

استكشاف الأخطاء

إذا ظهرت رسالة 'error: externally-managed-environment' عند تنفيذ 'sudo pip install -r requirements.txt'

إنشاء دليل تكوين البيئة الافتراضية (virtual environment):

sudo python -m venv venv

بدء استخدام البيئة الافتراضية

source venv/bin/activate

تثبيت المتطلبات

sudo venv/bin/pip install -r requirements.txt

إنهاء استخدام البيئة الافتراضية

deactivate