FreeBSD
In diesem Handbuch stellen Sie MyEMS auf einem FreeBSD-Server bereit.
Voraussetzungen
Dieses Handbuch beschreibt die Installation von MyEMS auf FreeBSD 13.2. Die Hardwareanforderungen hängen von der gewählten Datenbank und der Anzahl der mit dem System verbundenen Geräten ab. Um MyEMS und MySQL auf einem einzigen Rechner auszuführen, benötigen Sie mindestens 4 GB RAM.
System aktualisieren und Tools installieren
pkg install git
pkg install python3
pkg install py39-pip-22.3.1
pkg install nginx
pkg install monit
Quellcode klonen:
cd ~
git clone https://github.com/myems/myems
Schritt 1 Datenbank
Siehe Datenbank
Schritt 2 myems-api
- MyEMS-API-Dienst installieren:
cp -r ~/myems/myems-api /myems-api
cd /myems-api
pip install -r requirements.txt
Falls Sie den Fehler „Failed building wheel for pillow“ erhalten, müssen Sie Pillow separat installieren. Siehe Pillow-Installationsanleitung
.env-Datei anhand der example.env erstellen und bei Bedarf bearbeiten:
cp /myems-api/example.env /myems-api/.env
nano /myems-api/.env
Monit-Überwachungsdienst konfigurieren und Konfigurationsdatei bearbeiten:
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
Dienst starten:
monit restart
Schritt 3 myems-admin
- NGINX-Server installieren Siehe http://nginx.org/en/docs/install.html
NGINX-Dienst aktivieren:
service nginx enable
- NGINX konfigurieren
nano /etc/nginx/nginx.conf
Im Abschnitt „http“ einige Direktiven hinzufügen:
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;
...
}
Eine neue Datei unter /etc/nginx/conf.d/ erstellen:
nano /etc/nginx/conf.d/myems-admin.conf
Fügen Sie die folgenden Direktiven ein und ersetzen Sie die Standard-URL der MyEMS-API http://127.0.0.1:8000/ durch die tatsächliche URL, falls der MyEMS-API-Dienst auf einem anderen Server gehostet wird.
server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Um CORS-Probleme zu vermeiden, nutze Nginx, um myems-api an den Pfad /api zu proxyn
## Füge einen weiteren location-Block /api im 'server'-Block hinzu
## Ersetze die Standard-URL http://127.0.0.1:8000/ durch die tatsächliche URL, falls myems-api auf einem anderen Server läuft
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
- MyEMS-Admin installieren: Falls der Server keine Internetverbindung hat, komprimieren Sie den Ordner myems/myems-admin, laden Sie ihn auf den Server hoch und extrahieren Sie ihn nach ~/myems/myems-admin.
mkdir /var/www
cp -r ~/myems/myems-admin /var/www/myems-admin
chmod 0755 /var/www/myems-admin
Konfigurationsdatei prüfen und bei Bedarf ändern:
nano /var/www/myems-admin/app/api.js
Der Ordner „upload“ dient für vom Benutzer hochgeladene Dateien. Löschen, verschieben oder überschreiben Sie den Ordner „upload“ nicht bei einem Update von myems-admin.
/var/www/myems-admin/upload
NGINX-Dienst neu starten:
service nginx restart
Schritt 4 myems-modbus-tcp
In diesem Schritt installieren Sie den myems-modbus-tcp-Dienst.
cp -r ~/myems/myems-modbus-tcp /myems-modbus-tcp
cd /myems-modbus-tcp
pip install -r requirements.txt
.env-Datei anhand der example.env erstellen und bei Bedarf bearbeiten:
cp /myems-modbus-tcp/example.env /myems-modbus-tcp/.env
nano /myems-modbus-tcp/.env
Monit-Überwachungsdienst konfigurieren und Konfigurationsdatei bearbeiten:
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
Dienst starten:
monit restart
Schritt 5 myems-cleaning
In diesem Schritt installieren Sie den myems-cleaning-Dienst.
cp -r ~/myems/myems-cleaning /myems-cleaning
cd /myems-cleaning
pip install -r requirements.txt
.env-Datei anhand der example.env erstellen und bei Bedarf bearbeiten:
cp /myems-cleaning/example.env /myems-cleaning/.env
nano /myems-cleaning/.env
Monit-Überwachungsdienst konfigurieren und Konfigurationsdatei bearbeiten:
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
Dienst starten:
monit restart
Schritt 6 myems-normalization
In diesem Schritt installieren Sie den myems-normalization-Dienst.
cp -r ~/myems/myems-normalization /myems-normalization
cd /myems-normalization
pip install -r requirements.txt
.env-Datei anhand der example.env erstellen und bei Bedarf bearbeiten:
cp /myems-normalization/example.env /myems-normalization/.env
nano /myems-normalization/.env
Monit-Überwachungsdienst konfigurieren und Konfigurationsdatei bearbeiten:
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
Dienst starten:
monit restart
Schritt 7 myems-aggregation
In diesem Schritt installieren Sie den myems-aggregation-Dienst.
cp -r ~/myems/myems-aggregation /myems-aggregation
cd /myems-aggregation
pip install -r requirements.txt
.env-Datei anhand der example.env erstellen und bei Bedarf bearbeiten:
cp /myems-aggregation/example.env /myems-aggregation/.env
nano /myems-aggregation/.env
Monit-Überwachungsdienst konfigurieren und Konfigurationsdatei bearbeiten:
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
Dienst starten:
monit restart
Schritt 8 myems-web
In diesem Schritt installieren Sie den MyEMS-Web-UI-Dienst.
-
NGINX-Server installieren Siehe http://nginx.org/en/docs/install.html
-
NGINX konfigurieren Standarddateien entfernen:
sudo rm /etc/nginx/sites-enabled/default
sudo rm /etc/nginx/conf.d/default.conf
Eine neue Datei unter /etc/nginx/conf.d/ erstellen:
sudo nano /etc/nginx/conf.d/myems-web.conf
Einen neuen „server“-Abschnitt mit den folgenden Direktiven hinzufügen:
server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# try_files-Direktive hinzufügen, um 404-Fehler beim Aktualisieren von Seiten zu vermeiden
try_files $uri /index.html;
}
## Um CORS-Probleme zu vermeiden, nutze Nginx, um myems-api an den Pfad /api zu proxyn
## Füge einen weiteren location-Block /api im 'server'-Block hinzu
## Ersetze die Standard-URL http://127.0.0.1:8000/ durch die tatsächliche URL, falls myems-api auf einem anderen Server läuft
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
- MyEMS-Web-UI installieren: NodeJS einrichten:
pkg install node-18.16.0
Config.js-Datei bearbeiten:
Holen Sie sich einen MapboxToken unter https://mapbox.com und setzen Sie anschließend showOnlineMap auf true. Wenn Sie die Online-Kartenfunktion deaktivieren möchten, setzen Sie showOnlineMap auf false.
cd ~/myems/myems-web
nano src/config.js
Build durchführen:
npm i --unsafe-perm=true --allow-root --legacy-peer-deps
npm run build
Installation durchführen: Beachten Sie, dass der folgende Pfad mit dem in nginx.conf konfigurierten Pfad übereinstimmen muss.
rm -r /var/www/myems-web
mv build /var/www/myems-web
NGINX-Dienst neu starten:
service nginx restart
Nach der Installation
Herzlichen Glückwunsch! Sie können sich jetzt bei der MyEMS Admin UI und der Web UI anmelden.
Standardports
MyEMS Web UI: 80 MyEMS API: 8000 MyEMS Admin UI: 8001
Vorausgesetzt, die Serveradresse lautet 192.168.1.8 (durch tatsächliche Serveradresse ersetzen): Zugriff auf MyEMS Web UI unter http://192.168.1.8 (Port 80 kann weggelassen werden) Zugriff auf MyEMS Admin UI unter http://192.168.1.8:8001
Standardpasswörter
MyEMS Admin UI Benutzername:
administrator
Passwort:
!MyEMS1
MyEMS Web UI Benutzername:
administrator@myems.io
Passwort:
!MyEMS1