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.
- Installa il server NGINX. Vedi http://nginx.org/en/linux_packages.html#Debian
- Configura NGINX. Rimuovi il file predefinito:
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:
- Inserisci la password temporanea
- Imposta una nuova password (deve includere lettere maiuscole, minuscole, numeri e caratteri speciali)
- Cambiare la password di root? Y
- Rimuovere utenti anonimi? Y
- Non consentire l'accesso root da remoto? Scegli in base alle esigenze
- Rimuovere il database di test? Y
- 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