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
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
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:
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
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