Ga naar de hoofdinhoud

FreeBSD

In deze handleiding implementeer je MyEMS op een FreeBSD-server.

Vereisten

Deze handleiding beschrijft hoe je MyEMS installeert op FreeBSD 13.2. De hardwarevereisten zijn afhankelijk van de gekozen database en het aantal apparaten dat aan het systeem is verbonden. Om MyEMS en MySQL op één machine te draaien, heb je minimaal 4GB RAM nodig.

Systeem bijwerken en tools installeren:

pkg install git
pkg install python3
pkg install py39-pip-22.3.1
pkg install nginx
pkg install monit

Broncode klonen:

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

Stap 1 Database

Zie Database

Stap 2 myems-api

  • myems-api-service installeren:
cp -r ~/myems/myems-api /myems-api
cd /myems-api
pip install -r requirements.txt
Tip

Als je de fout 'Failed building wheel for pillow' tegenkomt, moet je Pillow installeren

.env-bestand aanmaken op basis van example.env en het .env-bestand bewerken indien nodig:

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

De monit-monitoringservice gebruiken en het monit-configuratiebestand bewerken:

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

Services starten:

monit restart

Stap 3 myems-admin

  • NGINX-server installeren

Zie http://nginx.org/en/docs/install.html

NGINX-service activeren:

service nginx enable
  • NGINX configureren
nano /etc/nginx/nginx.conf

Voeg in de 'http'-sectie enkele richtlijnen toe:

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

}

Een nieuw bestand toevoegen onder /etc/nginx/conf.d/:

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

Schrijf de volgende richtlijnen en vervang de standaard myems-api-url http://127.0.0.1:8000/ door de werkelijke url als de myems-api-service op een andere server wordt gehost:

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Om CORS-problemen te voorkomen, gebruik Nginx om myems-api te proxy'en naar het pad /api
## Voeg een andere locatie /api toe in 'server'
## Vervang de standaard myems-api-url http://127.0.0.1:8000/ door de werkelijke url als de myems-api-service op een andere server wordt gehost
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • myems-admin installeren: Als de server geen verbinding met internet kan maken, comprimeer dan de map myems/myems-admin en upload deze naar de server en pak deze uit naar ~/myems/myems-admin
mkdir /var/www
cp -r ~/myems/myems-admin  /var/www/myems-admin
chmod 0755 /var/www/myems-admin

Controleer het configuratiebestand en pas het indien nodig aan:

nano /var/www/myems-admin/app/api.js
Voorzichtigheid

De map 'upload' is bedoeld voor door gebruikers geüploade bestanden. VERWIJDER/VERPLAAT/OVEERSCHRIJ DE MAP 'upload' NIET wanneer je myems-admin bijwerkt.

 /var/www/myems-admin/upload

NGINX-service herstarten:

service nginx restart

Stap 4 myems-modbus-tcp

In deze stap installeer je de myems-modbus-tcp-service.

cp -r ~/myems/myems-modbus-tcp /myems-modbus-tcp
cd /myems-modbus-tcp
pip install -r requirements.txt

.env-bestand aanmaken op basis van example.env en het .env-bestand bewerken indien nodig:

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

De monit-monitoringservice gebruiken en het monit-configuratiebestand bewerken:

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

Service starten:

monit restart

Stap 5 myems-cleaning

In deze stap installeer je de myems-cleaning-service.

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

.env-bestand aanmaken op basis van example.env en het .env-bestand bewerken indien nodig:

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

De monit-monitoringservice gebruiken en het monit-configuratiebestand bewerken:

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

Service starten:

monit restart

Stap 6 myems-normalization

In deze stap installeer je de myems-normalization-service.

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

.env-bestand aanmaken op basis van example.env en het .env-bestand bewerken indien nodig:

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

De monit-monitoringservice gebruiken en het monit-configuratiebestand bewerken:

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

Service starten:

monit restart

Stap 7 myems-aggregation

In deze stap installeer je de myems-aggregation-service.

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

.env-bestand aanmaken op basis van example.env en het .env-bestand bewerken indien nodig:

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

De monit-monitoringservice gebruiken en het monit-configuratiebestand bewerken:

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

Service starten:

monit restart

Stap 8 myems-web

In deze stap installeer je de myems-web UI-service.

  • NGINX-server installeren

Zie http://nginx.org/en/docs/install.html

  • NGINX configureren

Standaardbestanden verwijderen:

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

Een nieuw bestand toevoegen onder /etc/nginx/conf.d/:

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

Voeg een nieuwe 'server'-sectie toe met de volgende richtlijnen:

server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# try_files-richtlijn toevoegen om 404-fouten te voorkomen bij het vernieuwen van pagina's
try_files $uri /index.html;
}
## Om CORS-problemen te voorkomen, gebruik Nginx om myems-api te proxy'en naar het pad /api
## Voeg een andere locatie /api toe in 'server'
## Vervang de standaard myems-api-url http://127.0.0.1:8000/ door de werkelijke url als de myems-api-service op een andere server wordt gehost
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
  • MyEMS Web UI installeren:

NodeJS instellen:

pkg install node-18.16.0

Config.js-bestand aanpassen:

Notitie

Verkrijg een mapboxToken op https://mapbox.com en stel vervolgens showOnlineMap in op true. Als je de online kaartfunctie wilt uitschakelen, stel je showOnlineMap in op false.

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

Bouwen:

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

Installeren: Let op dat het volgende pad overeenkomt met het pad dat is geconfigureerd in nginx.conf.

rm -r /var/www/myems-web
mv build  /var/www/myems-web

NGINX-service herstarten:

service nginx restart

Na installatie

Gefeliciteerd! Je kunt nu inloggen op de MyEMS Admin UI en Web UI.

Standaardpoorten

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

Als ervan wordt uitgegaan dat het serveradres 192.168.1.8 is (vervang dit door het werkelijke serveradres): Toegang tot MyEMS Web UI op http://192.168.1.8 (poort 80 kan worden weggelaten) Toegang tot MyEMS Admin UI op http://192.168.1.8:8001

Standaardwachtwoorden

MyEMS Admin UI

Gebruikersnaam:

administrator

Wachtwoord:

!MyEMS1

MyEMS Web UI

Gebruikersnaam:

administrator@myems.io

Wachtwoord:

!MyEMS1

Probleemoplossing