Vai al contenuto principale

Kylin OS

In questa guida, installerai MyEMS su un server Kylin V11.

Prerequisiti

Questa guida descrive come installare MyEMS su Kylin V11. I requisiti hardware dipendono dal database scelto e dal numero di dispositivi collegati al sistema. Per eseguire MyEMS e MySQL su una singola macchina, sono necessari almeno 8 GB di RAM.

Aggiorna il sistema e installa gli strumenti:

sudo yum update
sudo yum install git
systemctl stop firewalld

Clona il codice sorgente:

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

Passo 1 Database

Vedi Database

Passo 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

Aggiungi la porta al firewall:

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

Installa 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/

Successivamente, abilita i servizi in modo che si avviino automaticamente all'avvio:

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

Passo 3 myems-admin

  • Installa il server NGINX

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

Abilita il servizio nginx:

yum install -y nginx
sudo systemctl start nginx.service
  • Configura NGINX
sudo vi /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;
...

}

Crea un nuovo file in /etc/nginx/conf.d/:

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

Scrivi le seguenti direttive. Se il servizio myems-api viene eseguito su un altro server, sostituisci l'indirizzo predefinito di myems-api http://127.0.0.1:8000/ con l'indirizzo effettivo.

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Per evitare problemi CORS, utilizza Nginx come proxy per 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, 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 apporta modifiche se necessario:

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

Avvertenza La cartella 'upload' è per i file caricati dagli utenti. Non eliminare/spostare/sovrascrivere la cartella 'upload' durante l'aggiornamento di myems-admin.

 /var/www/myems-admin/upload

Aggiungi la porta 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 un errore nginx '403 Forbidden', puoi risolverlo cambiando la modalità SELinux usando il comando 'sudo setforce 0'.

Passo 4 myems-modbus-tcp

In questo passo, 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 example.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

Installa 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

Passo 5 myems-cleaning

In questo passo, 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 example.env in .env e modifica il file .env:

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

Installa 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

Passo 6 myems-normalization

In questo passo, 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 example.env in .env e modifica il file .env:

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

Installa 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

Passo 7 myems-aggregation

In questo passo, 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 example.env in .env e modifica il file .env:

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

Installa 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

Passo 8 myems-web

In questo passo, installerai il servizio myems-web.

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

Aggiungi un nuovo file in /etc/nginx/conf.d/:

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

Scrivi le seguenti direttive. Se il servizio myems-api è ospitato su un server diverso, sostituisci l'indirizzo predefinito di myems-api http://127.0.0.1:8000/ con l'indirizzo effettivo.

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 CORS, utilizza Nginx come proxy per 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'interfaccia web MyEMS:

Modifica il file di configurazione:

Nota Ottieni un mapboxToken da https://mapbox.com quindi imposta showOnlineMap su true. Se vuoi disattivare la funzione mappa online, imposta showOnlineMap su false.

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

Costruisci:

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

Installa: Nota che il percorso qui sotto deve corrispondere al percorso configurato in nginx.conf.

sudo rm -r /var/www/myems-web
sudo mv build  /var/www/myems-web

Aggiungi la porta 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 NGINX:

sudo systemctl restart nginx

Suggerimento Se incontri un errore nginx '500 Internal Server Error', puoi risolverlo cambiando la modalità SELinux usando il comando 'sudo setforce 0'.

Dopo l'installazione

Congratulazioni! Ora puoi accedere all'interfaccia di amministrazione MyEMS e all'interfaccia web.

Porte predefinite

Interfaccia web MyEMS: 80 API MyEMS: 8000 Interfaccia di amministrazione MyEMS: 8001

Supponendo che l'indirizzo del server sia 192.168.1.8 (sostituisci con il tuo indirizzo server reale) Indirizzo interfaccia web MyEMS: http://192.168.1.8 (la porta 80 può essere omessa) Indirizzo interfaccia di amministrazione MyEMS: http://192.168.1.8:8001

Password predefinite

Interfaccia di amministrazione MyEMS Nome utente:

administrator

Password:

!MyEMS1

Interfaccia web MyEMS Nome utente:

administrator

Password:

!MyEMS1

Risoluzione dei problemi

Installazione di MySQL 8.0

1. Preparazione

Controlla l'ambiente di sistema

# Controlla la versione del sistema
cat /etc/redhat-release

# Controlla se MySQL è già installato
rpm -qa | grep mysql
rpm -qa | grep mariadb

# Disinstalla mariadb se esiste
rpm -e --nodeps mariadb-libs-*

2. Scarica il bundle rpm ufficiale di MySQL

https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.45-1.el8.x86_64.rpm-bundle.tar

3. Installa MySQL 8.0

tar -xvf *.tar
yum localinstall *.rpm

# Se incontri problemi con la chiave GPG, usa questo temporaneamente
yum install -y mysql-community-server --nogpgcheck

4. Avvia il servizio MySQL

# Avvia MySQL
systemctl start mysqld

# Abilita l'avvio automatico all'avvio
systemctl enable mysqld

# Controlla lo stato del servizio
systemctl status mysqld

5. Ottieni la password iniziale

# Controlla la password temporanea generata da MySQL
grep 'temporary password' /var/log/mysqld.log

6. Configurazione di sicurezza

# Esegui lo script di installazione sicura
mysql_secure_installation

Segui le istruzioni:

  1. Inserisci la password temporanea
  2. Imposta una nuova password (deve includere lettere maiuscole, minuscole, numeri e caratteri speciali)
  3. Cambiare la password di root? Y
  4. Rimuovere utenti anonimi? Y
  5. Non consentire l'accesso root da remoto? Scegli in base alle esigenze
  6. Rimuovere il database di test? Y
  7. Ricaricare le tabelle dei privilegi? Y

7. Accedi e verifica MySQL

# Accedi a MySQL
mysql -u root -p

# Controlla la versione
SELECT VERSION();

# Elenca i database
SHOW DATABASES;

8. Configura il set di caratteri (opzionale)

Modifica il file di configurazione:

vi /etc/my.cnf

Aggiungi quanto segue:

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'

# Abbassa la politica delle password se necessario
validate_password.policy = LOW
validate_password.length = 6
validate_password.mixed_case_count = 0
validate_password.number_count = 0
validate_password.special_char_count = 0

Riavvia il servizio:

systemctl restart mysqld

9. Impostazioni del firewall

# Apri la porta 3306
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# Oppure ferma il firewall (non consigliato)
# systemctl stop firewalld

10. Configurazione dell'accesso remoto (opzionale)

-- Accedi a MySQL
mysql -u root -p

-- Crea un utente per l'accesso remoto
CREATE USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Aggiorna la password
ALTER USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Concedi i privilegi
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- Applica le modifiche
FLUSH PRIVILEGES;

Problemi comuni

1. Errore di memoria insufficiente

Se il server ha poca memoria, limita l'utilizzo della memoria di MySQL:

vi /etc/my.cnf
# Aggiungi queste impostazioni
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 16M
max_connections = 100

2. Risoluzione dei problemi di avvio

# Visualizza il log degli errori
tail -f /var/log/mysqld.log

# Controlla l'utilizzo della porta
netstat -tlnp | grep 3306

3. Modifica della politica delle password

-- Visualizza la politica attuale delle password
SHOW VARIABLES LIKE 'validate_password%';

-- Abbassa la politica (se è necessaria una password semplice)
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 6;

Verifica dell'installazione

# Controlla il processo MySQL
ps aux | grep mysql

# Controlla la porta
netstat -tlnp | grep 3306

# Controlla la versione di MySQL
mysql --version