FreeBSD
W tym przewodniku wdrożysz MyEMS na serwerze FreeBSD.
Wymagania wstępne
Ten przewodnik opisuje sposób instalacji MyEMS na FreeBSD 13.2. Wymagania sprzętowe zależą od wybranej bazy danych oraz liczby urządzeń podłączonych do systemu. Aby uruchomić MyEMS i MySQL na jednej maszynie, potrzebujesz co najmniej 4GB RAM.
Aktualizuj system i zainstaluj narzędzia:
pkg install git
pkg install python3
pkg install py39-pip-22.3.1
pkg install nginx
pkg install monit
Sklonuj kod źródłowy:
cd ~
git clone https://github.com/myems/myems
Krok 1 Baza Danych
Zobacz Baza Danych
Krok 2 myems-api
- Zainstaluj usługę myems-api:
cp -r ~/myems/myems-api /myems-api
cd /myems-api
pip install -r requirements.txt
Jeśli napotkasz błąd 'Failed building wheel for pillow', musisz zainstalować Pillow
Utwórz plik .env na podstawie example.env i edytuj plik .env jeśli to konieczne:
cp /myems-api/example.env /myems-api/.env
nano /myems-api/.env
Użyj usługi monitorującej monit i edytuj plik konfiguracyjny 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
Uruchom usługi:
monit restart
Krok 3 myems-admin
- Zainstaluj serwer NGINX
zobacz http://nginx.org/en/docs/install.html
Włącz usługę nginx:
service nginx enable
- Skonfiguruj NGINX
nano /etc/nginx/nginx.conf
W sekcji 'http' dodaj następujące dyrektywy:
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;
...
}
Dodaj nowy plik w katalogu /etc/nginx/conf.d/:
nano /etc/nginx/conf.d/myems-admin.conf
Wpisz następujące dyrektywy, a jeśli usługa myems-api działa na innym serwerze, zamień domyślny adres URL myems-api http://127.0.0.1:8000/ na rzeczywisty adres:
server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Aby uniknąć problemów z CORS, użyj Nginxa do proxyowania myems-api pod ścieżkę /api
## Dodaj kolejną lokalizację /api w sekcji 'server'
## Jeśli usługa myems-api działa na innym serwerze, zamień domyślny adres URL myems-api http://127.0.0.1:8000/ na rzeczywisty adres
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
- Zainstaluj myems-admin: Jeśli serwer nie ma dostępu do internetu, skompresuj folder myems/myems-admin, przekaż go na serwer i rozpakuj do ~/myems/myems-admin
mkdir /var/www
cp -r ~/myems/myems-admin /var/www/myems-admin
chmod 0755 /var/www/myems-admin
Sprawdź plik konfiguracyjny i zmień go jeśli to konieczne:
nano /var/www/myems-admin/app/api.js
Folder 'upload' przeznaczony jest dla plików przesłanych przez użytkowników. NIE usuwaj/przenoś/nadpisywaj folderu 'upload' podczas aktualizacji myems-admin.
/var/www/myems-admin/upload
Restartuj usługę nginx:
service nginx restart
Krok 4 myems-modbus-tcp
W tym kroku zainstalujesz usługę myems-modbus-tcp.
cp -r ~/myems/myems-modbus-tcp /myems-modbus-tcp
cd /myems-modbus-tcp
pip install -r requirements.txt
Utwórz plik .env na podstawie example.env i edytuj plik .env jeśli to konieczne:
cp /myems-modbus-tcp/example.env /myems-modbus-tcp/.env
nano /myems-modbus-tcp/.env
Użyj usługi monitorującej monit i edytuj plik konfiguracyjny 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
Uruchom usługę:
monit restart
Krok 5 myems-cleaning
W tym kroku zainstalujesz usługę myems-cleaning.
cp -r ~/myems/myems-cleaning /myems-cleaning
cd /myems-cleaning
pip install -r requirements.txt
Utwórz plik .env na podstawie example.env i edytuj plik .env jeśli to konieczne:
cp /myems-cleaning/example.env /myems-cleaning/.env
nano /myems-cleaning/.env
Użyj usługi monitorującej monit i edytuj plik konfiguracyjny 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
Uruchom usługę:
monit restart
Krok 6 myems-normalization
W tym kroku zainstalujesz usługę myems-normalization.
cp -r ~/myems/myems-normalization /myems-normalization
cd /myems-normalization
pip install -r requirements.txt
Utwórz plik .env na podstawie example.env i edytuj plik .env jeśli to konieczne:
cp /myems-normalization/example.env /myems-normalization/.env
nano /myems-normalization/.env
Użyj usługi monitorującej monit i edytuj plik konfiguracyjny 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
Uruchom usługę:
monit restart
Krok 7 myems-aggregation
W tym kroku zainstalujesz usługę myems-aggregation.
cp -r ~/myems/myems-aggregation /myems-aggregation
cd /myems-aggregation
pip install -r requirements.txt
Utwórz plik .env na podstawie example.env i edytuj plik .env jeśli to konieczne:
cp /myems-aggregation/example.env /myems-aggregation/.env
nano /myems-aggregation/.env
Użyj usługi monitorującej monit i edytuj plik konfiguracyjny 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
Uruchom usługę:
monit restart
Krok 8 myems-web
W tym kroku zainstalujesz usługę interfejsu użytkownika myems-web.
- Zainstaluj serwer NGINX
zobacz http://nginx.org/en/docs/install.html
- Skonfiguruj NGINX
Usuń domyślne pliki:
sudo rm /etc/nginx/sites-enabled/default
sudo rm /etc/nginx/conf.d/default.conf
Dodaj nowy plik w katalogu /etc/nginx/conf.d/:
sudo nano /etc/nginx/conf.d/myems-web.conf
Dodaj nową sekcję 'server' z następującymi dyrektywami:
server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# dodaj dyrektywę try_files, aby uniknąć błędu 404 podczas odświeżania stron
try_files $uri /index.html;
}
## Aby uniknąć problemów z CORS, użyj Nginxa do proxyowania myems-api pod ścieżkę /api
## Dodaj kolejną lokalizację /api w sekcji 'server'
## Jeśli usługa myems-api działa na innym serwerze, zamień domyślny adres URL myems-api http://127.0.0.1:8000/ na rzeczywisty adres
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
- Zainstaluj interfejs użytkownika MyEMS Web UI:
Skonfiguruj NodeJS:
pkg install node-18.16.0
Modyfikuj plik config.js:
Pobierz mapboxToken na stronie https://mapbox.com, a następnie ustaw showOnlineMap na true. Jeśli chcesz wyłączyć funkcję mapy online, ustaw showOnlineMap na false.
cd ~/myems/myems-web
nano src/config.js
Zbuduj projekt:
npm i --unsafe-perm=true --allow-root --legacy-peer-deps
npm run build
Zainstaluj: Uwaga: poniższa ścieżka powinna być taka sama jak ta skonfigurowana w pliku nginx.conf.
rm -r /var/www/myems-web
mv build /var/www/myems-web
Restartuj usługę nginx:
service nginx restart
Po instalacji
Gratulacje! Teraz możesz zalogować się do interfejsu administracyjnego MyEMS Admin UI oraz Web UI.
Domyślne porty
MyEMS Web UI: 80
MyEMS API: 8000
MyEMS Admin UI: 8001
Zakładając, że adres serwera to 192.168.1.8 (zamień na rzeczywisty adres serwera): Dostęp do MyEMS Web UI pod adresem http://192.168.1.8 (port 80 można pominąć) Dostęp do MyEMS Admin UI pod adresem http://192.168.1.8:8001
Domyślne hasła
MyEMS Admin UI
Nazwa użytkownika:
administrator
Hasło:
!MyEMS1
MyEMS Web UI
Nazwa użytkownika:
administrator@myems.io
Hasło:
!MyEMS1