Aller au contenu principal

Anolis OS

sidebar_position: 8

Dans ce guide, vous allez déployer MyEMS sur Anolis OS.

Prérequis

Ce guide détaille l'installation de MyEMS sur Anolis OS 8. Les exigences matérielles dépendent de la base de données choisie et du nombre d'appareils connectés au système. Pour exécuter MyEMS et MySQL sur une seule machine, il faut disposer d'au moins 4 Go de RAM.

Mettre à jour le système et installer les outils

sudo dnf update
sudo yum install python39
sudo ln -sb /bin/python3.9 /bin/python3
sudo ln -sb /bin/pip3.9 /bin/pip3
sudo ln -sb /bin/python3.9 /bin/python
sudo ln -sb /bin/pip3.9 /bin/pip
sudo dnf install git

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 :
sudo cp -r ~/myems/myems-api /myems-api
cd /myems-api
sudo pip install -r requirements.txt

Créer un fichier .env à partir du fichier example.env et modifier le fichier .env si nécessaire :

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

Vérifier ou modifier le port d'écoute (8000 par défaut) dans les fichiers myems-api.service et myems-api.socket :

sudo nano /myems-api/myems-api.service
ExecStart=/usr/local/bin/gunicorn -b 0.0.0.0:8000 --pid /run/myems-api/pid --timeout 600 --workers=4 app:api
sudo nano /myems-api/myems-api.socket
ListenStream=0.0.0.0:8000

Ajouter le port au pare-feu :

sudo firewall-cmd --zone=public --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

Configurer les fichiers de configuration systemd :

sudo cp /myems-api/myems-api.service /lib/systemd/system/
sudo cp /myems-api/myems-api.socket /lib/systemd/system/
sudo cp /myems-api/myems-api.conf /usr/lib/tmpfiles.d/

Activer ensuite les services pour qu'ils démarrent automatiquement au lancement du système :

sudo systemctl enable myems-api.socket
sudo systemctl enable myems-api.service

Démarrer les services :

sudo systemctl start myems-api.socket
sudo systemctl start myems-api.service

Étape 3 myems-admin

Activer le service nginx :

sudo systemctl start nginx.service
  • Configurer NGINX
sudo 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/

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

Remplir 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 autre serveur

server {
listen 8001;
server_name myems-admin;
location / {
root /var/www/myems-admin;
index index.html index.htm;
}
## Pour éviter le problème de CORS, utiliser Nginx pour proxifier myems-api vers 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 myems-api est hébergé 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 le décompresser dans le répertoire ~/myems/myems-admin
sudo mkdir /var/www
sudo cp -r ~/myems/myems-admin  /var/www/myems-admin
sudo chmod 0755 -R /var/www/myems-admin

Vérifier le fichier de configuration et le modifier si nécessaire :

sudo nano /var/www/myems-admin/app/api.js
attention

Le dossier 'upload' est destiné aux fichiers téléchargés par l'utilisateur. NE PAS supprimer/déplacer/écraser le dossier 'upload' lors de la mise à niveau de myems-admin.

 /var/www/myems-admin/upload

Débloquer le port et l'ajouter au pare-feu :

sudo semanage port -a -t http_port_t  -p tcp 8001
sudo firewall-cmd --zone=public --add-port=8001/tcp --permanent
sudo firewall-cmd --reload

Redémarrer le service nginx :

sudo systemctl restart nginx.service
Astuce

Si vous rencontrez l'erreur nginx '403 Interdit', vous pouvez la résoudre en modifiant le mode SELinux avec la commande 'sudo setenforce 0'

Étape 4 myems-modbus-tcp

Dans cette étape, vous allez installer le service myems-modbus-tcp.

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

Copier le fichier exmaple.env vers .env et modifier le fichier .env :

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

Configurer le service systemd :

sudo cp myems-modbus-tcp.service /lib/systemd/system/

Activer le service :

sudo systemctl enable myems-modbus-tcp.service

Démarrer le service :

sudo systemctl start myems-modbus-tcp.service

Surveiller le service :

sudo systemctl status myems-modbus-tcp.service

Consulter les journaux :

cat /myems-modbus-tcp.log

Étape 5 myems-cleaning

Dans cette étape, vous allez installer le service myems-cleaning.

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

Copier le fichier exmaple.env vers .env et modifier le fichier .env :

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

Configurer le service systemd :

sudo cp /myems-cleaning/myems-cleaning.service /lib/systemd/system/

Activer le service :

sudo systemctl enable myems-cleaning.service

Démarrer le service :

sudo systemctl start myems-cleaning.service

Surveiller le service :

sudo systemctl status myems-cleaning.service

Consulter les journaux :

cat /myems-cleaning.log

Étape 6 myems-normalization

Dans cette étape, vous allez installer le service myems-normalization.

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

Copier le fichier exmaple.env vers .env et modifier le fichier .env :

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

Configurer le service systemd :

sudo cp /myems-normalization/myems-normalization.service /lib/systemd/system/

Activer le service :

sudo systemctl enable myems-normalization.service

Démarrer le service :

sudo systemctl start myems-normalization.service

Surveiller le service :

sudo systemctl status myems-normalization.service

Consulter les journaux :

cat /myems-normalization.log

Étape 7 myems-aggregation

Dans cette étape, vous allez installer le service myems-aggregation.

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

Copier le fichier exmaple.env vers .env et modifier le fichier .env :

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

Configurer le service systemd :

sudo cp /myems-aggregation/myems-aggregation.service /lib/systemd/system/

Activer le service :

sudo systemctl enable myems-aggregation.service

Démarrer le service :

sudo systemctl start myems-aggregation.service

Surveiller le service :

sudo systemctl status myems-aggregation.service

Consulter les journaux :

cat /myems-aggregation.log

Étape 8 myems-web

Dans cette étape, vous allez installer le service interface utilisateur myems-web.

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 de CORS, utiliser Nginx pour proxifier myems-api vers 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 myems-api est hébergé 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 utilisateur MyEMS Web : Configurer NodeJS :
sudo dnf module list nodejs
sudo dnf module reset nodejs:16/common
sudo dnf module install nodejs:16/common
  • Modifier le fichier config.js :
Note

Obtenir le mapboxToken sur le site https://mapbox.com, puis définir showOnlineMap sur true. Si vous souhaitez désactiver la fonction de carte en ligne, définir showOnlineMap sur false.

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

Si la commande 'node -v' retourne 'v16.xx.xx', il faut supprimer les paramètres '--openssl-legacy-provider' des commandes start et build dans le fichier package.json

sudo nano package.json
  ...
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
...

Construire et compresser le projet :

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

Installer le projet : Envoyer les fichiers sur le serveur web. Remarque : le chemin ci-dessous doit être identique à celui configuré dans nginx.conf.

sudo mv build  /var/www/myems-web

Débloquer le port et l'ajouter au pare-feu :

sudo semanage port -a -t http_port_t  -p tcp 80
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

Redémarrer le service nginx :

sudo systemctl restart nginx.service
Astuce

Si vous rencontrez l'erreur nginx '500 Erreur interne du serveur', vous pouvez la résoudre en modifiant le mode SELinux avec la commande 'sudo setenforce 0'

Post-installation

Félicitations ! Vous pouvez désormais vous connecter aux interfaces utilisateur MyEMS Admin et MyEMS Web.

Ports par défaut

Interface utilisateur MyEMS Web : 80 Interface de programmation MyEMS API : 8000 Interface utilisateur MyEMS Admin : 8001

En supposant que l'adresse du serveur est 192.168.1.8 (remplacer par l'adresse réelle du serveur) Accéder à l'interface utilisateur MyEMS Web via l'URL : http://192.168.1.8 (le port 80 peut être omis) Accéder à l'interface utilisateur MyEMS Admin via l'URL : http://192.168.1.8:8001

Mot de passe par défaut

Interface utilisateur MyEMS Admin Nom d'utilisateur :

administrator

Mot de passe :

!MyEMS1

Interface utilisateur MyEMS Web Nom d'utilisateur :

administrator@myems.io

Mot de passe :

!MyEMS1

Dépannage

我可以帮你把这份文档里的代码注释也同步翻译成法语,让整个部署指南更统一,需要吗?