Vai al contenuto principale

centos-rhel


CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux

In questa guida, imparerai a distribuire MyEMS su un server CentOS o RHEL.

Prerequisiti

Questa guida descrive come installare MyEMS su CentOS Stream 9 / Red Hat Enterprise Linux 9 (RHEL 9) / Rocky 9 / AlmaLinux 9.1 / Oracle Linux 9.1. I requisiti hardware dipendono dal database scelto e dal numero di dispositivi connessi al sistema. Per eseguire MyEMS e MySQL su un singolo computer, sono necessari almeno 4GB di RAM.

Aggiorna il sistema e installa gli strumenti

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

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 /myems-api
cd /myems-api
sudo pip install -r requirements.txt
Nota

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) Se il codice non funziona, puoi usare il seguente comando: sudo pip install -r requirements.txt --break-system-packages

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

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

Aggiungi la porta al firewall:

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

Configura i file di configurazione systemd:

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/

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 alcune 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 seguenti, 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 CORS, usa Nginx per proxy myems-api al percorso /api
## Aggiungi un'altra location /api in '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 caricala 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 semanage port -a -t http_port_t  -p tcp 8001
sudo firewall-cmd --zone=public --add-port=8001/tcp --permanent
sudo firewall-cmd --reload

Riavvia il servizio nginx:

sudo systemctl restart nginx.service
Suggerimento

Se incontri l'errore nginx '403 Forbidden', puoi risolverlo modificando 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 /myems-modbus-tcp
cd /myems-modbus-tcp
sudo pip install -r requirements.txt
Nota

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) Se il codice non funziona, puoi usare il seguente comando: sudo pip install -r requirements.txt --break-system-packages

Copia il file exmaple.env in .env e modifica il file .env:

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

Configura il servizio systemd:

sudo cp myems-modbus-tcp.service /lib/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 /myems-cleaning
cd /myems-cleaning
sudo pip install -r requirements.txt
Nota

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) Se il codice non funziona, puoi usare il seguente comando: sudo pip install -r requirements.txt --break-system-packages

Copia il file exmaple.env in .env e modifica il file .env:

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

Configura il servizio systemd:

sudo cp /myems-cleaning/myems-cleaning.service /lib/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 /myems-normalization
cd /myems-normalization
sudo pip install -r requirements.txt
Nota

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) Se il codice non funziona, puoi usare il seguente comando: sudo pip install -r requirements.txt --break-system-packages

Copia il file exmaple.env in .env e modifica il file .env:

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

Configura il servizio systemd:

sudo cp /myems-normalization/myems-normalization.service /lib/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 /myems-aggregation
cd /myems-aggregation
sudo pip install -r requirements.txt
Nota

(CentOS Stream 9/RHEL 9/Rocky 9/AlmaLinux 9.1/Oracle Linux 9.1) Se il codice non funziona, puoi usare il seguente comando: sudo pip install -r requirements.txt --break-system-packages

Copia il file exmaple.env in .env e modifica il file .env:

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

Configura il servizio systemd:

sudo cp /myems-aggregation/myems-aggregation.service /lib/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 di 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 seguenti:

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 l'errore 404 durante l'aggiornamento delle pagine
try_files $uri /index.html;
}
## Per evitare problemi CORS, usa Nginx per proxy myems-api al percorso /api
## Aggiungi un'altra location /api in '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 comprimi

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 semanage port -a -t http_port_t  -p tcp 80
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

Riavvia il servizio nginx:

sudo systemctl restart nginx.service
Suggerimento

Se incontri l'errore nginx '500 Internal Server Error', puoi risolverlo modificando 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

Password predefinite

UI Amministrativa
administrator

!MyEMS1
UI Web
administrator@myems.io

!MyEMS1

Risoluzione dei problemi