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.
- Instale el servidor NGINX. Ver http://nginx.org/en/linux_packages.html#Debian
- Configure NGINX. Elimine el archivo predeterminado
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:
- Ingrese la contraseña temporal
- Establezca una nueva contraseña (debe incluir mayúsculas, minúsculas, números y caracteres especiales)
- ¿Cambiar la contraseña de root? Y
- ¿Eliminar usuarios anónimos? Y
- ¿Prohibir el inicio de sesión remoto de root? Elija según necesidad
- ¿Eliminar la base de datos de prueba? Y
- ¿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