Przejdź do głównej zawartości

Anolis OS

W tym przewodniku wdrożysz MyEMS na systemie Anolis OS.

Wymagania wstępne

Ten przewodnik opisuje, jak zainstalować MyEMS na Anolis OS 8. 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 yum install python39
sudo ln -sb /bin/python3.9 /bin/python3
sudo ln -sb /bin/pip3.9 /bin/pip3
sudo ln -sb /bin/python3.9 /bin/python
sudo ln -sb /bin/pip3.9 /bin/pip
sudo dnf install git

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

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

Sprawdź lub zmień port nasłuchiwania (domyślnie 8000) w plikach myems-api.service i myems-api.socket:

sudo nano /myems-api/myems-api.service
ExecStart=/usr/local/bin/gunicorn -b 0.0.0.0:8000 --pid /run/myems-api/pid --timeout 600 --workers=4 app:api
sudo nano /myems-api/myems-api.socket
ListenStream=0.0.0.0:8000

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

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

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

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

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

sudo cp /myems-aggregation/example.env /myems-aggregation/.env
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 module list nodejs
sudo dnf module reset nodejs:16/common
sudo dnf module install nodejs:16/common
  • 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

Jeśli 'node -v' zwraca 'v16.xx.xx', parametry '--openssl-legacy-provider' w poleceniach start i build muszą zostać usunięte z package.json

sudo nano package.json
  ...
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
...

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

Zakładając, że adres serwera to 192.168.1.8 (zamień na właściwy adres serwera) Uzyskaj dostęp do MyEMS Web UI pod adresem http://192.168.1.8 (80 można pominąć) Uzyskaj dostęp do MyEMS Admin UI pod adresem http://192.168.1.8:8001

Domyślne hasła

MyEMS Admin UI

Nazwa użytkownika:

administrator

Hasło:

!MyEMS1

MyEMS Web UI

Nazwa użytkownika:

administrator@myems.io

Hasło:

!MyEMS1

Rozwiązywanie problemów