Ir al contenido principal

Fedora

En esta guía, desplegarás MyEMS en un servidor Fedora.

Requisitos previos

Esta guía describe cómo instalar MyEMS en Fedora 37 Server. Los requisitos de hardware dependen de la base de datos elegida y la cantidad de dispositivos conectados al sistema. Para ejecutar MyEMS y MySQL en una sola máquina, necesitarás al menos 4 GB de RAM.

Actualiza el sistema e instala las herramientas:

sudo dnf update
sudo dnf install git
sudo dnf install python3-pip

Clona el código fuente:

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

Paso 1: Base de datos

Consulta Base de datos

Paso 2: myems-api

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

Crea el archivo .env basándote en example.env y edítalo si es necesario:

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

Agrega el puerto al cortafuegos:

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

Configura los archivos 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, habilita los servicios para que se inicien automáticamente al arrancar el sistema:

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

Inicia los servicios:

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

Paso 3: myems-admin

  • Instala el servidor NGINX

Consulta la guía oficial en http://nginx.org/en/linux_packages.html#RHEL

Habilita el servicio nginx:

sudo systemctl start nginx.service
  • Configura NGINX
sudo nano /etc/nginx/nginx.conf

En la sección 'http', agrega las siguientes 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;
...

}

Agrega un nuevo archivo en /etc/nginx/conf.d/

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

Escribe las directivas que se muestran a continuación, y reemplaza la URL por defecto de myems-api http://127.0.0.1:8000/ por la URL real si el servicio myems-api se hospeda en un servidor diferente:

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Para evitar problemas de CORS, usa Nginx para proxyear myems-api en la ruta /api
## Agrega otra ubicación /api en el bloque 'server'
## Reemplaza la URL por defecto de myems-api http://127.0.0.1:8000/ por la URL real si el servicio myems-api se hospeda en un servidor diferente
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Instala myems-admin: Si el servidor no puede conectarse a Internet, comprime la carpeta myems/myems-admin, súbela al servidor y extráela 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

Verifica el archivo de configuración y modifícalo si es necesario:

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

La carpeta 'upload' se utiliza para los archivos subidos por los usuarios. NO ELIMINES, MUEVAS NI SOBREESCRIBS la carpeta 'upload' cuando actualices myems-admin.

 /var/www/myems-admin/upload

Desbloquea el puerto y agrégalo al cortafuegos:

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --zone=public --add-port=8001/tcp --permanent
sudo firewall-cmd --reload

Reinicia el servicio nginx:

sudo systemctl restart nginx.service
Consejo

Si encuentras el error de nginx '403 Forbidden', puedes solucionarlo cambiando el modo de SELinux con el comando sudo setenforce 0

Paso 4: myems-modbus-tcp

En este paso, instalarás 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

Copia el archivo example.env a .env y modifícalo:

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

Configura el servicio systemd:

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

Habilita el servicio:

sudo systemctl enable myems-modbus-tcp.service

Inicia el servicio:

sudo systemctl start myems-modbus-tcp.service

Monitorea el servicio:

sudo systemctl status myems-modbus-tcp.service

Visualiza el registro de eventos (log):

cat /myems-modbus-tcp.log

Paso 5: myems-cleaning

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

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

Copia el archivo example.env a .env y modifícalo:

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

Configura el servicio systemd:

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

Habilita el servicio:

sudo systemctl enable myems-cleaning.service

Inicia el servicio:

sudo systemctl start myems-cleaning.service

Monitorea el servicio:

sudo systemctl status myems-cleaning.service

Visualiza el registro de eventos (log):

cat /myems-cleaning.log

Paso 6: myems-normalization

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

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

Copia el archivo example.env a .env y modifícalo:

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

Configura el servicio systemd:

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

Habilita el servicio:

sudo systemctl enable myems-normalization.service

Inicia el servicio:

sudo systemctl start myems-normalization.service

Monitorea el servicio:

sudo systemctl status myems-normalization.service

Visualiza el registro de eventos (log):

cat /myems-normalization.log

Paso 7: myems-aggregation

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

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

Copia el archivo example.env a .env y modifícalo:

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

Configura el servicio systemd:

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

Habilita el servicio:

sudo systemctl enable myems-aggregation.service

Inicia el servicio:

sudo systemctl start myems-aggregation.service

Monitorea el servicio:

sudo systemctl status myems-aggregation.service

Visualiza el registro de eventos (log):

cat /myems-aggregation.log

Paso 8: myems-web

En este paso, instalarás el servicio de interfaz de usuario myems-web.

  • Instala el servidor NGINX

Consulta la guía oficial en http://nginx.org/en/linux_packages.html#RHEL

  • Configura NGINX

Elimina los archivos por defecto:

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

Agrega un nuevo archivo en /etc/nginx/conf.d/

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

Agrega una nueva sección 'server' con las directivas que se muestran a continuación:

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# agrega la directiva try_files para evitar el error 404 al actualizar las páginas
try_files $uri /index.html;
}
## Para evitar problemas de CORS, usa Nginx para proxyear myems-api en la ruta /api
## Agrega otra ubicación /api en el bloque 'server'
## Reemplaza la URL por defecto de myems-api http://127.0.0.1:8000/ por la URL real si el servicio myems-api se hospeda en un servidor diferente
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Instala la interfaz de usuario MyEMS Web:

Configura NodeJS:

sudo dnf install nodejs

Modifica el archivo config.js:

Nota

Obtén un mapboxToken en https://mapbox.com y luego establece showOnlineMap en true. Si quieres desactivar la función de mapa en línea, establece showOnlineMap en false.

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

Compila y comprime el proyecto:

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

Instala los archivos: Sube los archivos a tu servidor web. Ten en cuenta que la siguiente ruta debe coincidir con la que configuraste en nginx.conf.

sudo mv build  /var/www/myems-web

Desbloquea el puerto y agrégalo al cortafuegos:

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload

Reinicia el servicio nginx:

sudo systemctl restart nginx.service
Consejo

Si encuentras el error de nginx '500 Internal Server Error', puedes solucionarlo cambiando el modo de SELinux con el comando sudo setenforce 0

Después de la instalación

¡Felicidades! Ahora puedes iniciar sesión en la interfaz de administración MyEMS Admin UI y la interfaz web MyEMS Web UI.

Puertos por defecto

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

Suponiendo que la dirección del servidor es 192.168.1.8 (reemplázala por la dirección real del servidor): Accede a MyEMS Web UI en http://192.168.1.8 (el puerto 80 se puede omitir) Accede a MyEMS Admin UI en http://192.168.1.8:8001

Contraseñas por defecto

MyEMS Admin UI

Nombre de usuario:

administrator

Contraseña:

!MyEMS1

MyEMS Web UI

Nombre de usuario:

administrator@myems.io

Contraseña:

!MyEMS1

Solución de problemas