Ir al contenido principal

Anolis OS

En esta guía, desplegarás MyEMS en Anolis OS.

Requisitos previos

Esta guía describe cómo instalar MyEMS en Anolis OS 8. 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 4GB de RAM.

Actualiza el sistema e instala las herramientas

sudo dnf update
sudo yum install python39
sudo ln -sb /bin/python3.9 /bin/python3
sudo ln -sb /bin/pip3.9 /bin/pip3
sudo ln -sb /bin/python3.9 /bin/python
sudo ln -sb /bin/pip3.9 /bin/pip
sudo dnf install git

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 basado en example.env y edítalo si es necesario:

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

Verifica o cambia el puerto de escucha (el valor predeterminado es 8000) en myems-api.service y myems-api.socket:

sudo nano /myems-api/myems-api.service
ExecStart=/usr/local/bin/gunicorn -b 0.0.0.0:8000 --pid /run/myems-api/pid --timeout 600 --workers=4 app:api
sudo nano /myems-api/myems-api.socket
ListenStream=0.0.0.0:8000

Agrega el puerto al firewall:

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/

Luego habilita los servicios para que se inicien automáticamente al arrancar:

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

}

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

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

Escribe las directivas como se muestra a continuación y reemplaza la URL predeterminada de myems-api http://127.0.0.1:8000/ por la URL real si el servicio myems-api está alojado en otro servidor.

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## To avoid CORS issue, use Nginx to proxy myems-api to path /api
## Add another location /api in 'server'
## Replace the default myems-api url http://127.0.0.1:8000/ with actual url if the myems-api servcie hosted on different server
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 cámbialo si es necesario:

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

La carpeta 'upload' es para archivos subidos por el usuario. NO elimines, muevas ni sobrescribas la carpeta 'upload' cuando actualices myems-admin.

 /var/www/myems-admin/upload

Desbloquea el puerto y agrégalo 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

Reinicia el servicio nginx:

sudo systemctl restart nginx.service
Consejo

Si encuentras el error '403 Forbidden' de nginx, 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 exmaple.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:

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 exmaple.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:

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 exmaple.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:

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 exmaple.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:

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 http://nginx.org/en/linux_packages.html#RHEL

  • Configura NGINX

Elimina los archivos predeterminados

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 siguientes directivas:

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# add try_files directive to avoid 404 error while refreshing pages
try_files $uri /index.html;
}
## To avoid CORS issue, use Nginx to proxy myems-api to path /api
## Add another location /api in 'server'
## replace the default myems-api url http://127.0.0.1:8000/ with actual url if the myems-api servcie hosted on different server
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • Instala la interfaz web de MyEMS:

Configura NodeJS:

sudo dnf module list nodejs
sudo dnf module reset nodejs:16/common
sudo dnf module install nodejs:16/common
  • Modifica el archivo config.js:
Nota

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

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

Si 'node -v' devuelve 'v16.xx.xx', los parámetros '--openssl-legacy-provider' de los comandos start y build deben eliminarse de package.json

sudo nano package.json
  ...
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
...

Compila y comprime

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

Instala Sube los archivos a tu servidor web. Ten en cuenta que la siguiente ruta debe ser la misma que la configurada en nginx.conf.

sudo mv build  /var/www/myems-web

Desbloquea el puerto y agrégalo 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

Reinicia el servicio nginx:

sudo systemctl restart nginx.service
Consejo

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

Post-instalación

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

Puertos predeterminados

Interfaz web de MyEMS: 80

API de MyEMS: 8000

Interfaz de administración de MyEMS: 8001

Suponiendo que la dirección del servidor es 192.168.1.8 (reemplázala por la dirección real) Accede a la interfaz web de MyEMS en http://192.168.1.8 (el 80 se puede omitir) Accede a la interfaz de administración de MyEMS en 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@myems.io

Contraseña:

!MyEMS1

Troubleshooting