Fedora CoreOS
در این راهنما، یاد خواهید گرفت که چگونه MyEMS را روی سرور Fedora CoreOS مستقر کنید.
پیشنیازها
این راهنما توضیح میدهد که چگونه MyEMS را روی Fedora CoreOS 40 نصب کنید. الزامات سختافزاری بسته به پایگاه داده انتخاب شده و تعداد دستگاههای متصل به سیستم متغیر است. برای اجرای MyEMS و MySQL روی یک ماشین واحد، حداقل 4 گیگابایت رم نیاز دارید.
به روزرسانی سیستم و نصب ابزارها:
rpm-ostree install git
rpm-ostree install python3
rpm-ostree install python3-pip
rpm-ostree install nginx
کلون کردن کد منبع:
cd ~
git clone https://github.com/myems/myems
گام 1: پایگاه داده
مراحل نصب پایگاه داده را از بخش Database مرور کنید.
گام 2: myems-api
- نصب سرویس myems-api:
sudo cp -r ~/myems/myems-api /var/myems-api
cd /var/myems-api
sudo pip install -r requirements.txt
ایجاد فایل .env بر اساس فایل example.env و ویرایش فایل .env در صورت نیاز:
sudo cp /var/myems-api/example.env /var/myems-api/.env
sudo nano /var/myems-api/.env
اضافه کردن پورت به فایروال:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=8000/tcp --permanent
sudo firewall-cmd --reload
تنظیم فایلهای پیکربندی systemd:
sudo cp /var/myems-api/myems-api.service /etc/systemd/system/
sudo cp /var/myems-api/myems-api.socket /etc/systemd/system/
sudo cp /var/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'، چندین دستور (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/ ایجاد کنید:
sudo 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 استخراج کنید.
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 firewall-cmd --add-service=http --permanent
sudo firewall-cmd --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 /var/myems-modbus-tcp
cd /var/myems-modbus-tcp
sudo pip install -r requirements.txt
کپی کردن فایل exmaple.env به .env و ویرایش فایل .env:
sudo cp /var/myems-modbus-tcp/example.env /var/myems-modbus-tcp/.env
sudo nano /var/myems-modbus-tcp/.env
ویرایش فایل main.py:
fh = RotatingFileHandler('/var/myems-modbus-tcp.log', maxBytes=1024*1024, backupCount=1)
تنظیم سرویس systemd:
sudo cp myems-modbus-tcp.service /etc/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 /var/myems-cleaning
cd /var/myems-cleaning
sudo pip install -r requirements.txt
کپی کردن فایل exmaple.env به .env و ویرایش فایل .env:
sudo cp /var/myems-cleaning/example.env /var/myems-cleaning/.env
sudo nano /var/myems-cleaning/.env
ویرایش فایل main.py:
fh = RotatingFileHandler('/var/myems-cleaning.log', maxBytes=1024*1024, backupCount=1)
تنظیم سرویس systemd:
sudo cp /var/myems-cleaning/myems-cleaning.service /etc/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 /var/myems-normalization
cd /var/myems-normalization
sudo pip install -r requirements.txt
کپی کردن فایل exmaple.env به .env و ویرایش فایل .env:
sudo cp /var/myems-normalization/example.env /var/myems-normalization/.env
sudo nano /var/myems-normalization/.env
ویرایش فایل main.py:
fh = RotatingFileHandler('/var/myems-normalization.log', maxBytes=1024*1024, backupCount=1)
تنظیم سرویس systemd:
sudo cp /var/myems-normalization/myems-normalization.service /etc/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 /var/myems-aggregation
cd /var/myems-aggregation
sudo pip install -r requirements.txt
کپی کردن فایل exmaple.env به .env و ویرایش فایل .env:
sudo cp /var/myems-aggregation/example.env /var/myems-aggregation/.env
nano /var/myems-aggregation/.env
ویرایش فایل main.py:
fh = RotatingFileHandler('/var/myems-aggregation.log', maxBytes=1024*1024, backupCount=1)
تنظیم سرویس systemd:
sudo cp /var/myems-aggregation/myems-aggregation.service /etc/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 روی سرور متفاوتی، آدرس پیشفرض 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 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 --add-service=http --permanent
sudo firewall-cmd --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