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

CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux

در این راهنما، شما MyEMS را بر روی سرور CentOS یا RHEL نصب خواهید کرد.

پیش‌نیازها

این راهنما نحوه نصب MyEMS بر روی CentOS Stream 9 / Red Hat Enterprise Linux 9 (RHEL 9) / Rocky 9 / AlmaLinux 9.1 / Oracle Linux 9.1 را توضیح می‌دهد. نیازمندی‌های سخت‌افزاری به پایگاه داده انتخابی و تعداد دستگاه‌های متصل بستگی دارد. برای اجرای MyEMS و MySQL روی یک سرور، حداقل ۴ گیگابایت رم لازم است.

سیستم را به‌روزرسانی کرده و ابزارهای مورد نیاز را نصب کنید

sudo dnf update
sudo dnf install git
sudo dnf install python3-pip

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

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

مرحله ۱ پایگاه داده

به راهنمای پایگاه داده مراجعه کنید

مرحله ۲ myems-api

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

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) اگر کد کار نکرد، می‌توانید از کد زیر استفاده کنید: sudo pip install -r requirements.txt --break-system-packages

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

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

پورت را به فایروال اضافه کنید:

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

مرحله ۳ 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 استفاده کنید
## مکان دیگری با نام /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 را فشرده و به سرور منتقل و در مسیر ~/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، پوشه 'upload' را حذف/انتقال/بازنویسی نکنید.

 /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
نکته کاربردی

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

مرحله ۴ 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
نکته

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) اگر کد کار نکرد، می‌توانید از کد زیر استفاده کنید: sudo pip install -r requirements.txt --break-system-packages

فایل example.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

مرحله ۵ myems-cleaning

در این مرحله، سرویس myems-cleaning را نصب می‌کنید.

sudo cp -r ~/myems/myems-cleaning /myems-cleaning
cd /myems-cleaning
sudo pip install -r requirements.txt
نکته

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) اگر کد کار نکرد، می‌توانید از کد زیر استفاده کنید: sudo pip install -r requirements.txt --break-system-packages

فایل example.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

مرحله ۶ myems-normalization

در این مرحله، سرویس myems-normalization را نصب می‌کنید.

sudo cp -r ~/myems/myems-normalization /myems-normalization
cd /myems-normalization
sudo pip install -r requirements.txt
نکته

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) اگر کد کار نکرد، می‌توانید از کد زیر استفاده کنید: sudo pip install -r requirements.txt --break-system-packages

فایل example.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

مرحله ۷ myems-aggregation

در این مرحله، سرویس myems-aggregation را نصب می‌کنید.

sudo cp -r ~/myems/myems-aggregation /myems-aggregation
cd /myems-aggregation
sudo pip install -r requirements.txt
نکته

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) اگر کد کار نکرد، می‌توانید از کد زیر استفاده کنید: sudo pip install -r requirements.txt --break-system-packages

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

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

مرحله ۸ 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 استفاده کنید
## مکان دیگری با نام /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 Web را نصب کنید:

NodeJS را نصب کنید:

sudo dnf install nodejs
  • فایل config.js را ویرایش نمایید:
نکته

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

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

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

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
نکته کاربردی

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

پس از نصب

تبریک! اکنون می‌توانید به رابط مدیریت MyEMS و رابط کاربری وب وارد شوید.

پورت‌های پیش‌فرض

رابط کاربری وب MyEMS: ۸۰ API MyEMS: ۸۰۰۰ رابط مدیریت MyEMS: ۸۰۰۱

رمزهای عبور پیش‌فرض

رابط کاربری مدیریت
administrator

!MyEMS1
رابط کاربری وب
administrator@myems.io

!MyEMS1

عیب‌یابی