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