Bhima is a free, open source accounting and hospital information management system (HIMS) tailored for rural hospitals in Africa. We are an international team based in the Democratic Republic of the Congo.
Ce guide vous expliquera le déploiement de BHIMA à l’aide de systemd pour la gestion des processus et des journaux et d’un nginx pour équilibrer la charge entre plusieurs instances de nodejs. Ces instructions ont été testées sur Ubuntu 20.04.
Créez un fichier appelé bhima@.service
dans le répertoire /etc/systemd/system/
. C’est un systemd unit file qui démarrera BHIMA sur un port spécifié. En supposant que l’utilisateur est bhima
et que l’installation de BHIMA se trouve dans /home/bhima/apps/bhima
,le contexte du fichier sera:
# bhima@.service
[Unit]
Description=The bhima server
Documentation=https://docs.bhi.ma
After=network.target
[Service]
Environment=NODE_ENV=production PORT=%i
Type=simple
User=bhima
# adjust this accordingly
WorkingDirectory=/home/bhima/apps/bhima/bin/
# adjust this accordingly
ExecStart=/usr/bin/node server/app.js
Restart=on-failure
[Install]
WantedBy=multi-user.target
Plus d’information sur la syntaxe des fichiers unités. Une fois le fichier en place, vous devez recharger le démon systemd.
systemctl daemon-reload
Dans cet exemple, nous équilibrerons la charge sur trois serveurs nodejs en aval. Cependant, la meilleure pratique consiste à utiliser un maximum de processus $(nproc - 1)
. Ajustez le fichier suivant en conséquence.
Créez un nouveau fichier de configuration nginx nommé bhima
dans /etc/nginx/sites-available/
. Mettez la configuration suivante dans ce fichier:
upstream bhima {
# assurez-vous d'acheminer les requêtes vers le serveur qui a le moins de connexions
# http://nginx.org/en/docs/http/load_balancing.html
least_conn;
# changez ces ports en fonction de ce que vous souhaitez équilibrer la charge
# ajoutez/supprimez un serveur selon vos besoins. Ici, nous avons trois serveurs nodejs en aval
server 127.0.0.1:3001;
server 127.0.0.1:3002;
server 127.0.0.1:3003;
}
# Serveur d'équilibrage de charge
server {
# ajouter la configuration gzip (si vous le souhaitez)
include includes/gzip.conf;
# opt out of Google's FLOCK.
add_header Permissions-Policy interest-cohort=();
server_name _;
# pass data to upstream server
location / {
proxy_pass http://bhima;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Pour être complet, le fichier gzip.conf
situé dans /etc/nginx/includes/gzip.conf
est :
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 5;
gzip_buffers 16 8k; # see http://stackoverflow.com/a/5132440
gzip_http_version 1.1;
gzip_min_length 128;
gzip_types
application/atom+xml
application/javascript
application/json
application/ld+json
application/manifest+json
application/octet-stream
application/rss+xml
application/vnd.geo+json
application/vnd.ms-fontobject
application/x-font-ttf
application/x-javascript
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/bmp
image/svg+xml
image/x-icon
text/cache-manifest
text/css
text/javascript
text/plain
text/vcard
text/vnd.rim.location.xloc
text/vtt
text/x-component
text/x-cross-domain-policy
text/xml;
Ce fichier configure un équilibre de charge qui transmet les requêtes à trois serveurs en aval sur les ports 3001, 3002 et 3003. Créez un lien symbolique entre /etc/nginx/sites-available/bhima
dans /etc/nginx/sites-enabled/bhima
pour s’assurer qu’il est actif. Testez la configuration nginx, puis rechargez :
# tester la configuration
nginx -t
# recharger la configuration
systemctl reload nginx
La touche finale au déploiement consiste à configurer le démarrage automatique au démarrage. Cela se fait facilement avec systemctl activate bhima@${PORT}
où ${PORT}
est le port souhaité sur lequel exécuter BHIMA. Faites cela pour chaque serveur en aval.
# démarrer le serveur nodejs
systemctl start bhima@3001
# activer le démarrage au démarrage.
systemctl enable bhima@3001
Lorsque vous curl http://localhost
, vous devriez maintenant accéder au serveur BHIMA via nginx.
Parce que nous utilisons systemd, les journaux sont gérés avec journald. Pour surveiller les journaux des serveurs ci-dessus, la ligne suivante affichera les journaux en temps réel :
# suivez et suivez tous les journaux de bhima
journalctl -u bhima@* --follow
Il peut être important, lors d’une installation avec un espace disque faible, d’ajuster la SystemMaxUse
et SystemMaxFileSize
paramètres dans /etc/systemd/journald.conf
.