Ga naar de hoofdinhoud

Fedora CoreOS

In deze handleiding implementeer je MyEMS op een Fedora CoreOS-server.

Vereisten

Deze handleiding beschrijft hoe je MyEMS installeert op Fedora CoreOS 37. De hardwarevereisten zijn afhankelijk van de gekozen database en het aantal apparaten dat aan het systeem is verbonden. Om MyEMS en MySQL op één machine te draaien, heb je minimaal 4GB RAM nodig.

Systeem bijwerken en tools installeren:

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

Broncode klonen:

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

Stap 1 Database

Zie Database

Stap 2 myems-api

  • myems-api-service installeren:
sudo cp -r ~/myems/myems-api /var/myems-api
cd /var/myems-api
sudo pip install -r requirements.txt

.env-bestand aanmaken op basis van example.env en het .env-bestand bewerken indien nodig:

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

Poort toevoegen aan de firewall:

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

Systemd-configuratiebestanden instellen:

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/

Activeer vervolgens de services zodat ze automatisch opstarten bij het opstarten van het systeem:

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

Services starten:

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

Stap 3 myems-admin

  • NGINX-server installeren

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

NGINX-service activeren:

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

Voeg in de 'http'-sectie enkele richtlijnen toe:

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

}

Een nieuw bestand toevoegen onder /etc/nginx/conf.d/:

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

Schrijf de volgende richtlijnen en vervang de standaard myems-api-url http://127.0.0.1:8000/ door de werkelijke url als de myems-api-service op een andere server wordt gehost:

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Om CORS-problemen te voorkomen, gebruik Nginx om myems-api te proxy'en naar het pad /api
## Voeg een andere locatie /api toe in 'server'
## Vervang de standaard myems-api-url http://127.0.0.1:8000/ door de werkelijke url als de myems-api-service op een andere server wordt gehost
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • myems-admin installeren: Als de server geen verbinding met internet kan maken, comprimeer dan de map myems/myems-admin en upload deze naar de server en pak deze uit naar ~/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

Controleer het configuratiebestand en pas het indien nodig aan:

sudo nano /var/www/myems-admin/app/api.js
Voorzichtigheid

De map 'upload' is bedoeld voor door gebruikers geüploade bestanden. VERWIJDER/VERPLAAT/OVEERSCHRIJ DE MAP 'upload' NIET wanneer je myems-admin bijwerkt.

 /var/www/myems-admin/upload

Poort ontgrendelen en toevoegen aan de firewall:

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

NGINX-service herstarten:

sudo systemctl restart nginx.service
Tip

Als je de nginx-fout '403 Forbidden' tegenkomt, kun je dit oplossen door de SELinx-modus te wijzigen met de opdracht 'sudo setenforce 0'

Stap 4 myems-modbus-tcp

In deze stap installeer je de myems-modbus-tcp-service.

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

Example.env-bestand kopiëren naar .env en het .env-bestand aanpassen:

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

Het bestand main.py aanpassen:

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

Systemd-service instellen:

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

Service activeren:

sudo systemctl enable myems-modbus-tcp.service

Service starten:

sudo systemctl start myems-modbus-tcp.service

Service controleren:

sudo systemctl status myems-modbus-tcp.service

Log weergeven:

cat /myems-modbus-tcp.log

Stap 5 myems-cleaning

In deze stap installeer je de myems-cleaning-service.

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

Example.env-bestand kopiëren naar .env en het .env-bestand aanpassen:

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

Het bestand main.py aanpassen:

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

Systemd-service instellen:

sudo cp /var/myems-cleaning/myems-cleaning.service /etc/systemd/system/

Service activeren:

sudo systemctl enable myems-cleaning.service

Service starten:

sudo systemctl start myems-cleaning.service

Service controleren:

sudo systemctl status myems-cleaning.service

Log weergeven:

cat /myems-cleaning.log

Stap 6 myems-normalization

In deze stap installeer je de myems-normalization-service.

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

Example.env-bestand kopiëren naar .env en het .env-bestand aanpassen:

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

Het bestand main.py aanpassen:

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

Systemd-service instellen:

sudo cp /var/myems-normalization/myems-normalization.service /etc/systemd/system/

Service activeren:

sudo systemctl enable myems-normalization.service

Service starten:

sudo systemctl start myems-normalization.service

Service controleren:

sudo systemctl status myems-normalization.service

Log weergeven:

cat /myems-normalization.log

Stap 7 myems-aggregation

In deze stap installeer je de myems-aggregation-service.

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

Example.env-bestand kopiëren naar .env en het .env-bestand aanpassen:

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

Het bestand main.py aanpassen:

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

Systemd-service instellen:

sudo cp /var/myems-aggregation/myems-aggregation.service /etc/systemd/system/

Service activeren:

sudo systemctl enable myems-aggregation.service

Service starten:

sudo systemctl start myems-aggregation.service

Service controleren:

sudo systemctl status myems-aggregation.service

Log weergeven:

cat /myems-aggregation.log

Stap 8 myems-web

In deze stap installeer je de myems-web UI-service.

  • NGINX-server installeren

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

  • NGINX configureren

Standaardbestanden verwijderen:

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

Een nieuw bestand toevoegen onder /etc/nginx/conf.d/:

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

Voeg een nieuwe 'server'-sectie toe met de volgende richtlijnen:

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# try_files-richtlijn toevoegen om 404-fouten te voorkomen bij het vernieuwen van pagina's
try_files $uri /index.html;
}
## Om CORS-problemen te voorkomen, gebruik Nginx om myems-api te proxy'en naar het pad /api
## Voeg een andere locatie /api toe in 'server'
## Vervang de standaard myems-api-url http://127.0.0.1:8000/ door de werkelijke url als de myems-api-service op een andere server wordt gehost
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • MyEMS Web UI installeren:

NodeJS instellen:

sudo dnf install nodejs

Config.js-bestand aanpassen:

Notitie

Verkrijg een mapboxToken op https://mapbox.com en stel vervolgens showOnlineMap in op true. Als je de online kaartfunctie wilt uitschakelen, stel je showOnlineMap in op false.

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

Bouwen en comprimeren:

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

Installeren: Upload de bestanden naar je webserver. Let op dat het volgende pad overeenkomt met het pad dat is geconfigureerd in nginx.conf.

sudo mv build  /var/www/myems-web

Poort ontgrendelen en toevoegen aan de firewall:

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

NGINX-service herstarten:

sudo systemctl restart nginx.service
Tip

Als je de nginx-fout '500 Internal Server Error' tegenkomt, kun je dit oplossen door de SELinx-modus te wijzigen met de opdracht 'sudo setenforce 0'

Na installatie

Gefeliciteerd! Je kunt nu inloggen op de MyEMS Admin UI en Web UI.

Standaardpoorten

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

Als ervan wordt uitgegaan dat het serveradres 192.168.1.8 is (vervang dit door het werkelijke serveradres): Toegang tot MyEMS Web UI op http://192.168.1.8 (poort 80 kan worden weggelaten) Toegang tot MyEMS Admin UI op http://192.168.1.8:8001

Standaardwachtwoorden

MyEMS Admin UI

Gebruikersnaam:

administrator

Wachtwoord:

!MyEMS1

MyEMS Web UI

Gebruikersnaam:

administrator@myems.io

Wachtwoord:

!MyEMS1

Probleemoplossing