Fedora CoreOS
En esta guía, desplegarás MyEMS en un servidor Fedora CoreOS.
Requisitos previos
Esta guía describe cómo instalar MyEMS en Fedora CoreOS 37. 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:
rpm-ostree install git
rpm-ostree install python3
rpm-ostree install python3-pip
rpm-ostree install nginx
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 /var/myems-api
cd /var/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 /var/myems-api/example.env /var/myems-api/.env
sudo nano /var/myems-api/.env
Agrega el puerto al cortafuegos:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=8000/tcp --permanent
sudo firewall-cmd --reload
Configura los archivos de systemd:
sudo cp /var/myems-api/myems-api.service /etc/systemd/system/
sudo cp /var/myems-api/myems-api.socket /etc/systemd/system/
sudo cp /var/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
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 --add-port=8001/tcp --permanent
sudo firewall-cmd --reload
Reinicia el servicio nginx:
sudo systemctl restart nginx.service
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 /var/myems-modbus-tcp
cd /var/myems-modbus-tcp
sudo pip install -r requirements.txt
Copia el archivo example.env a .env y modifícalo:
sudo cp /var/myems-modbus-tcp/example.env /var/myems-modbus-tcp/.env
sudo nano /var/myems-modbus-tcp/.env
Modifica el archivo main.py:
fh = RotatingFileHandler('/var/myems-modbus-tcp.log', maxBytes=1024*1024, backupCount=1)
Configura el servicio systemd:
sudo cp myems-modbus-tcp.service /etc/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 /var/myems-cleaning
cd /var/myems-cleaning
sudo pip install -r requirements.txt
Copia el archivo example.env a .env y modifícalo:
sudo cp /var/myems-cleaning/example.env /var/myems-cleaning/.env
sudo nano /var/myems-cleaning/.env
Modifica el archivo main.py:
fh = RotatingFileHandler('/var/myems-cleaning.log', maxBytes=1024*1024, backupCount=1)
Configura el servicio systemd:
sudo cp /var/myems-cleaning/myems-cleaning.service /etc/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 /var/myems-normalization
cd /var/myems-normalization
sudo pip install -r requirements.txt
Copia el archivo example.env a .env y modifícalo:
sudo cp /var/myems-normalization/example.env /var/myems-normalization/.env
sudo nano /var/myems-normalization/.env
Modifica el archivo main.py:
fh = RotatingFileHandler('/var/myems-normalization.log', maxBytes=1024*1024, backupCount=1)
Configura el servicio systemd:
sudo cp /var/myems-normalization/myems-normalization.service /etc/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 /var/myems-aggregation
cd /var/myems-aggregation
sudo pip install -r requirements.txt
Copia el archivo example.env a .env y modifícalo:
sudo cp /var/myems-aggregation/example.env /var/myems-aggregation/.env
nano /var/myems-aggregation/.env
Modifica el archivo main.py:
fh = RotatingFileHandler('/var/myems-aggregation.log', maxBytes=1024*1024, backupCount=1)
Configura el servicio systemd:
sudo cp /var/myems-aggregation/myems-aggregation.service /etc/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:
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
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