ويندوز 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
- افتح الموقع الرسمي: https://dev.mysql.com/downloads/mysql/
- حدد النظام الأساسي ويندوز، عادةً ما يكون هناك خياران:
- mysql-installer-web-community (تثبيت عبر الإنترنت، حجم صغير)
- mysql-installer-community (حزمة كاملة دون اتصال، يُنصح بها)
- انقر على تنزيل، إذا كان مطلوبًا تسجيل الدخول، فتخطى ذلك (No thanks, just start my download)
1.2 تثبيت MySQL
- انقر نقرًا مزدوجًا لتشغيل برنامج التثبيت الذي تم تنزيله (قد تتطلب أذونات المسؤول)
- حدد نوع التثبيت (يُنصح بـ Developer Default أو Custom)
- Developer Default: يقوم بتثبيت MySQL Server و Workbench و Shell وغيرها من الأدوات الشائعة الاستخدام
- Custom: يسمح لك بتخصيص المكونات
- انقر على التالي، يقوم برنامج التثبيت تلقائيًا بالتحقق من التبعيات وتنزيل المكونات المفقودة
- انقر على تنفيذ لبدء التثبيت، وبعد الانتهاء انقر على التالي
1.3 تكوين MySQL Server
-
النوع والشبكات
- Config Type: حدد Development Computer
- Port: الافتراضي 3306 (يمكن تركه دون تغيير)
- انقر على التالي
-
طريقة المصادقة
- يُنصح بتحديد Use Strong Password Encryption (التشفير الحديث)
- أو اختر الخيار الثاني (متوافق مع الإصدارات القديمة)
- انقر على التالي
-
الح سابات والأدوار
- قم بتعيين كلمة مرور الجذر (تذكرها جيدًا)
- اختياري: أضف مستخدمًا عاديًا (يمكن تخطيه)
- انقر على التالي
-
خدمة ويندوز
- حدد Configure MySQL Server as a Windows Service
- Service Name: MySQL80 (الافتراضي)
- حدد Start the MySQL Server at System Startup
- انقر على التالي
-
تطبيق التكوين
- انقر على تنفيذ لتطبيق التكوين
- جميع الخطوات التي تظهر بعلامة خضراء تعني النجاح
- انقر على إنهاء
1.4 إكمال التثبيت
- استمر في النقر على التالي حتى يظهر إنهاء
- حدد Start MySQL Workbench after Setup (اختياري)
- انقر على إنهاء للخروج من معالج التثبيت
1.5 التحقق من التثبيت
الطريقة 1: الاختبار عبر سطر الأوامر
- اضغط على
Win + R، اكتبcmdواضغط Enter - اكتب:
mysql -u root -p - أدخل كلمة مرور الجذر التي قمت بتعيينها
- إذا ظهر الموجه
mysql>، فهذا يعني أن التثبيت ناجح
الطريقة 2: التحقق من الخدمة
- اضغط على
Win + R، اكتبservices.mscواضغط Enter - ابحث عن
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: https://nginx.org/en/download.html
تمكين خدمة 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