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.
-
تثبيت خادم 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
أضف قسم '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
استكشاف الأخطاء
إنشاء دليل تكوين البيئة الافتراضية (virtual environment):
sudo python -m venv venv
بدء استخدام البيئة الافتراضية
source venv/bin/activate
تثبيت المتطلبات
sudo venv/bin/pip install -r requirements.txt
إنهاء استخدام البيئة الافتراضية
deactivate