fedora-coreos
sidebar_position: 12
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
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
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:
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
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