Przejdź do głównej zawartości

Fedora CoreOS

W tym przewodniku wdrożysz MyEMS na serwerze Fedora CoreOS.

Wymagania wstępne

Ten przewodnik opisuje, jak zainstalować MyEMS na Fedora CoreOS 37. Wymagania sprzętowe zależą od wybranej bazy danych i liczby urządzeń podłączonych do systemu. Aby uruchomić MyEMS i MySQL na jednej maszynie, potrzebujesz co najmniej 4 GB RAM.

Zaktualizuj system i zainstaluj narzędzia:

rpm-ostree install git
rpm-ostree install python3
rpm-ostree install python3-pip
rpm-ostree install nginx

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 /var/myems-api
cd /var/myems-api
sudo pip install -r requirements.txt

Utwórz plik .env na podstawie example.env i edytuj plik .env, jeśli to konieczne:

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

Dodaj port do zapory:

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

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

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

odniesienie: 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 kilka dyrektyw:

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

Wpisz dyrektywy jak poniżej i zastąp domyślny adres URL myems-api http://127.0.0.1:8000/ rzeczywistym adresem, jeśli usługa myems-api jest hostowana na innym serwerze.

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Aby uniknąć problemu CORS, użyj Nginx do proxy myems-api pod ścieżkę /api
## Dodaj kolejną lokalizację /api w 'server'
## Zastąp domyślny adres URL myems-api http://127.0.0.1:8000/ rzeczywistym adresem, jeśli usługa myems-api jest hostowana na innym serwerze.
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 może połączyć się z internetem, skompresuj folder myems/myems-admin, prześlij go na serwer i wypakuj 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, jeśli to konieczne:

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

Folder 'upload' jest przeznaczony dla plików przesłanych przez użytkownika. NIE USUWAJ/NIE PRZENOŚ/NIE NADPISUJ folderu 'upload' podczas aktualizacji myems-admin.

 /var/www/myems-admin/upload

Odblokuj port i dodaj port do zapory:

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --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 SELinx za pomocą polecenia 'sudo setenforce 0'.

Krok 4 myems-modbus-tcp

W tym kroku zainstalujesz usługę 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

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

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

Zmodyfikuj plik main.py:

fh = RotatingFileHandler('/var/myems-modbus-tcp.log', maxBytes=1024*1024, backupCount=1)

Skonfiguruj usługę systemd:

sudo cp myems-modbus-tcp.service /etc/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

Zobacz log:

cat /myems-modbus-tcp.log

Krok 5 myems-cleaning

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

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

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

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

Zmodyfikuj plik main.py:

fh = RotatingFileHandler('/var/myems-cleaning.log', maxBytes=1024*1024, backupCount=1)

Skonfiguruj usługę systemd:

sudo cp /var/myems-cleaning/myems-cleaning.service /etc/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

Zobacz log:

cat /myems-cleaning.log

Krok 6 myems-normalization

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

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

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

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

Zmodyfikuj plik main.py:

fh = RotatingFileHandler('/var/myems-normalization.log', maxBytes=1024*1024, backupCount=1)

Skonfiguruj usługę systemd:

sudo cp /var/myems-normalization/myems-normalization.service /etc/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

Zobacz log:

cat /myems-normalization.log

Krok 7 myems-aggregation

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

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

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

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

Zmodyfikuj plik main.py:

fh = RotatingFileHandler('/var/myems-aggregation.log', maxBytes=1024*1024, backupCount=1)

Skonfiguruj usługę systemd:

sudo cp /var/myems-aggregation/myems-aggregation.service /etc/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

Zobacz log:

cat /myems-aggregation.log

Krok 8 myems-web

W tym kroku zainstalujesz usługę interfejsu użytkownika myems-web.

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 dyrektywami jak poniżej:

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# dodaj dyrektywę try_files, aby uniknąć błędu 404 podczas odświeżania stron
try_files $uri /index.html;
}
## Aby uniknąć problemu CORS, użyj Nginx do proxy myems-api pod ścieżkę /api
## Dodaj kolejną lokalizację /api w 'server'
## Zastąp domyślny adres URL myems-api http://127.0.0.1:8000/ rzeczywistym adresem, jeśli usługa myems-api jest hostowana na innym serwerze.
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Zainstaluj interfejs użytkownika MyEMS Web:

Skonfiguruj NodeJS:

sudo dnf install nodejs

Zmodyfikuj plik config.js:

Uwaga

Uzyskaj mapboxToken na https://mapbox.com, a następnie 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. Pamiętaj, że poniższa ścieżka powinna być taka sama jak ta skonfigurowana w nginx.conf.

sudo mv build  /var/www/myems-web

Odblokuj port i dodaj port do zapory:

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --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 SELinx za pomocą polecenia 'sudo setenforce 0'.

Po instalacji

Gratulacje! Możesz teraz zalogować się do interfejsu administratora MyEMS i interfejsu użytkownika Web.

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 (zastąp rzeczywistym adresem 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