openEuler
در این راهنما، MyEMS را بر روی سرور openEuler مستقر خواهید کرد.
پیشنیازها
این راهنما نحوه نصب MyEMS بر روی openEuler 23.03 را توضیح میدهد. الزامات سختافزاری به پایگاه داده انتخابی و تعداد دستگاههای متصل به سیستم بستگی دارد. برای اجرای MyEMS و MySQL بر روی یک ماشین، حداقل به ۴ گیگابایت رم نیاز دارید.
کلون کردن کد منبع:
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
فایل .env را بر اساس example.env ایجاد کرده و در صورت نیاز فایل .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/ را در صورت میزبانی سرویس myems-api روی سرور دیگر، با آدرس واقعی جایگزین کنید.
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 firewall-cmd --zone=public --add-port=8001/tcp --permanent
sudo firewall-cmd --reload
سرویس nginx را مجدداً راهاندازی کنید:
sudo systemctl restart nginx.service
اگر با خطای '403 Forbidden' در nginx مواجه شدید، میتوانید با تغییر حالت SELinux با دستور 'sudo setenforce 0' آن را برطرف کنید.
مرحله ۴ 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
مرحله ۵ 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
مرحله ۶ 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
مرحله ۷ 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
مرحله ۸ myems-web
در این مرحله، سرویس رابط کاربری myems-web را نصب خواهید کرد.
- نصب سرور NGINX
به http://nginx.org/en/linux_packages.html#RHEL مراجعه کنید
- پیکربندی NGINX
sudo nano /etc/nginx/nginx.conf
حذف فایلهای پیشفرض
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 firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload
سرویس nginx را مجدداً راهاندازی کنید:
sudo systemctl restart nginx.service
اگر با خطای '500 Internal Server Error' در nginx مواجه شدید، میتوانید با تغییر حالت SELinux با دستور 'sudo setenforce 0' آن را برطرف کنید.
پس از نصب
تبریک! اکنون میتوانید به رابط کاربری مدیریت MyEMS و رابط کاربری وب وارد شوید.