Ir al contenido principal

Kylin OS

En esta guía, desplegará MyEMS en un servidor Kylin V11.

Requisitos previos

Esta guía describe cómo instalar MyEMS en Kylin V11. Los requisitos de hardware dependen de la base de datos elegida y del número de dispositivos conectados al sistema. Para ejecutar MyEMS y MySQL en una sola máquina, necesita al menos 8 GB de RAM.

Actualice el sistema e instale las herramientas:

sudo yum update
sudo yum install git
systemctl stop firewalld

Clone el código fuente:

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

Paso 1 Base de datos

Ver Base de datos

Paso 2 myems-api

  • Instale el servicio myems-api:
sudo cp -r ~/myems/myems-api /myems-api
cd /myems-api
sudo pip install -r requirements.txt

Cree el archivo .env a partir de example.env y edítelo según sea necesario:

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

Agregue el puerto al firewall:

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

Instale los archivos de configuración de 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/

A continuación, habilite los servicios para que se inicien automáticamente al arrancar:

sudo systemctl enable myems-api.socket
sudo systemctl enable myems-api.service

Inicie los servicios:

sudo systemctl start myems-api.socket
sudo systemctl start myems-api.service

Paso 3 myems-admin

  • Instale el servidor NGINX

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

Habilite el servicio nginx:

yum install -y nginx
sudo systemctl start nginx.service
  • Configure NGINX
sudo vi /etc/nginx/nginx.conf

En la sección 'http', agregue algunas directivas:

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;
...

}

Cree un nuevo archivo en /etc/nginx/conf.d/:

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

Escriba las siguientes directivas. Si el servicio myems-api se ejecuta en otro servidor, reemplace la dirección predeterminada http://127.0.0.1:8000/ por la dirección real.

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Para evitar problemas de CORS, use Nginx para redirigir myems-api a la ruta /api
## Agregue otra ubicación /api en 'server'
## Reemplace la URL predeterminada de myems-api http://127.0.0.1:8000/ por la URL real si el servicio myems-api está alojado en un servidor distinto
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Instale myems-admin: Si el servidor no puede conectarse a internet, comprima la carpeta myems/myems-admin, subala al servidor y extráigala en ~/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

Compruebe el archivo de configuración y realice cambios si es necesario:

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

Advertencia

La carpeta 'upload' es para archivos cargados por el usuario. No elimine, mueva ni sobrescriba la carpeta 'upload' al actualizar myems-admin.

 /var/www/myems-admin/upload

Agregue el puerto 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

Reinicie el servicio nginx:

sudo systemctl restart nginx.service

Consejo

Si encuentra un error nginx '403 Prohibido', puede solucionarlo cambiando el modo SELinux con el comando 'sudo setforce 0'.

Paso 4 myems-modbus-tcp

En este paso, instalará el servicio myems-modbus-tcp.

sudo cp -r ~/myems/myems-modbus-tcp /myems-modbus-tcp
cd /myems-modbus-tcp
sudo pip install -r requirements.txt

Copie el archivo example.env a .env y modifique el archivo .env:

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

Instale el servicio systemd:

sudo cp myems-modbus-tcp.service /lib/systemd/system/

Habilite el servicio:

sudo systemctl enable myems-modbus-tcp.service

Inicie el servicio:

sudo systemctl start myems-modbus-tcp.service

Supervise el servicio:

sudo systemctl status myems-modbus-tcp.service

Vea el registro:

cat /myems-modbus-tcp.log

Paso 5 myems-cleaning

En este paso, instalará el servicio myems-cleaning.

sudo cp -r ~/myems/myems-cleaning /myems-cleaning
cd /myems-cleaning
sudo pip install -r requirements.txt

Copie el archivo example.env a .env y modifique el archivo .env:

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

Instale el servicio systemd:

sudo cp /myems-cleaning/myems-cleaning.service /lib/systemd/system/

Habilite el servicio:

sudo systemctl enable myems-cleaning.service

Inicie el servicio:

sudo systemctl start myems-cleaning.service

Supervise el servicio:

sudo systemctl status myems-cleaning.service

Vea el registro:

cat /myems-cleaning.log

Paso 6 myems-normalization

En este paso, instalará el servicio myems-normalization.

sudo cp -r ~/myems/myems-normalization /myems-normalization
cd /myems-normalization
sudo pip install -r requirements.txt

Copie el archivo example.env a .env y modifique el archivo .env:

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

Instale el servicio systemd

sudo cp /myems-normalization/myems-normalization.service /lib/systemd/system/

Habilite el servicio:

sudo systemctl enable myems-normalization.service

Inicie el servicio:

sudo systemctl start myems-normalization.service

Supervise el servicio:

sudo systemctl status myems-normalization.service

Vea el registro:

cat /myems-normalization.log

Paso 7 myems-aggregation

En este paso, instalará el servicio myems-aggregation.

sudo cp -r ~/myems/myems-aggregation /myems-aggregation
cd /myems-aggregation
sudo pip install -r requirements.txt

Copie el archivo example.env a .env y modifique el archivo .env:

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

Instale el servicio systemd

sudo cp /myems-aggregation/myems-aggregation.service /lib/systemd/system/

Habilite el servicio:

sudo systemctl enable myems-aggregation.service

Inicie el servicio:

sudo systemctl start myems-aggregation.service

Supervise el servicio:

sudo systemctl status myems-aggregation.service

Vea el registro:

cat /myems-aggregation.log

Paso 8 myems-web

En este paso, instalará el servicio myems-web.

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

Agregue un nuevo archivo en /etc/nginx/conf.d/:

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

Escriba las siguientes directivas. Si el servicio myems-api está alojado en un servidor distinto, reemplace la dirección predeterminada http://127.0.0.1:8000/ por la dirección real.

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# agregue la directiva try_files para evitar error 404 al actualizar páginas
try_files $uri /index.html;
}
## Para evitar problemas de CORS, use Nginx para redirigir myems-api a la ruta /api
## Agregue otra ubicación /api en 'server'
## reemplace la URL predeterminada de myems-api http://127.0.0.1:8000/ por la URL real si el servicio myems-api está alojado en un servidor distinto
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Instale la interfaz web de MyEMS:

Edite el archivo de configuración:

Nota

Obtenga un mapboxToken en https://mapbox.com y luego establezca showOnlineMap en true. Si desea desactivar la función de mapa en línea, establezca showOnlineMap en false.

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

Compilar:

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

Instalar: Tenga en cuenta que la ruta siguiente debe coincidir con la configurada en nginx.conf.

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

Agregue el puerto 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

Reinicie NGINX

sudo systemctl restart nginx

Consejo

Si encuentra un error nginx '500 Error interno del servidor', puede solucionarlo cambiando el modo SELinux con el comando 'sudo setforce 0'.

Después de la instalación

¡Felicidades! Ahora puede iniciar sesión en la interfaz de administración y la interfaz web de MyEMS.

Puertos predeterminados

Interfaz web de MyEMS: 80 API de MyEMS: 8000 Interfaz de administración de MyEMS: 8001

Suponga que la dirección del servidor es 192.168.1.8 (reemplácela por la dirección real de su servidor) Dirección de la interfaz web de MyEMS: http://192.168.1.8 (el puerto 80 se puede omitir) Dirección de la interfaz de administración de MyEMS: http://192.168.1.8:8001

Contraseñas predeterminadas

Interfaz de administración de MyEMS Nombre de usuario:

administrator

Contraseña:

!MyEMS1

Interfaz web de MyEMS Nombre de usuario:

administrator

Contraseña:

!MyEMS1

Solución de problemas

Instalación de MySQL 8.0

1. Preparación

Compruebe el entorno del sistema

# Comprobar versión del sistema
cat /etc/redhat-release

# Comprobar si MySQL ya está instalado
rpm -qa | grep mysql
rpm -qa | grep mariadb

# Desinstalar mariadb si existe
rpm -e --nodeps mariadb-libs-*

2. Descargar el paquete rpm oficial de MySQL

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

3. Instalar MySQL 8.0

tar -xvf *.tar
yum localinstall *.rpm

# Si tiene problemas con la clave GPG, use esto temporalmente
yum install -y mysql-community-server --nogpgcheck

4. Iniciar el servicio MySQL

# Iniciar MySQL
systemctl start mysqld

# Habilitar inicio automático al arrancar
systemctl enable mysqld

# Comprobar estado del servicio
systemctl status mysqld

5. Obtener la contraseña inicial

# Ver la contraseña temporal generada por MySQL
grep 'temporary password' /var/log/mysqld.log

6. Configuración segura

# Ejecutar el script de instalación segura
mysql_secure_installation

Siga las indicaciones:

  1. Ingrese la contraseña temporal
  2. Establezca una nueva contraseña (debe incluir mayúsculas, minúsculas, números y caracteres especiales)
  3. ¿Cambiar la contraseña de root? Y
  4. ¿Eliminar usuarios anónimos? Y
  5. ¿Prohibir el inicio de sesión remoto de root? Elija según necesidad
  6. ¿Eliminar la base de datos de prueba? Y
  7. ¿Recargar tablas de privilegios? Y

7. Iniciar sesión y verificar MySQL

# Iniciar sesión en MySQL
mysql -u root -p

# Comprobar versión
SELECT VERSION();

# Listar bases de datos
SHOW DATABASES;

8. Configurar juego de caracteres (opcional)

Edite el archivo de configuración:

vi /etc/my.cnf

Agregue lo siguiente:

[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'


# Reducir la política de contraseñas si es necesario
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

Reinicie el servicio:

systemctl restart mysqld

9. Configuración del firewall

# Abrir puerto 3306
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# O detener el firewall (no recomendado)
# systemctl stop firewalld

10. Configuración de acceso remoto (opcional)

-- Iniciar sesión en MySQL
mysql -u root -p

-- Crear usuario de acceso remoto
CREATE USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Actualizar contraseña
ALTER USER 'root'@'%' IDENTIFIED BY '!MyEMS1';
-- Otorgar privilegios
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- Aplicar cambios
FLUSH PRIVILEGES;

Problemas comunes

1. Error de memoria insuficiente

Si el servidor tiene poca memoria, limite el uso de memoria de MySQL:

vi /etc/my.cnf
# Agregue estas configuraciones
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 16M
max_connections = 100

2. Solución de fallos de inicio

# Ver registro de errores
tail -f /var/log/mysqld.log

# Comprobar uso de puertos
netstat -tlnp | grep 3306

3. Modificación de la política de contraseñas

-- Ver política de contraseñas actual
SHOW VARIABLES LIKE 'validate_password%';

-- Reducir política (si se necesita una contraseña sencilla)
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 6;

Verificar instalación

# Comprobar proceso de MySQL
ps aux | grep mysql

# Comprobar puerto
netstat -tlnp | grep 3306

# Comprobar versión de MySQL
mysql --version