Vai al contenuto principale

fedora-coreos


Fedora CoreOS

In questa guida, imparerai a distribuire MyEMS su un server Fedora CoreOS.

Prerequisiti

Questa guida descrive come installare MyEMS su Fedora CoreOS 37. I requisiti hardware dipendono dal database scelto e dal numero di dispositivi connessi al sistema. Per eseguire MyEMS e MySQL su un singolo computer, avrai bisogno di almeno 4GB di RAM.

Aggiorna il sistema e installa gli strumenti necessari:

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

Clona il codice sorgente:

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

Passaggio 1 Database

Vedi Database

Passaggio 2 myems-api

  • Installa il servizio myems-api:
sudo cp -r ~/myems/myems-api /var/myems-api
cd /var/myems-api
sudo pip install -r requirements.txt

Crea il file .env basato su example.env e modificalo se necessario:

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

Aggiungi la porta al firewall:

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

Configura i file di sistema 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/

Abilita i servizi affinché si avvino automaticamente all'avvio del sistema:

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

Avvia i servizi:

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

Passaggio 3 myems-admin

  • Installa il server NGINX

Fai riferimento a http://nginx.org/en/linux_packages.html#RHEL

Abilita il servizio nginx:

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

Nella sezione 'http', aggiungi le seguenti direttive:

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

}

Aggiungi un nuovo file nella directory /etc/nginx/conf.d/:

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

Scrivi le direttive riportate di seguito, e sostituisci l'URL predefinito di myems-api http://127.0.0.1:8000/ con l'URL effettivo se il servizio myems-api è ospitato su un server diverso:

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Per evitare problemi di CORS, utilizza Nginx per proxy myems-api sul percorso /api
## Aggiungi un'altra location /api nella sezione 'server'
## Sostituisci l'URL predefinito di myems-api http://127.0.0.1:8000/ con l'URL effettivo se il servizio myems-api è ospitato su un server diverso
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Installa myems-admin: Se il server non può connettersi a internet, comprimi la cartella myems/myems-admin e caricalla sul server, quindi estraila in ~/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

Controlla il file di configurazione e modificalo se necessario:

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

La cartella 'upload' è destinata ai file caricati dagli utenti. NON eliminare/spostare/sovrascrivere la cartella 'upload' durante l'aggiornamento di myems-admin.

 /var/www/myems-admin/upload

Sblocca la porta e aggiungila al firewall:

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

Riavvia il servizio nginx:

sudo systemctl restart nginx.service
Suggerimento

Se riscontri l'errore nginx '403 Forbidden', puoi risolverlo cambiando la modalità SELinux con il comando 'sudo setenforce 0'

Passaggio 4 myems-modbus-tcp

In questo passaggio, installerai il servizio 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

Copia il file example.env in .env e modificalo:

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

Modifica il file main.py:

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

Configura il servizio systemd:

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

Abilita il servizio:

sudo systemctl enable myems-modbus-tcp.service

Avvia il servizio:

sudo systemctl start myems-modbus-tcp.service

Monitora il servizio:

sudo systemctl status myems-modbus-tcp.service

Visualizza il log:

cat /myems-modbus-tcp.log

Passaggio 5 myems-cleaning

In questo passaggio, installerai il servizio myems-cleaning.

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

Copia il file example.env in .env e modificalo:

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

Modifica il file main.py:

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

Configura il servizio systemd:

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

Abilita il servizio:

sudo systemctl enable myems-cleaning.service

Avvia il servizio:

sudo systemctl start myems-cleaning.service

Monitora il servizio:

sudo systemctl status myems-cleaning.service

Visualizza il log:

cat /myems-cleaning.log

Passaggio 6 myems-normalization

In questo passaggio, installerai il servizio myems-normalization.

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

Copia il file example.env in .env e modificalo:

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

Modifica il file main.py:

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

Configura il servizio systemd:

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

Abilita il servizio:

sudo systemctl enable myems-normalization.service

Avvia il servizio:

sudo systemctl start myems-normalization.service

Monitora il servizio:

sudo systemctl status myems-normalization.service

Visualizza il log:

cat /myems-normalization.log

Passaggio 7 myems-aggregation

In questo passaggio, installerai il servizio myems-aggregation.

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

Copia il file example.env in .env e modificalo:

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

Modifica il file main.py:

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

Configura il servizio systemd:

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

Abilita il servizio:

sudo systemctl enable myems-aggregation.service

Avvia il servizio:

sudo systemctl start myems-aggregation.service

Monitora il servizio:

sudo systemctl status myems-aggregation.service

Visualizza il log:

cat /myems-aggregation.log

Passaggio 8 myems-web

In questo passaggio, installerai il servizio UI myems-web.

  • Installa il server NGINX

Fai riferimento a http://nginx.org/en/linux_packages.html#RHEL

  • Configura NGINX

Rimuovi i file predefiniti:

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

Aggiungi un nuovo file nella directory /etc/nginx/conf.d/:

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

Aggiungi una nuova sezione 'server' con le direttive riportate di seguito:

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# aggiungi la direttiva try_files per evitare errori 404 durante l'aggiornamento delle pagine
try_files $uri /index.html;
}
## Per evitare problemi di CORS, utilizza Nginx per proxy myems-api sul percorso /api
## Aggiungi un'altra location /api nella sezione 'server'
## sostituisci l'URL predefinito di myems-api http://127.0.0.1:8000/ con l'URL effettivo se il servizio myems-api è ospitato su un server diverso
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Installa l'UI Web di MyEMS:

Configura NodeJS:

sudo dnf install nodejs

Modifica il file config.js:

Nota

Ottieni il mapboxToken su https://mapbox.com e imposta showOnlineMap su true. Se vuoi disabilitare la funzione di mappa online, imposta showOnlineMap su false

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

Compila e comprime:

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

Installa: Carica i file sul tuo server web. Nota che il percorso seguente deve essere lo stesso configurato in nginx.conf.

sudo mv build  /var/www/myems-web

Sblocca la porta e aggiungila al firewall:

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

Riavvia il servizio nginx:

sudo systemctl restart nginx.service
Suggerimento

Se riscontri l'errore nginx '500 Internal Server Error', puoi risolverlo cambiando la modalità SELinux con il comando 'sudo setenforce 0'

Dopo l'installazione

Complimenti! Ora puoi accedere all'UI Amministrativa e all'UI Web di MyEMS.

Porte predefinite

UI Web di MyEMS: 80

API di MyEMS: 8000

UI Amministrativa di MyEMS: 8001

Assumendo che l'indirizzo del server sia 192.168.1.8 (sostituisci con l'indirizzo effettivo del server) Accedi all'UI Web di MyEMS all'indirizzo http://192.168.1.8 (la porta 80 può essere omessa) Accedi all'UI Amministrativa di MyEMS all'indirizzo http://192.168.1.8:8001

Password predefinite

UI Amministrativa di MyEMS

Nome utente:

administrator

Password:

!MyEMS1

UI Web di MyEMS

Nome utente:

administrator@myems.io

Password:

!MyEMS1

Risoluzione dei problemi