Kylin OS
در این راهنما، MyEMS را روی سرور Kylin V11 پیادهسازی خواهید کرد.
پیشنیازها
این راهنما نحوه نصب MyEMS روی Kylin V11 را شرح میدهد. نیازمندیهای سختافزاری به پایگاه داده انتخابی و تعداد دستگاههای متصل به سیستم بستگی دارد. برای اجرای MyEMS و MySQL روی یک ماشین، حداقل به ۸ گیگابایت رم نیاز دارید.
سیستم را بهروزرسانی کرده و ابزارها را نصب کنید:
sudo yum update
sudo yum install git
systemctl stop firewalld
کد منبع را کلون کنید:
cd ~
git clone https://gitee.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 ایجاد کرده و در صورت نیاز ویرایش کنید:
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 را فعال کنید:
yum install -y nginx
sudo systemctl start nginx.service
- پیکربندی NGINX
sudo vi /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 vi /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 استفاده کنید
## یک لوکیشن دیگر /api در 'server' اضافه کنید
## اگر سرویس myems-api روی سرور متفاوتی میزبانی میشود، آدرس پیشفرض 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 مواجه شدید، میتوانید با تغییر حالت SELinux با دستور 'sudo setforce 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
فایل 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
فایل 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
فایل 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
فایل 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#Debian مراجعه کنید.
- 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
دستورات زیر را بنویسید. اگر سرویس myems-api روی سرور متفاوتی میزبانی میشود، آدرس پیشفرض myems-api یعنی http://127.0.0.1:8000/ را با آدرس واقعی جایگزین کنید.
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 روی سرور متفاوتی میزبانی میشود، آدرس پیشفرض myems-api را با آدرس واقعی جایگزین کنید
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
- نصب رابط کاربری وب MyEMS:
فایل پیکربندی را ویرایش کنید:
توجه یک mapboxToken از https://mapbox.com دریافت کنید و سپس showOnlineMap را روی true قرار دهید. اگر میخواهید عملکرد نقشه آنلاین را غیرفعال کنید، showOnlineMap را روی false قرار دهید.
cd ~/myems/myems-web
sudo nano src/config.js
ساخت (Build):
sudo npm i --unsafe-perm=true --allow-root --legacy-peer-deps
sudo npm run build
نصب: توجه داشته باشید که مسیر زیر باید با مسیر پیکربندی شده در nginx.conf مطابقت داش ته باشد.
sudo rm -r /var/www/myems-web
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
نکته اگر با خطای '500 Internal Server Error' nginx مواجه شدید، میتوانید با تغییر حالت SELinux با دستور 'sudo setforce 0' آن را برطرف کنید.
پس از نصب
تبریک! اکنون میتوانید به رابط کاربری مدیریت MyEMS و رابط کاربری وب وارد شوید.
پورتهای پیشفرض
رابط کاربری وب MyEMS: 80 API MyEMS: 8000 رابط کاربری مدیریت MyEMS: 8001
آدرس سرور را 192.168.1.8 در نظر بگیرید (با آدرس واقعی سرور خود جایگزین کنید). آدرس رابط کاربری وب MyEMS: http://192.168.1.8 (پورت 80 قابل حذف است) آدرس رابط کاربری مدیریت MyEMS: http://192.168.1.8:8001
رمزهای عبور پیشفرض
رابط کاربری مدیریت MyEMS نام کاربری:
administrator
رمز عبور:
!MyEMS1
رابط کاربری وب MyEMS نام کاربری:
administrator
رمز عبور:
!MyEMS1
عیبیابی
نصب MySQL 8.0
۱. آمادهسازی
بررسی محیط سیستم
# بررسی نسخه سیستم
cat /etc/redhat-release
# بررسی نصب بودن MySQL
rpm -qa | grep mysql
rpm -qa | grep mariadb
# حذف mariadb در صورت وجود
rpm -e --nodeps mariadb-libs-*
۲. دانلود باندل rpm رسمی MySQL
https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.45-1.el8.x86_64.rpm-bundle.tar
۳. نصب MySQL 8.0
tar -xvf *.tar
yum localinstall *.rpm
# اگر با مشکل کلید GPG مواجه شدید، به طور موقت از این دستور استفاده کنید
yum install -y mysql-community-server --nogpgcheck
۴. شروع سرویس MySQL
# شروع MySQL
systemctl start mysqld
# فعالسازی شروع خودکار هنگام بوت
systemctl enable mysqld
# بررسی وضعیت سرویس
systemctl status mysqld
۵. دریافت رمز عبور اولیه
# برر سی رمز عبور موقت تولید شده توسط MySQL
grep 'temporary password' /var/log/mysqld.log
۶. پیکربندی امنیتی
# اجرای اسکریپت نصب امن
mysql_secure_installation
پرسشها را دنبال کنید:
۱. رمز عبور موقت را وارد کنید ۲. یک رمز عبور جدید تنظیم کنید (باید شامل حروف بزرگ، حروف کوچک، اعداد و کاراکترهای خاص باشد) ۳. تغییر رمز عبور root؟ Y ۴. حذف کاربران ناشناس؟ Y ۵. عدم اجازه ورود root از راه دور؟ بنا به نیاز انتخاب کنید ۶. حذف پایگاه داده تست؟ Y ۷. بارگذاری مجدد جداول امتیازات؟ Y