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