برو به محتوای اصلی

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: پایگاه داده

مراحل نصب پایگاه داده را از بخش Database مرور کنید.

گام 2: myems-api

  • نصب سرویس myems-api:
cp -r ~/myems/myems-api /myems-api
cd /myems-api
pip install -r requirements.txt
نکته کاربردی

اگر با خطای 'Failed building wheel for pillow' روبرو شدید، نیاز دارید نصب Pillow را انجام دهید.

ایجاد فایل .env بر اساس فایل example.env و ویرایش فایل .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'، چندین دستور (directive) اضافه کنید:

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 روی سرور متفاوتی، آدرس پیش‌فرض myems-api (http://127.0.0.1:8000/) را با آدرس واقعی جایگزین کنید:

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## برای جلوگیری از مشکل CORS، از Nginx برای پروکسی کردن myems-api به مسیر /api استفاده کنید
## یک location /api دیگر در بخش 'server' اضافه کنید
## در صورت размещение سرویس myems-api روی سرور متفاوتی، آدرس پیش‌فرض myems-api (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;
}
}
  • نصب 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' برای فایل‌های بارگذاری شده توسط کاربر است. هنگام به روزرسانی 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 و ویرایش فایل .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 و ویرایش فایل .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 و ویرایش فایل .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 و ویرایش فایل .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;
# اضافه کردن دستور try_files برای جلوگیری از خطای 404 هنگام رفرش صفحات
try_files $uri /index.html;
}
## برای جلوگیری از مشکل CORS، از Nginx برای پروکسی کردن myems-api به مسیر /api استفاده کنید
## یک location /api دیگر در بخش 'server' اضافه کنید
## در صورت размещение سرویس myems-api روی سرور متفاوتی، آدرس پیش‌فرض myems-api (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;
}
}
  • نصب رابط کاربری وب MyEMS:

تنظیم 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

ساخت (Build):

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 (Admin 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

رفع اشکال