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

ويندوز 10 / 11 / الخادم

في هذا الدليل، ستقوم بنشر MyEMS على خوادم ويندوز 10 / 11 / الخادم.

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

يشرح هذا الدليل كيفية تثبيت MyEMS على ويندوز 10، ويندوز 11 وخادم ويندوز (2022). تعتمد المتطلبات المادية على قاعدة البيانات المختارة وعدد الأجهزة المتصلة بالنظام. لتشغيل MyEMS و MySQL و Python الإصدارات 3.10 أو 3.11 أو 3.12 على جهاز كمبيوتر واحد، يلزم وجود ذاكرة وصول عشوائي (RAM) سعة 8 جيجابايت على الأقل.

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

قم بتشغيل كمسؤول، Windows PowerShell
cd C:\
git clone https://gitee.com/myems/myems

تثبيت Python 3.10

https://www.python.org/downloads/windows/
حزمة تثبيت Python الإصدار 3.10.11 64 بت للأنظمة 64 بت
تنزيل مثبت ويندوز (64-bit)
قم بتشغيل حزمة تثبيت Python للتثبيت
انقر نقرًا مزدوجًا: python-3.10.11-amd64.exe
حدد "Add py... to PATH" وانقر على "تثبيت مخصص (customize installation)"
تأكد من تحديد جميع الخيارات، خاصة pip (اللازمة لتثبيت المكتبات لاحقًا)؛ انقر على "التالي"
حدد الخيار الأول، يُنصح بتغيير موقع تثبيت Python ثم انقر على "تثبيت"
ملاحظة: التثبيت الافتراضي في: C:\Program Files\Python310 يرجى تغييره إلى C:\Python310
بعد اكتمال التثبيت، انقر على "إغلاق"
اكتب python في موجه الأوامر، اضغط Enter وإذا ظهر رقم إصدار Python، فهذا يعني أن التثبيت ناجح

الخطوة 1: قاعدة البيانات

راجع قاعدة البيانات

فيما يلي خطوات مفصلة لتنزيل وتثبيت قاعدة بيانات MySQL (باستخدام MySQL 8.0 كمثال، الإصدار المجاني للمجتمع).

1.1 تنزيل حزمة تثبيت MySQL

  1. افتح الموقع الرسمي: https://dev.mysql.com/downloads/mysql/
  2. حدد النظام الأساسي ويندوز، عادةً ما يكون هناك خياران:
    • mysql-installer-web-community (تثبيت عبر الإنترنت، حجم صغير)
    • mysql-installer-community (حزمة كاملة دون اتصال، يُنصح بها)
  3. انقر على تنزيل، إذا كان مطلوبًا تسجيل الدخول، فتخطى ذلك (No thanks, just start my download)

1.2 تثبيت MySQL

  1. انقر نقرًا مزدوجًا لتشغيل برنامج التثبيت الذي تم تنزيله (قد تتطلب أذونات المسؤول)
  2. حدد نوع التثبيت (يُنصح بـ Developer Default أو Custom)
    • Developer Default: يقوم بتثبيت MySQL Server و Workbench و Shell وغيرها من الأدوات الشائعة الاستخدام
    • Custom: يسمح لك بتخصيص المكونات
  3. انقر على التالي، يقوم برنامج التثبيت تلقائيًا بالتحقق من التبعيات وتنزيل المكونات المفقودة
  4. انقر على تنفيذ لبدء التثبيت، وبعد الانتهاء انقر على التالي

1.3 تكوين MySQL Server

  1. النوع والشبكات

    • Config Type: حدد Development Computer
    • Port: الافتراضي 3306 (يمكن تركه دون تغيير)
    • انقر على التالي
  2. طريقة المصادقة

    • يُنصح بتحديد Use Strong Password Encryption (التشفير الحديث)
    • أو اختر الخيار الثاني (متوافق مع الإصدارات القديمة)
    • انقر على التالي
  3. الحسابات والأدوار

    • قم بتعيين كلمة مرور الجذر (تذكرها جيدًا)
    • اختياري: أضف مستخدمًا عاديًا (يمكن تخطيه)
    • انقر على التالي
  4. خدمة ويندوز

    • حدد Configure MySQL Server as a Windows Service
    • Service Name: MySQL80 (الافتراضي)
    • حدد Start the MySQL Server at System Startup
    • انقر على التالي
  5. تطبيق التكوين

    • انقر على تنفيذ لتطبيق التكوين
    • جميع الخطوات التي تظهر بعلامة خضراء تعني النجاح
    • انقر على إنهاء

1.4 إكمال التثبيت

  1. استمر في النقر على التالي حتى يظهر إنهاء
  2. حدد Start MySQL Workbench after Setup (اختياري)
  3. انقر على إنهاء للخروج من معالج التثبيت

1.5 التحقق من التثبيت

الطريقة 1: الاختبار عبر سطر الأوامر

  1. اضغط على Win + R، اكتب cmd واضغط Enter
  2. اكتب:
    mysql -u root -p
  3. أدخل كلمة مرور الجذر التي قمت بتعيينها
  4. إذا ظهر الموجه mysql>، فهذا يعني أن التثبيت ناجح

الطريقة 2: التحقق من الخدمة

  1. اضغط على Win + R، اكتب services.msc واضغط Enter
  2. ابحث عن MySQL80، يجب أن تكون الحالة "قيد التشغيل"

1.6 الإعدادات الأولية الشائعة (اختياري)

بعد تسجيل الدخول إلى MySQL، قم بتنفيذ:

-- عرض قواعد البيانات
show databases;

-- إنشاء قاعدة بيانات جديدة
create database mydb;

-- إنشاء مستخدم للوصول عن بُعد (اختياري)
create user 'myems'@'%' identified by 'كلمة المرور';
grant all privileges on *.* to 'myems'@'%';
flush privileges;

المشاكل الشائعة

المشكلةالحل
المنفذ 3306 قيد الاستخدامقم بتغييره إلى منفذ آخر أثناء التثبيت (مثل 3307)
نسيت كلمة مرور الجذريلزم تشغيل MySQL دون تحميل جدول الأذونات، وهي عملية معقدة
تعذر تشغيل الخدمةتحقق مما إذا كان المنفذ مشغولًا أو راجع سجل أحداث ويندوز

الخطوة 2: myems-api

  • تثبيت خدمة myems-api:
# 1. افتح نافذة CMD جديدة كمسؤول

# 2. تعيين متغيرات البيئة
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. الانتقال إلى دليل المشروع
cd C:\myems\myems-api

# 4. إعادة تثبيت جميع الحزم
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt
C:\Python310\python.exe -m pip install --no-cache-dir --no-user waitress

إنشاء ملف .env من example.env وتحريره إذا لزم الأمر:

copy .\example.env .env
افتح وحرر باستخدام محرر نصوص C:\myems\myems-api\.env
قم بتعديل معلومات قاعدة البيانات

تثبيت كخدمة ويندوز:

خطوات التثبيت الكاملة (تشغيل CMD كمسؤول)

# 1. حذف جميع الخدمات القديمة بالكامل
sc delete MyEMSAPI

# 2. إنشاء دليل السجلات
mkdir C:\myems\myems-api\logs 2>nul

# 3. تنزيل WinSW (إذا لم تقم بذلك بعد)
https://github.com/winsw/winsw/releases
أعد تسمية WinSW-x64.exe إلى MyEMSAPI.exe

cd C:\myems\myems-api

# 4. إنشاء ملف التكوين
قم بإنشاء `C:\myems\myems-api\MyEMSAPI.xml` (باستخدام المفكرة أو الأمر أدناه):
notepad C:\myems\myems-api\MyEMSAPI.xml
انسخ المحتوى أدناه إلى المفكرة:
<service>
<id>MyEMSAPI</id>
<name>MyEMS API Service</name>
<description>MyEMS API Service</description>
<executable>C:\Python310\python.exe</executable>
<arguments>-m waitress --listen=0.0.0.0:8000 app:api</arguments>
<workingdirectory>C:\myems\myems-api</workingdirectory>
<logmode>rotate</logmode>
<logpath>C:\myems\myems-api\logs</logpath>
<onfailure action="restart" delay="10 sec"/>
<stoptimeout>15 sec</stoptimeout>
<startmode>Automatic</startmode>
</service>
احفظ وأغلق المفكرة.

# 5. تثبيت الخدمة
MyEMSAPI.exe install

# 6. تشغيل الخدمة
MyEMSAPI.exe start

# 7. التحقق من الحالة
MyEMSAPI.exe status

# 8. اختبار الخدمة
curl http://localhost:8000

# 9. في حالة حدوث خطأ، راجع السجلات
C:\myems\myems-api\logs

الخطوة 3: myems-admin

تمكين خدمة nginx في الخلفية:

start /b nginx.exe
  • تكوين NGINX
cd C:\Program Files\nginx-1.29.1\conf
افتح وحرر 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;
...

}

اكتب التوجيهات أدناه؛ إذا كانت خدمة myems-api تعمل على خادم آخر، فاستبدل العنوان الافتراضي http://127.0.0.1:8000/ بالعنوان الفعلي

  server {
listen 8001;
server_name myems-admin;
location / {
root C:\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 وتحميله إلى الخادم،
  • ثم قم بفك ضغطه في c:\myems-admin

التحقق من ملف التكوين وإجراء التغييرات اللازمة:

c:\myems-admins\app\api.js
احذر

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

  C:\myems-admin\upload

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

cd C:\Program Files\nginx-1.29.1
nginx.exe -s stop
start /b nginx.exe

الخطوة 4: myems-modbus-tcp

في هذه الخطوة، ستقوم بتثبيت خدمة myems-modbus-tcp.

cd C:\myems\myems-modbus-tcp
# 1. افتح نافذة CMD جديدة كمسؤول

# 2. تعيين متغيرات البيئة
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. الانتقال إلى دليل المشروع
cd C:\myems\myems-modbus-tcp

# 4. إعادة تثبيت جميع الحزم
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt

إنشاء ملف .env من example.env وتحريره إذا لزم الأمر:

copy .\example.env .env
افتح وحرر باستخدام محرر نصوص C:\myems\myems-modbus-tcp\.env

تثبيت كخدمة ويندوز:

# 1. حذف جميع الخدمات القديمة بالكامل
sc delete MyEMSModbusTCP

# 2. إنشاء دليل السجلات
mkdir C:\myems\myems-modbus-tcp\logs 2>nul

# 3. تنزيل WinSW (إذا لم تقم بذلك بعد)
https://github.com/winsw/winsw/releases
أعد تسمية WinSW-x64.exe إلى MyEMSModbusTCP.exe

cd C:\myems\myems-modbus-tcp

# 4. إنشاء ملف التكوين
قم بإنشاء `C:\myems\myems-modbus-tcp\MyEMSModbusTCP.xml` (باستخدام المفكرة أو الأمر أدناه):
notepad C:\myems\myems-modbus-tcp\MyEMSModbusTCP.xml
انسخ المحتوى أدناه إلى المفكرة:
<service>
<id>MyEMSModbusTCP</id>
<name>MyEMS Modbus TCP Service</name>
<description>MyEMS Modbus TCP Service</description>
<executable>C:\Python310\python.exe</executable>
<arguments>main.py</arguments>
<workingdirectory>C:\myems\myems-modbus-tcp</workingdirectory>
<logmode>rotate</logmode>
<logpath>C:\myems\myems-modbus-tcp\logs</logpath>
<onfailure action="restart" delay="10 sec"/>
<stoptimeout>15 sec</stoptimeout>
<startmode>Automatic</startmode>
</service>
احفظ وأغلق المفكرة.

# 5. تثبيت الخدمة
MyEMSModbusTCP.exe install

# 6. تشغيل الخدمة
MyEMSModbusTCP.exe start

# 7. التحقق من الحالة
MyEMSModbusTCP.exe status

# 8. في حالة حدوث خطأ، راجع السجلات
C:\myems\myems-modbus-tcp\logs

إذا تم تنفيذ الأمرين MyEMSModbusTCP.exe install و MyEMSModbusTCP.exe start بنجاح ولكن الحالة لا تزال متوقفة، فمن المحتمل أن VC++ غير مثبت رابط تثبيت VC++: https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022

الخطوة 5: myems-cleaning

في هذه الخطوة، ستقوم بتثبيت خدمة myems-cleaning.

cd C:\Program Files\myems\myems-cleaning
# 1. افتح نافذة CMD جديدة كمسؤول

# 2. تعيين متغيرات البيئة
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. الانتقال إلى دليل المشروع
cd C:\myems\myems-cleaning

# 4. إعادة تثبيت جميع الحزم
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt

إنشاء ملف .env من example.env وتحريره إذا لزم الأمر:

copy C:\myems\myems-cleaning\example.env \.env
افتح وحرر باستخدام محرر نصوص C:\myems\myems-cleaning\.env

تثبيت كخدمة ويندوز:

# 1. حذف جميع الخدمات القديمة بالكامل
sc delete MyEMSCleaning


# 2. إنشاء دليل السجلات
mkdir C:\myems\myems-cleaning\logs 2>nul

# 3. تنزيل WinSW (إذا لم تقم بذلك بعد)
https://github.com/winsw/winsw/releases
أعد تسمية WinSW-x64.exe إلى MyEMSCleaning.exe

cd C:\myems\myems-cleaning

# 4. إنشاء ملف التكوين
قم بإنشاء `C:\myems\myems-cleaning\MyEMSCleaning.xml` (باستخدام المفكرة أو الأمر أدناه):
notepad C:\myems\myems-cleaning\MyEMSCleaning.xml
انسخ المحتوى أدناه إلى المفكرة:
<service>
<id>MyEMSCleaning</id>
<name>MyEMS Cleaning Service</name>
<description>MyEMS Cleaning Service</description>
<executable>C:\Python310\python.exe</executable>
<arguments>main.py</arguments>
<workingdirectory>C:\myems\myems-cleaning</workingdirectory>
<logmode>rotate</logmode>
<logpath>C:\myems\myems-cleaning\logs</logpath>
<onfailure action="restart" delay="10 sec"/>
<stoptimeout>15 sec</stoptimeout>
<startmode>Automatic</startmode>
</service>
احفظ وأغلق المفكرة.

# 5. تثبيت الخدمة
MyEMSCleaning.exe install

# 6. تشغيل الخدمة
MyEMSCleaning.exe start

# 7. التحقق من الحالة
MyEMSCleaning.exe status

# 8. في حالة حدوث خطأ، راجع السجلات
C:\myems\myems-cleaning\logs

الخطوة 6: myems-normalization

في هذه الخطوة، ستقوم بتثبيت خدمة myems-normalization.

cd C:\myems\myems-normalization
# 1. افتح نافذة CMD جديدة كمسؤول

# 2. تعيين متغيرات البيئة
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. الانتقال إلى دليل المشروع
cd C:\myems\myems-normalization

# 4. إعادة تثبيت جميع الحزم
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt

إنشاء ملف .env من example.env وتحريره إذا لزم الأمر:

copy C:\myems\myems-normalization\example.env \.env
افتح وحرر باستخدام محرر نصوص C:\myems\myems-normalization\.env

تثبيت كخدمة ويندوز:

# 1. حذف جميع الخدمات القديمة بالكامل
sc delete MyEMSNormalization


# 2. إنشاء دليل السجلات
mkdir C:\myems\myems-normalization\logs 2>nul

# 3. تنزيل WinSW (إذا لم تقم بذلك بعد)
https://github.com/winsw/winsw/releases
أعد تسمية WinSW-x64.exe إلى MyEMSNormalization.exe

cd C:\myems\myems-normalization

# 4. إنشاء ملف التكوين
قم بإنشاء `C:\myems\myems-normalization\MyEMSCleaning.xml` (باستخدام المفكرة أو الأمر أدناه):
notepad C:\myems\myems-normalization\MyEMSCleaning.xml
انسخ المحتوى أدناه إلى المفكرة:
<service>
<id>MyEMSNormalization</id>
<name>MyEMS Normalization Service</name>
<description>MyEMS Normalization Service</description>
<executable>C:\Python310\python.exe</executable>
<arguments>main.py</arguments>
<workingdirectory>C:\myems\myems-normalization</workingdirectory>
<logmode>rotate</logmode>
<logpath>C:\myems\myems-normalization\logs</logpath>
<onfailure action="restart" delay="10 sec"/>
<stoptimeout>15 sec</stoptimeout>
<startmode>Automatic</startmode>
</service>
احفظ وأغلق المفكرة.

# 5. تثبيت الخدمة
MyEMSNormalization.exe install

# 6. تشغيل الخدمة
MyEMSNormalization.exe start

# 7. التحقق من الحالة
MyEMSNormalization.exe status

# 8. في حالة حدوث خطأ، راجع السجلات
C:\myems\myems-normalization\logs

الخطوة 7: myems-aggregation

في هذه الخطوة، ستقوم بتثبيت خدمة myems-aggregation.

cd C:\myems\myems-aggregation
# 1. افتح نافذة CMD جديدة كمسؤول

# 2. تعيين متغيرات البيئة
set PIP_NO_USER=1
set PYTHONNOUSERSITE=1

# 3. الانتقال إلى دليل المشروع
cd C:\myems\myems-aggregation

# 4. إعادة تثبيت جميع الحزم
C:\Python310\python.exe -m pip install --no-cache-dir --no-user -r requirements.txt

إنشاء ملف .env من example.env وتحريره إذا لزم الأمر:

copy C:\myems\myems-aggregation\example.env \.env
افتح وحرر باستخدام محرر نصوص C:\myems\myems-aggregation\.env

تثبيت كخدمة ويندوز:

# 1. حذف جميع الخدمات القديمة بالكامل
sc delete MyEMSAggregation

# 2. إنشاء دليل السجلات
mkdir C:\myems\myems-aggregation\logs 2>nul

# 3. تنزيل WinSW (إذا لم تقم بذلك بعد)
https://github.com/winsw/winsw/releases
أعد تسمية WinSW-x64.exe إلى MyEMSAggregation.exe

cd C:\myems\myems-normalization

# 4. إنشاء ملف التكوين
قم بإنشاء `C:\myems\myems-aggregation\MyEMSAggregation.xml` (باستخدام المفكرة أو الأمر أدناه):
notepad C:\myems\myems-aggregation\MyEMSAggregation.xml
انسخ المحتوى أدناه إلى المفكرة:
<service>
<id>MyEMSAggregation</id>
<name>MyEMS Aggregation Service</name>
<description>MyEMS Aggregation Service</description>
<executable>C:\Python310\python.exe</executable>
<arguments>main.py</arguments>
<workingdirectory>C:\myems\myems-aggregation</workingdirectory>
<logmode>rotate</logmode>
<logpath>C:\myems\myems-aggregation\logs</logpath>
<onfailure action="restart" delay="10 sec"/>
<stoptimeout>15 sec</stoptimeout>
<startmode>Automatic</startmode>
</service>
احفظ وأغلق المفكرة.

# 5. تثبيت الخدمة
MyEMSAggregation.exe install

# 6. تشغيل الخدمة
MyEMSAggregation.exe start

# 7. التحقق من الحالة
MyEMSAggregation.exe status

# 8. في حالة حدوث خطأ، راجع السجلات
C:\myems\myems-aggregation\logs

الخطوة 8: myems-web

في هذه الخطوة، ستقوم بتثبيت خدمة myems-web.

تمكين خدمة nginx:

start /b nginx.exe
  • تكوين NGINX
cd C:\Program Files\nginx-1.29.1\conf
افتح وحرر nginx.conf باستخدام محرر نصوص

اكتب التوجيهات أدناه؛ إذا كانت خدمة myems-api مستضافة على خادم آخر، فاستبدل العنوان الافتراضي http://127.0.0.1:8000/ بالعنوان الفعلي

server {
listen 80;
server_name myems-web;
location / {
root C:\myems-web\build;
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/ بالعنوان الفعلي إذا كانت خدمة myems-api مستضافة على خادم آخر
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}

إعادة تشغيل Nginx

cd C:\Program Files\nginx-1.29.1
nginx.exe -s stop
start /b nginx.exe
  • تثبيت واجهة الويب MyEMS:

تثبيت NodeJS: https://nodejs.org/zh-cn متطلبات الإصدار:

  • Node.js 22.22.2, 24.5.0 أو أحدث
  • npm 10.9.7, 11.5.1 أو أحدث
مثال: C:\Program Files\nodejs
تكوين متغيرات البيئة

تعديل ملف التكوين:

cd C:\myems\myems-web
افتح وحرر src/config.js باستخدام محرر نصوص

الترجمة:

npm i
npm run build
سيتم إنشاء مجلد build في C:\myems\myems-web
mkdir C:\myems-web
move "C:\myems\myems-web\build" "C:\myems-web"

إذا فشلت الترجمة مع ظهور خطأ المهلة أدناه:

npm error code EIDLETIMEOUT
npm error Idle timeout reached for host `registry.npmjs.org:443`
npm error يمكن العثور على سجل كامل لهذا الخطأ في

قم بتنفيذ الأمر أدناه للتبديل إلى مصدر مرآة صيني:

npm config set registry https://registry.npmmirror.com/

بعد التثبيت

تهانينا! يمكنك الآن تسجيل الدخول إلى واجهة إدارة 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