Przejdź do głównej zawartości

CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux

W tym przewodniku wdrożysz MyEMS na serwerze CentOS lub RHEL.

Wymagania wstępne

Ten przewodnik opisuje, jak zainstalować MyEMS na CentOS Stream 9 / Red Hat Enterprise Linux 9 (RHEL 9) / Rocky 9 / AlmaLinux 9.1 / Oracle Linux 9.1. Wymagania sprzętowe zależą od wybranej bazy danych oraz liczby urządzeń podłączonych do systemu. Aby uruchomić MyEMS i MySQL na jednej maszynie, potrzebujesz co najmniej 4 GB pamięci RAM.

Zaktualizuj system i zainstaluj narzędzia

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

Sklonuj kod źródłowy:

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

Krok 1 Baza danych

Zobacz Baza danych

Krok 2 myems-api

  • Zainstaluj usługę myems-api:
sudo cp -r ~/myems/myems-api /myems-api
cd /myems-api
sudo pip install -r requirements.txt
Uwaga

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1)If the code does not work, you can use the following code: sudo pip install -r requirements.txt --break-system-packages

Utwórz plik .env na podstawie example.env i edytuj go w razie potrzeby:

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

Dodaj port do zapory:

sudo firewall-cmd --zone=public --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

Skonfiguruj pliki 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/

Następnie włącz usługi, aby uruchamiały się automatycznie przy starcie systemu:

sudo systemctl enable myems-api.socket
sudo systemctl enable myems-api.service

Uruchom usługi:

sudo systemctl start myems-api.socket
sudo systemctl start myems-api.service

Krok 3 myems-admin

  • Zainstaluj serwer NGINX

zobacz: http://nginx.org/en/linux_packages.html#RHEL

Włącz usługę nginx:

sudo systemctl start nginx.service
  • Skonfiguruj NGINX
sudo nano /etc/nginx/nginx.conf

W sekcji 'http' dodaj następujące dyrektywy:

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;
...

}

Dodaj nowy plik w katalogu /etc/nginx/conf.d/

sudo nano /etc/nginx/conf.d/myems-admin.conf

Wypełnij plik poniższymi dyrektywami i zamień domyślny adres myems-api http://127.0.0.1:8000/ na właściwy, jeśli usługa myems-api jest uruchomiona na innym serwerze

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## To avoid CORS issue, use Nginx to proxy myems-api to path /api
## Add another location /api in 'server'
## Replace the default myems-api url http://127.0.0.1:8000/ with actual url if the myems-api servcie hosted on different server
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Zainstaluj myems-admin: Jeśli serwer nie ma dostępu do internetu, skompresuj folder myems/myems-admin, prześlij go na serwer i rozpakuj do ~/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

Sprawdź plik konfiguracyjny i zmień go w razie potrzeby:

sudo nano /var/www/myems-admin/app/api.js
Ostrzeżenie

Folder 'upload' służy do przechowywania plików przesłanych przez użytkowników. NIE usuwaj/przenoś/nie nadpisuj folderu 'upload' podczas aktualizacji myems-admin.

 /var/www/myems-admin/upload

Odblokuj port i dodaj go do zapory:

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

Zrestartuj usługę nginx:

sudo systemctl restart nginx.service
Porada

Jeśli napotkasz błąd nginx '403 Forbidden', możesz go naprawić, zmieniając tryb SELinux poleceniem 'sudo setenforce 0'

Krok 4 myems-modbus-tcp

W tym kroku zainstalujesz usługę myems-modbus-tcp.

sudo cp -r ~/myems/myems-modbus-tcp /myems-modbus-tcp
cd /myems-modbus-tcp
sudo pip install -r requirements.txt
Uwaga

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1)If the code does not work, you can use the following code: sudo pip install -r requirements.txt --break-system-packages

Skopiuj plik example.env do .env i zmodyfikuj plik .env:

sudo cp /myems-modbus-tcp/example.env /myems-modbus-tcp/.env
sudo nano /myems-modbus-tcp/.env

Skonfiguruj usługę systemd:

sudo cp myems-modbus-tcp.service /lib/systemd/system/

Włącz usługę:

sudo systemctl enable myems-modbus-tcp.service

Uruchom usługę:

sudo systemctl start myems-modbus-tcp.service

Monitoruj usługę:

sudo systemctl status myems-modbus-tcp.service

Wyświetl log:

cat /myems-modbus-tcp.log

Krok 5 myems-cleaning

W tym kroku zainstalujesz usługę myems-cleaning.

sudo cp -r ~/myems/myems-cleaning /myems-cleaning
cd /myems-cleaning
sudo pip install -r requirements.txt
Uwaga

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1)If the code does not work, you can use the following code: sudo pip install -r requirements.txt --break-system-packages

Skopiuj plik example.env do .env i zmodyfikuj plik .env:

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

Skonfiguruj usługę systemd:

sudo cp /myems-cleaning/myems-cleaning.service /lib/systemd/system/

Włącz usługę:

sudo systemctl enable myems-cleaning.service

Uruchom usługę:

sudo systemctl start myems-cleaning.service

Monitoruj usługę:

sudo systemctl status myems-cleaning.service

Wyświetl log:

cat /myems-cleaning.log

Krok 6 myems-normalization

W tym kroku zainstalujesz usługę myems-normalization.

sudo cp -r ~/myems/myems-normalization /myems-normalization
cd /myems-normalization
sudo pip install -r requirements.txt
Uwaga

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1)If the code does not work, you can use the following code: sudo pip install -r requirements.txt --break-system-packages

Skopiuj plik example.env do .env i zmodyfikuj plik .env:

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

Skonfiguruj usługę systemd:

sudo cp /myems-normalization/myems-normalization.service /lib/systemd/system/

Włącz usługę:

sudo systemctl enable myems-normalization.service

Uruchom usługę:

sudo systemctl start myems-normalization.service

Monitoruj usługę:

sudo systemctl status myems-normalization.service

Wyświetl log:

cat /myems-normalization.log

Krok 7 myems-aggregation

W tym kroku zainstalujesz usługę myems-aggregation.

sudo cp -r ~/myems/myems-aggregation /myems-aggregation
cd /myems-aggregation
sudo pip install -r requirements.txt
Uwaga

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1)If the code does not work, you can use the following code: sudo pip install -r requirements.txt --break-system-packages

Skopiuj plik example.env do .env i zmodyfikuj plik .env:

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

Skonfiguruj usługę systemd:

sudo cp /myems-aggregation/myems-aggregation.service /lib/systemd/system/

Włącz usługę:

sudo systemctl enable myems-aggregation.service

Uruchom usługę:

sudo systemctl start myems-aggregation.service

Monitoruj usługę:

sudo systemctl status myems-aggregation.service

Wyświetl log:

cat /myems-aggregation.log

Krok 8 myems-web

W tym kroku zainstalujesz usługę interfejsu MyEMS Web UI.

  • Zainstaluj serwer NGINX

zobacz: http://nginx.org/en/linux_packages.html#RHEL

  • Skonfiguruj NGINX

Usuń domyślne pliki

sudo rm /etc/nginx/sites-enabled/default
sudo rm /etc/nginx/conf.d/default.conf

Dodaj nowy plik w katalogu /etc/nginx/conf.d/

sudo nano /etc/nginx/conf.d/myems-web.conf

Dodaj nową sekcję 'server' z poniższymi dyrektywami:

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# add try_files directive to avoid 404 error while refreshing pages
try_files $uri /index.html;
}
## To avoid CORS issue, use Nginx to proxy myems-api to path /api
## Add another location /api in 'server'
## replace the default myems-api url http://127.0.0.1:8000/ with actual url if the myems-api servcie hosted on different server
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Zainstaluj MyEMS Web UI:

Skonfiguruj NodeJS:

sudo dnf install nodejs
  • Zmodyfikuj plik config.js:
Uwaga

Uzyskaj mapboxToken na stronie https://mapbox.com i ustaw showOnlineMap na true. Jeśli chcesz wyłączyć funkcję mapy online, ustaw showOnlineMap na false

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

Zbuduj i skompresuj

sudo npm i --unsafe-perm=true --allow-root --legacy-peer-deps
sudo npm run build

Instalacja Prześlij pliki na swój serwer WWW. Zwróć uwagę, że poniższa ścieżka powinna być taka sama, jak skonfigurowana w nginx.conf.

sudo mv build  /var/www/myems-web

Odblokuj port i dodaj go do zapory:

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

Zrestartuj usługę nginx:

sudo systemctl restart nginx.service
Porada

Jeśli napotkasz błąd nginx '500 Internal Server Error', możesz go naprawić, zmieniając tryb SELinux poleceniem 'sudo setenforce 0'

Po instalacji

Gratulacje! Możesz teraz zalogować się do MyEMS Admin UI i Web UI.

Domyślne porty

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

Domyślne hasła

Admin UI
administrator

!MyEMS1
Web UI
administrator@myems.io

!MyEMS1

Rozwiązywanie problemów