anolisos
sidebar_position: 8
Anolis OS
In questa guida, imparerai a distribuire MyEMS su Anolis OS.
Prerequisiti
Questa guida descrive come installare MyEMS su Anolis OS 8. 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 yum install python39
sudo ln -sb /bin/python3.9 /bin/python3
sudo ln -sb /bin/pip3.9 /bin/pip3
sudo ln -sb /bin/python3.9 /bin/python
sudo ln -sb /bin/pip3.9 /bin/pip
sudo dnf install git
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
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
Controlla o modifica la porta di ascolto (la predefinita è 8000) in myems-api.service e myems-api.socket:
sudo nano /myems-api/myems-api.service
ExecStart=/usr/local/bin/gunicorn -b 0.0.0.0:8000 --pid /run/myems-api/pid --timeout 600 --workers=4 app:api
sudo nano /myems-api/myems-api.socket
ListenStream=0.0.0.0:8000
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
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
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
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
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
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
Copia il file exmaple.env in .env e modifica il file .env:
sudo cp /myems-aggregation/example.env /myems-aggregation/.env
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 module list nodejs
sudo dnf module reset nodejs:16/common
sudo dnf module install nodejs:16/common
- 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
Se 'node -v' restituisce 'v16.xx.xx', i parametri '--openssl-legacy-provider' dei comandi start e build devono essere rimossi da package.json
sudo nano package.json
...
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
...
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
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
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