FreeBSD
En esta guía, desplegará MyEMS en un servidor FreeBSD.
Requisitos previos
Esta guía describe cómo instalar MyEMS en FreeBSD 13.2. Los requisitos de hardware dependen de la base de datos elegida y de la cantidad de dispositivos conectados al sistema. Para ejecutar MyEMS y MySQL en una sola máquina, necesitará al menos 4GB de RAM.
Actualice el sistema e instale las herramientas
pkg install git
pkg install python3
pkg install py39-pip-22.3.1
pkg install nginx
pkg install monit
Clonar el código fuente:
cd ~
git clone https://github.com/myems/myems
Step 1 Database
Consulte Base de datos
Step 2 myems-api
- Instale el servicio myems-api:
cp -r ~/myems/myems-api /myems-api
cd /myems-api
pip install -r requirements.txt
Si encuentra el error 'Failed building wheel for pillow', debe consultar Instalación de Pillow
Cree el archivo .env basado en example.env y edite el archivo .env si es necesario:
cp /myems-api/example.env /myems-api/.env
nano /myems-api/.env
Utilice el servicio de monitoreo monit y edite el archivo de configuración de monit:
nano /etc/monit.d/myems-api
check process mymes-api with pidfile /var/run/myems-api/pid
start program = "/usr/local/bin/gunicorn -b 0.0.0.0:8000 --pid /var/run/myems-api/pid --timeout 600 --workers=4 app:api &"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor
Inicie los servicios:
monit restart
Step 3 myems-admin
- Instale el servidor NGINX
Consulte http://nginx.org/en/docs/install.html
Habilite el servicio nginx:
service nginx enable
- Configure NGINX
nano /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;
...
}
Agregue un nuevo archivo en /etc/nginx/conf.d/
nano /etc/nginx/conf.d/myems-admin.conf
Escriba con las siguientes directivas y 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 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;
}
}
- Install myems-admin : If the server can not connect to the internet, please compress the myems/myems-admin folder and upload it to the server and extract it to ~/myems/myems-admin
mkdir /var/www
cp -r ~/myems/myems-admin /var/www/myems-admin
chmod 0755 /var/www/myems-admin
Verifique el archivo de configuración y cámbielo si es necesario:
nano /var/www/myems-admin/app/api.js
La carpeta 'upload' es para archivos subidos por el usuario. NO elimine/mueva/sobrescriba la carpeta 'upload' cuando actualice myems-admin.
/var/www/myems-admin/upload
Reinicie el servicio nginx:
service nginx restart
Step 4 myems-modbus-tcp
En este paso, instalará el servicio myems-modbus-tcp.
cp -r ~/myems/myems-modbus-tcp /myems-modbus-tcp
cd /myems-modbus-tcp
pip install -r requirements.txt
Cree el archivo .env basado en example.env y edite el archivo .env si es necesario:
cp /myems-modbus-tcp/example.env /myems-modbus-tcp/.env
nano /myems-modbus-tcp/.env
Utilice el servicio de monitoreo monit y edite el archivo de configuración de monit:
nano /etc/monit.d/myems-modbus-tcp
check file myems-modbus-tcp path /myems-modbus-tcp/main.py
start program = "/usr/local/bin/python3 /myems-modbus-tcp/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor
Inicie el servicio:
monit restart
Step 5 myems-cleaning
En este paso, instalará el servicio myems-cleaning.
cp -r ~/myems/myems-cleaning /myems-cleaning
cd /myems-cleaning
pip install -r requirements.txt
Cree el archivo .env basado en example.env y edite el archivo .env si es necesario:
cp /myems-cleaning/example.env /myems-cleaning/.env
nano /myems-cleaning/.env
Utilice el servicio de monitoreo monit y edite el archivo de configuración de monit:
nano /etc/monit.d/myems-cleaning
check file myems-cleaning path /myems-cleaning/main.py
start program = "/usr/local/bin/python3 /myems-cleaning/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor
Inicie el servicio:
monit restart
Step 6 myems-normalization
En este paso, instalará el servicio myems-normalization.
cp -r ~/myems/myems-normalization /myems-normalization
cd /myems-normalization
pip install -r requirements.txt
Cree el archivo .env basado en example.env y edite el archivo .env si es necesario:
cp /myems-normalization/example.env /myems-normalization/.env
nano /myems-normalization/.env
Utilice el servicio de monitoreo monit y edite el archivo de configuración de monit:
nano /etc/monit.d/myems-normalization
check file myems-normalization path /myems-normalization/main.py
start program = "/usr/local/bin/python3 /myems-normalization/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor
Inicie el servicio:
monit restart
Step 7 myems-aggregation
En este paso, instalará el servicio myems-aggregation.
cp -r ~/myems/myems-aggregation /myems-aggregation
cd /myems-aggregation
pip install -r requirements.txt
Cree el archivo .env basado en example.env y edite el archivo .env si es necesario:
cp /myems-aggregation/example.env /myems-aggregation/.env
nano /myems-aggregation/.env
Utilice el servicio de monitoreo monit y edite el archivo de configuración de monit:
nano /etc/monit.d/myems-aggregation
check file myems-aggregation path /myems-aggregation/main.py
start program = "/usr/local/bin/python3 /myems-aggregation/main.py"
stop program = "/bin/kill -s TERM $MAINPID"
if 3 restarts within 5 cycles then unmonitor
Inicie el servicio:
monit restart
Step 8 myems-web
En este paso, instalará el servicio de interfaz web de myems-web.
-
Instale el servidor NGINX Consulte http://nginx.org/en/docs/install.html
-
Configure NGINX
Elimine los archivos predeterminados
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
Agregue 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;
}
}
- Install MyEMS Web UI:
Setup NodeJS:
pkg install node-18.16.0
Modifique el archivo config.js:
Obtenga el 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
nano src/config.js
Compile
npm i --unsafe-perm=true --allow-root --legacy-peer-deps
npm run build
Instale Tenga en cuenta que la siguiente ruta debe ser la misma que la configurada en nginx.conf.
rm -r /var/www/myems-web
mv build /var/www/myems-web
Reinicie el servicio nginx:
service nginx restart
Post-instalación
¡Felicidades! Ahora puede iniciar sesión en la interfaz de administración y la interfaz web de MyEMS.
Puertos predeterminados
MyEMS Web UI: 80
MyEMS API: 8000
MyEMS Admin UI: 8001
Suponiendo que la dirección del servidor sea 192.168.1.8 (reemplace con la dirección real del servidor) Acceda a MyEMS Web UI en http://192.168.1.8 (el 80 se puede omitir) Acceda a MyEMS Admin UI en http://192.168.1.8:8001
Contraseñas predeterminadas
MyEMS Admin UI
Nombre de usuario:
administrator
Contraseña:
!MyEMS1
MyEMS Web UI
Nombre de usuario:
administrator@myems.io
Contraseña:
!MyEMS1