Ga naar de hoofdinhoud

CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux

In deze handleiding wordt uitgelegd hoe je MyEMS op een CentOS- of RHEL-server installeert.

Vereisten

Deze handleiding beschrijft hoe je MyEMS installeert op CentOS Stream 9 / Red Hat Enterprise Linux 9 (RHEL 9) / Rocky 9 / AlmaLinux 9.1 / Oracle Linux 9.1. De hardwarevereisten zijn afhankelijk van de gekozen database en het aantal apparaten dat op het systeem is aangesloten. Om MyEMS en MySQL op één machine te draaien, heb je minimaal 4GB RAM nodig.

Werk het systeem bij en installeer de benodigde tools

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

Kloon de broncode:

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

Stap 1 Database

Zie Database

Stap 2 myems-api

  • Installeer de myems-api service:
sudo cp -r ~/myems/myems-api /myems-api
cd /myems-api
sudo pip install -r requirements.txt
Notitie

(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

Maak een .env-bestand op basis van example.env en pas het .env-bestand aan indien nodig:

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

Voeg de poort toe aan de firewall:

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

Stel de systemd-configuratiebestanden in:

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/

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

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

Start de services:

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

Stap 3 myems-admin

  • Installeer de NGINX-server

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

Activeer de nginx-service:

sudo systemctl start nginx.service
  • Configureer NGINX
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;
...

}

Voeg een nieuw bestand toe onder /etc/nginx/conf.d/

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

Schrijf de richtlijnen zoals hieronder 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 draait

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;
}
}
  • Installeer myems-admin: Als de server geen verbinding kan maken met internet, comprimeer dan de map myems/myems-admin, 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 voor door gebruikers geüploade bestanden. Verwijder/verplaats/overschrijf de map 'upload' niet wanneer je myems-admin bijwerkt.

 /var/www/myems-admin/upload

Deblokkeer de poort en voeg deze toe aan de firewall:

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

Herstart de nginx-service:

sudo systemctl restart nginx.service
Tip

Als je een '403 Forbidden' nginx-fout tegenkomt, kun je dit oplossen door de SELinux-modus te wijzigen met het commando '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 /myems-modbus-tcp
cd /myems-modbus-tcp
sudo pip install -r requirements.txt
Notitie

(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

Kopieer het example.env-bestand naar .env en pas het .env-bestand aan:

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

Stel de systemd-service in:

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

Activeer de service:

sudo systemctl enable myems-modbus-tcp.service

Start de service:

sudo systemctl start myems-modbus-tcp.service

Controleer de status van de service:

sudo systemctl status myems-modbus-tcp.service

Bekijk het logbestand:

cat /myems-modbus-tcp.log

Stap 5 myems-cleaning

In deze stap installeer je de myems-cleaning service.

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

(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

Kopieer het example.env-bestand naar .env en pas het .env-bestand aan:

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

Stel de systemd-service in:

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

Activeer de service:

sudo systemctl enable myems-cleaning.service

Start de service:

sudo systemctl start myems-cleaning.service

Controleer de status van de service:

sudo systemctl status myems-cleaning.service

Bekijk het logbestand:

cat /myems-cleaning.log

Stap 6 myems-normalization

In deze stap installeer je de myems-normalization service.

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

(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

Kopieer het example.env-bestand naar .env en pas het .env-bestand aan:

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

Stel de systemd-service in:

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

Activeer de service:

sudo systemctl enable myems-normalization.service

Start de service:

sudo systemctl start myems-normalization.service

Controleer de status van de service:

sudo systemctl status myems-normalization.service

Bekijk het logbestand:

cat /myems-normalization.log

Stap 7 myems-aggregation

In deze stap installeer je de myems-aggregation service.

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

(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

Kopieer het example.env-bestand naar .env en pas het .env-bestand aan:

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

Stel de systemd-service in:

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

Activeer de service:

sudo systemctl enable myems-aggregation.service

Start de service:

sudo systemctl start myems-aggregation.service

Controleer de status van de service:

sudo systemctl status myems-aggregation.service

Bekijk het logbestand:

cat /myems-aggregation.log

Stap 8 myems-web

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

  • Installeer de NGINX-server

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

  • Configureer NGINX

Verwijder standaardbestanden

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

Voeg een nieuw bestand toe 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;
# voeg de try_files-richtlijn toe om 404-fouten bij het vernieuwen van pagina's te voorkomen
try_files $uri /index.html;
}
## Om CORS-problemen te voorkomen, gebruik Nginx om myems-api naar pad /api te proxy'en
## 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 draait
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Installeer MyEMS Web UI:

Installeer NodeJS:

sudo dnf install nodejs
  • Pas het config.js-bestand aan:
Notitie

Haal de mapboxToken op via https://mapbox.com en stel showOnlineMap in op true. Wil je de online kaartfunctie uitschakelen, stel showOnlineMap dan 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: het volgende pad moet hetzelfde zijn als geconfigureerd in nginx.conf.

sudo mv build  /var/www/myems-web

Deblokkeer de poort en voeg deze toe aan de firewall:

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

Herstart de nginx-service:

sudo systemctl restart nginx.service
Tip

Als je een '500 Internal Server Error' nginx-fout tegenkomt, kun je dit oplossen door de SELinux-modus te wijzigen met het commando '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

administrator administrator@myems.io

Standaardwachtwoorden

Admin UI
administrator

!MyEMS1
Web UI
administrator@myems.io

!MyEMS1

Problemen oplossen