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

Anolis OS

در این راهنما، مراحل نصب و راه‌اندازی MyEMS روی سیستم عامل Anolis OS را آموزش خواهیم داد.

پیش‌نیازها

این راهنما نحوه نصب MyEMS روی Anolis OS 8 را توضیح می‌دهد. الزامات سخت‌افزاری به پایگاه داده انتخابی و تعداد دستگاه‌های متصل به سیستم بستگی دارد. برای اجرای MyEMS و MySQL روی یک ماشین واحد، حداقل 4 گیگابایت رم نیاز دارید.

به‌روزرسانی سیستم و نصب ابزارهای لازم:

sudo dnf update
sudo yum install python39
sudo ln -sb /bin/python3.9 /bin/python3
sudo ln -sb /bin/pip3.9 /bin/pip3
sudo ln -sb /bin/python3.9 /bin/python
sudo ln -sb /bin/pip3.9 /bin/pip
sudo dnf install git

کلون کردن کد منبع:

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

گام 1: پایگاه داده

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

گام 2: myems-api

  • نصب سرویس myems-api:
sudo cp -r ~/myems/myems-api /myems-api
cd /myems-api
sudo pip install -r requirements.txt

ایجاد فایل .env بر اساس فایل example.env و ویرایش آن در صورت نیاز:

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

بررسی یا تغییر پورت گوشی (پورت پیش‌فرض 8000) در فایل‌های myems-api.service و myems-api.socket:

sudo nano /myems-api/myems-api.service
ExecStart=/usr/local/bin/gunicorn -b 0.0.0.0:8000 --pid /run/myems-api/pid --timeout 600 --workers=4 app:api
sudo nano /myems-api/myems-api.socket
ListenStream=0.0.0.0:8000

اضافه کردن پورت به آتش‌نگاری (firewall):

sudo firewall-cmd --zone=public --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

تنظیم فایل‌های پیکربندی 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#RHEL مرور کنید.

فعال کردن سرویس nginx:

sudo systemctl start nginx.service
  • پیکربندی NGINX
sudo 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/:

sudo nano /etc/nginx/conf.d/myems-admin.conf

دستورات زیر را وارد کنید و در صورت размещение سرویس 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 روی سرور متفاوت، آدرس پیش‌فرض 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 استخراج کنید.
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' برای فایل‌های بارگذاری شده توسط کاربر است. هنگام به‌روزرسانی myems-admin، این پوشه را حذف/جابجا/برچسب نزنید.

 /var/www/myems-admin/upload

باز کردن پورت و اضافه کردن آن به آتش‌نگاری:

sudo semanage port -a -t http_port_t  -p tcp 8001
sudo firewall-cmd --zone=public --add-port=8001/tcp --permanent
sudo firewall-cmd --reload

راه‌اندازی مجدد سرویس nginx:

sudo systemctl restart nginx.service
نکته کاربردی

اگر با خطای nginx '403 Forbidden' روبرو شدید، می‌توانید با تغییر حالت SELinux با دستور 'sudo setenforce 0' این مشکل را برطرف کنید.

گام 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

کپی کردن فایل 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

مشاهده لاگ:

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

کپی کردن فایل 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

مشاهده لاگ:

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

کپی کردن فایل 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

مشاهده لاگ:

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

کپی کردن فایل exmaple.env به .env و ویرایش فایل .env:

sudo cp /myems-aggregation/example.env /myems-aggregation/.env
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

مشاهده لاگ:

cat /myems-aggregation.log

گام 8: myems-web

در این گام، سرویس رابط کاربری وب myems-web را نصب خواهید کرد.

  • نصب سرور NGINX

مراحل نصب را از آدرس http://nginx.org/en/linux_packages.html#RHEL مرور کنید.

  • پیکربندی 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 روی سرور متفاوت، آدرس پیش‌فرض 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:

sudo dnf module list nodejs
sudo dnf module reset nodejs:16/common
sudo dnf module install nodejs:16/common
  • ویرایش فایل config.js:
نکته

توکن mapboxToken را از آدرس https://mapbox.com دریافت کرده و سپس showOnlineMap را برابر true تنظیم کنید. اگر می‌خواهید قابلیت نقشه آنلاین را خاموش کنید، showOnlineMap را برابر false قرار دهید.

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

اگر دستور 'node -v' خروجی 'v16.xx.xx' را نشان دهد، پارامتر '--openssl-legacy-provider' از دستورات start و build در فایل package.json باید حذف شود:

sudo nano package.json
  ...
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
...

ساخت و فشرده‌سازی:

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

نصب: فایل‌ها را روی سرور وب آپلود کنید. توجه داشته باشید که مسیر زیر باید با مسیری که در nginx.conf پیکربندی شده، مطابقت داشته باشد.

sudo mv build  /var/www/myems-web

باز کردن پورت و اضافه کردن آن به آتش‌نگاری:

sudo semanage port -a -t http_port_t  -p tcp 80
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

راه‌اندازی مجدد سرویس nginx:

sudo systemctl restart nginx.service
نکته کاربردی

اگر با خطای nginx '500 Internal Server Error' روبرو شدید، می‌توانید با تغییر حالت SELinux با دستور 'sudo setenforce 0' این مشکل را برطرف کنید.

پس از نصب

تبریک! اکنون می‌توانید به رابط کاربری مدیریت 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

رفع اشکال