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

FreeBSD

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

المتطلبات المسبقة

يصف هذا الدليل كيفية تثبيت MyEMS على FreeBSD 13.2. تعتمد متطلبات الأجهزة على قاعدة البيانات المختارة وعدد الأجهزة المتصلة بالنظام. لتشغيل MyEMS وMySQL على جهاز واحد ستحتاج إلى 4 جيجابايت من الذاكرة العشوائية على الأقل.

تحديث النظام وتثبيت الأدوات

pkg install git
pkg install python3
pkg install py39-pip-22.3.1
pkg install nginx
pkg install monit

استنساخ الشيفرة المصدرية:

cd ~
git clone https://github.com/myems/myems

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

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

الخطوة 2: myems-api

  • تثبيت خدمة myems-api:
cp -r ~/myems/myems-api /myems-api
cd /myems-api
pip install -r requirements.txt
نصيحة

If you encounter 'Failed building wheel for pillow' error, you need to Installation Pillow

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

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

استخدم خدمة monit للمراقبة وقم بتحرير ملف إعدادات monit:

nano /etc/monit.d/myems-api
check process mymes-api with pidfile /var/run/myems-api/pid
start program = "/usr/local/bin/gunicorn -b 0.0.0.0:8000 --pid /var/run/myems-api/pid --timeout 600 --workers=4 app:api &"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

ابدأ الخدمات:

monit restart

الخطوة 3: myems-admin

  • تثبيت خادم NGINX

راجع http://nginx.org/en/docs/install.html

تفعيل خدمة nginx:

service nginx enable
  • إعداد NGINX
nano /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/

nano /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;
}
## To avoid CORS issue, use Nginx to proxy myems-api to path /api
## Add another location /api in 'server'
## Replace the default myems-api url http://127.0.0.1:8000/ with actual url if the myems-api servcie hosted on different server
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
mkdir /var/www
cp -r ~/myems/myems-admin  /var/www/myems-admin
chmod 0755 /var/www/myems-admin
تحقق من ملف الإعدادات وقم بتعديله إذا لزم الأمر:
nano /var/www/myems-admin/app/api.js
احذر

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

 /var/www/myems-admin/upload

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

service nginx restart

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

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

cp -r ~/myems/myems-modbus-tcp /myems-modbus-tcp
cd /myems-modbus-tcp
pip install -r requirements.txt

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

cp /myems-modbus-tcp/example.env /myems-modbus-tcp/.env
nano /myems-modbus-tcp/.env

استخدم خدمة monit للمراقبة وقم بتحرير ملف إعدادات monit:

nano /etc/monit.d/myems-modbus-tcp
check file myems-modbus-tcp path /myems-modbus-tcp/main.py
start program = "/usr/local/bin/python3 /myems-modbus-tcp/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

ابدأ الخدمة:

monit restart

الخطوة 5: myems-cleaning

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

cp -r ~/myems/myems-cleaning /myems-cleaning
cd /myems-cleaning
pip install -r requirements.txt

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

cp /myems-cleaning/example.env /myems-cleaning/.env
nano /myems-cleaning/.env

استخدم خدمة monit للمراقبة وقم بتحرير ملف إعدادات monit:

nano /etc/monit.d/myems-cleaning
check file myems-cleaning path /myems-cleaning/main.py
start program = "/usr/local/bin/python3 /myems-cleaning/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

ابدأ الخدمة:

monit restart

الخطوة 6: myems-normalization

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

cp -r ~/myems/myems-normalization /myems-normalization
cd /myems-normalization
pip install -r requirements.txt

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

cp /myems-normalization/example.env /myems-normalization/.env
nano /myems-normalization/.env

استخدم خدمة monit للمراقبة وقم بتحرير ملف إعدادات monit:

nano /etc/monit.d/myems-normalization
check file myems-normalization path /myems-normalization/main.py
start program = "/usr/local/bin/python3 /myems-normalization/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

ابدأ الخدمة:

monit restart

الخطوة 7: myems-aggregation

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

cp -r ~/myems/myems-aggregation /myems-aggregation
cd /myems-aggregation
pip install -r requirements.txt

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

cp /myems-aggregation/example.env /myems-aggregation/.env
nano /myems-aggregation/.env

استخدم خدمة monit للمراقبة وقم بتحرير ملف إعدادات monit:

nano /etc/monit.d/myems-aggregation
check file myems-aggregation path /myems-aggregation/main.py
start program = "/usr/local/bin/python3 /myems-aggregation/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor

ابدأ الخدمة:

monit restart

الخطوة 8: myems-web

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

  • تثبيت خادم NGINX

راجع http://nginx.org/en/docs/install.html

  • إعداد 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;
# add try_files directive to avoid 404 error while refreshing pages
try_files $uri /index.html;
}
## To avoid CORS issue, use Nginx to proxy myems-api to path /api
## Add another location /api in 'server'
## replace the default myems-api url http://127.0.0.1:8000/ with actual url if the myems-api servcie hosted on different server
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • تثبيت واجهة MyEMS Web UI:

إعداد NodeJS:

pkg install node-18.16.0

تعديل ملف config.js:

ملاحظة

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

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

البناء

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

التثبيت لاحظ أن المسار التالي يجب أن يكون مطابقًا لما تم تكوينه في nginx.conf.

rm -r /var/www/myems-web
mv build  /var/www/myems-web

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

service nginx restart

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

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

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

واجهة 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

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