FreeBSD
Dans ce guide, vous allez déployer MyEMS sur un serveur FreeBSD.
Prérequis
Ce guide détaille l'installation de MyEMS sur FreeBSD 13.2. Les exigences matérielles dépendent de la base de données choisie et du nombre de dispositifs connectés au système. Pour exécuter MyEMS et MySQL sur une seule machine, vous aurez besoin d'au moins 4 Go de RAM.
Mettre à jour le système et installer les outils nécessaires
pkg install git
pkg install python3
pkg install py39-pip-22.3.1
pkg install nginx
pkg install monit
Cloner le code source :
cd ~
git clone https://github.com/myems/myems
Étape 1 Base de données
Voir Base de données
Étape 2 myems-api
- Installer le service myems-api :
cp -r ~/myems/myems-api /myems-api
cd /myems-api
pip install -r requirements.txt
Si vous rencontrez l'erreur « Failed building wheel for pillow », vous devez suivre la documentation d'installation de Pillow : https://pillow.readthedocs.io/en/latest/installation.html
Créer le fichier .env à partir de example.env et le modifier si nécessaire :
cp /myems-api/example.env /myems-api/.env
nano /myems-api/.env
Utiliser le service de surveillance monit et éditer le fichier de configuration 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
Démarrer le service :
monit restart
Étape 3 myems-admin
- Installer le serveur NGINX Se référer à la documentation officielle : http://nginx.org/en/docs/install.html
Activer le service nginx :
service nginx enable
- Configurer NGINX
nano /etc/nginx/nginx.conf
Dans la section « http », ajouter les directives suivantes :
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;
...
}
Ajouter un nouveau fichier dans le répertoire /etc/nginx/conf.d/
nano /etc/nginx/conf.d/myems-admin.conf
Rédiger le fichier avec les directives ci-dessous, et remplacer l'URL par défaut de myems-api http://127.0.0.1:8000/ par l'URL réelle si le service myems-api est hébergé sur un serveur différent
server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Pour éviter le problème CORS, utiliser Nginx pour proxyfier myems-api sur le chemin /api
## Ajouter une autre location /api dans la section 'server'
## Remplacer l'URL par défaut de myems-api http://127.0.0.1:8000/ par l'URL réelle si le service est sur un autre serveur
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
- Installer myems-admin : Si le serveur n'a pas accès à Internet, compresser le dossier myems/myems-admin, l'envoyer sur le serveur puis l'extraire dans ~/myems/myems-admin
mkdir /var/www
cp -r ~/myems/myems-admin /var/www/myems-admin
chmod 0755 /var/www/myems-admin
Vérifier le fichier de configuration et le modifier si nécessaire :
nano /var/www/myems-admin/app/api.js
Le dossier « upload » stocke les fichiers téléchargés par les utilisateurs. NE PAS supprimer, déplacer ou écraser ce dossier lors de la mise à jour de myems-admin.
/var/www/myems-admin/upload
Redémarrer le service nginx :
service nginx restart
Étape 4 myems-modbus-tcp
Dans cette étape, vous allez installer le service myems-modbus-tcp.
cp -r ~/myems/myems-modbus-tcp /myems-modbus-tcp
cd /myems-modbus-tcp
pip install -r requirements.txt
Créer le fichier .env à partir de example.env et le modifier si nécessaire :
cp /myems-modbus-tcp/example.env /myems-modbus-tcp/.env
nano /myems-modbus-tcp/.env
Utiliser le service de surveillance monit et éditer le fichier de configuration 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
Démarrer le service :
monit restart
Étape 5 myems-cleaning
Dans cette étape, vous allez installer le service myems-cleaning.
cp -r ~/myems/myems-cleaning /myems-cleaning
cd /myems-cleaning
pip install -r requirements.txt
Créer le fichier .env à partir de example.env et le modifier si nécessaire :
cp /myems-cleaning/example.env /myems-cleaning/.env
nano /myems-cleaning/.env
Utiliser le service de surveillance monit et éditer le fichier de configuration 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
Démarrer le service :
monit restart
Étape 6 myems-normalization
Dans cette étape, vous allez installer le service myems-normalization.
cp -r ~/myems/myems-normalization /myems-normalization
cd /myems-normalization
pip install -r requirements.txt
Créer le fichier .env à partir de example.env et le modifier si nécessaire :
cp /myems-normalization/example.env /myems-normalization/.env
nano /myems-normalization/.env
Utiliser le service de surveillance monit et éditer le fichier de configuration 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
Démarrer le service :
monit restart
Étape 7 myems-aggregation
Dans cette étape, vous allez installer le service myems-aggregation.
cp -r ~/myems/myems-aggregation /myems-aggregation
cd /myems-aggregation
pip install -r requirements.txt
Créer le fichier .env à partir de example.env et le modifier si nécessaire :
cp /myems-aggregation/example.env /myems-aggregation/.env
nano /myems-aggregation/.env
Utiliser le service de surveillance monit et éditer le fichier de configuration 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
Démarrer le service :
monit restart
Étape 8 myems-web
Dans cette étape, vous allez installer le service d'interface myems-web.
-
Installer le serveur NGINX Se référer à la documentation officielle : http://nginx.org/en/docs/install.html
-
Configurer NGINX Supprimer les fichiers par défaut
sudo rm /etc/nginx/sites-enabled/default
sudo rm /etc/nginx/conf.d/default.conf
Ajouter un nouveau fichier dans le répertoire /etc/nginx/conf.d/
sudo nano /etc/nginx/conf.d/myems-web.conf
Ajouter une nouvelle section « server » avec les directives ci-dessous :
server {
listen 80;
server_name myems-web;
location / {
root /var/www/myems-web;
index index.html index.htm;
# Ajouter la directive try_files pour éviter l'erreur 404 lors du rafraîchissement des pages
try_files $uri /index.html;
}
## Pour éviter le problème CORS, utiliser Nginx pour proxyfier myems-api sur le chemin /api
## Ajouter une autre location /api dans la section 'server'
## Remplacer l'URL par défaut de myems-api http://127.0.0.1:8000/ par l'URL réelle si le service est sur un autre serveur
location /api {
proxy_pass http://127.0.0.1:8000/;
proxy_connect_timeout 75;
proxy_read_timeout 600;
send_timeout 600;
}
}
- Installer l'interface MyEMS Web : Configurer NodeJS :
pkg install node-18.16.0
Modifier le fichier config.js :
Obtenir le mapboxToken sur https://mapbox.com, puis définir showOnlineMap sur true. Pour désactiver la carte en ligne, mettre showOnlineMap sur false.
cd ~/myems/myems-web
nano src/config.js
Construire le projet :
npm i --unsafe-perm=true --allow-root --legacy-peer-deps
npm run build
Installer l'interface : Attention : le chemin ci-dessous doit correspondre à celui configuré dans nginx.conf.
rm -r /var/www/myems-web
mv build /var/www/myems-web
Redémarrer le service nginx :
service nginx restart
Post-installation
Félicitations ! Vous pouvez désormais vous connecter aux interfaces MyEMS Admin et MyEMS Web.
Ports par défaut
MyEMS Web UI : 80 MyEMS API : 8000 MyEMS Admin UI : 8001
En supposant que l'adresse du serveur est 192.168.1.8 (remplacez par votre adresse réelle) Accéder à MyEMS Web UI : http://192.168.1.8 (le port 80 peut être omis) Accéder à MyEMS Admin UI : http://192.168.1.8:8001
Mot de passe par défaut
MyEMS Admin UI Identifiant :
administrator
Mot de passe :
!MyEMS1
MyEMS Web UI Identifiant :
administrator@myems.io
Mot de passe :
!MyEMS1