Ce guide permet d'installer, configurer et faire fonctionner Borgia sur un serveur web en production.
L'ensemble de l'installation se fait sur un serveur sous Linux. La distribution n'est pas importante, mais le guide est écrit pour une distribution Debian, si tel n'est pas le cas certaines commandes (notamment les commandes d'installation de paquets) seront peut-être à adapter.
-
L'ensemble des commandes suivantes sont à effectuer en
sudo
, sauf cas exceptionnels contraires et indiqués explicitement par la suite. -
Il est préférable que l'ensemble du serveur soit configuré sur une machine virtuelle (VM) et non sur le serveur physique directement. Elle pourra ainsi facilement être copiée, sauvegardée ou réinitialisée.
-
Afin que le guide soit plus clair, il est décidé de travailler dans un dossier spécifique nommé
borgia-app
situé à la racine du serveur (/borgia-app
). Il est bien évidemment possible de changer ce répertoire, les commandes devront donc être modifiées.
apt-get update
apt-get upgrade
apt-get purge apache2
apt-get install curl apt-transport-https
apt-get install build-essential libpq-dev python-dev libjpeg-dev libssl-dev libffi-dev
apt-get install postgresql postgresql-contrib nginx git
- S'assurer que la commande
python3 --version
retourne une version supérieure ou égale à3.5
(Version par défaut sur Debian 9). Si ce n'est pas le cas, réinstallerpython3
. apt-get install python3-pip
Installation de Yarn (cas explicite de Debian, sinon voir ici):
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
apt-get update && sudo apt-get install yarn
mkdir /borgia-app
/!\ installation possible de venv l'utiliser dans ce cas la
pip3 install virtualenv virtualenvwrapper
- Dans
/borgia-app
, créer un environnement virtuel :virtualenv borgiaenv
. - Si la commande virtualenv n'existe pas, faire:
ln -s /usr/local/bin/virtualenv* /usr/bin/
- Dans la suite du tutoriel, lorsque des commandes sont effectuées dans l'environnement virtuel il faut s'assurer d'y être. Afin d'être sûr, l'invite de commande indique le nom de l'environnement en parenthèses (ici
(borgiaenv)
par exemple). - Lorsque c'est demandé, la commande
source /borgia-app/borgiaenv/bin/activate
permet d'entrer dans l'environnement. Etdeactivate
pour en sortir.
Cette partie ne doit pas être effectuée dans l'environnement virtuel.
su - postgres
https://phoenixnap.com/kb/how-to-install-postgresql-on-ubuntu
La suite des commandes est a effectuer dans l'invite de commande postgres. psql
permet d'activer l'invite et \q
permet d'en sortir. Attention, toutes les commandes se terminent par un ;
.
MOT_DE_PASSE_DB est le mot de passe choisi pour se connecter à la base de données. Faites attention à le modifier dans toutes les commandes.
Dans l'invite postgres :
CREATE DATABASE borgia;
CREATE USER borgiauser WITH PASSWORD 'MOT_DE_PASSE_DB';
GRANT ALL PRIVILEGES ON DATABASE borgia TO borgiauser;
Dans /borgia-app
:
git clone https://github.com/borgia-app/Borgia.git
Ensuite dans /borgia-app/Borgia
:
git checkout tags/RELEASE_A_UTILISER
git checkout -b production_RELEASE_A_UTILISER
Dans /borgia-app/Borgia
et dans l'environnement virtuel :
pip3 install -r requirements/prod.txt
Et finalement, hors de l'environnement virtuel :
yarn global add less
Copier le fichier /borgia-app/Borgia/contrib/production/settings.py
dans /borgia-app/Borgia/borgia/borgia/settings.py
et :
-
Modifier la ligne
SECRET_KEY =
en indiquant une clé privée aléatoire. Par exemple, ce site permet de générer des clés, choisissez au minimum "CodeIgniter Encryption Keys", par exemple :SECRET_KEY = 'AAHHBxi0qHiVWWk6J1bVWCMdF45p6X9t'
. -
S'assurer que
DEBUG = False
. -
Modifier la ligne
ALLOWED_HOSTS =
en indiquant les domaines ou sous domaines acceptés par l'application. Par exemple :ALLOWED_HOSTS = ['sibers.borgia-app.com', 'borgia-me.ueam.net']
.
Dans le fichier /borgia-app/Borgia/borgia/borgia/settings.py
, modifier la partie :
DATABASES = {
...
}
en indiquant le nom de la base de données, le nom de l'utilisateur et le mot de passe définis lors de la configuration de cette dernière. Par exemple :
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'borgia',
'USER': 'borgiauser',
'PASSWORD': 'mot_de_passe',
'HOST': 'localhost',
'PORT': '5432',
}
}
- Créer un compte mail Google via le site Gmail et noter le nom d'utilisateur NOM_UTILISATEUR_MAIL et le mot de passe MOT_DE_PASSE_MAIL.
Dans le fichier /borgia-app/Borgia/borgia/borgia/settings.py
:
-
Modifier les lignes
DEFAULT_FROM_EMAIL
,SERVER_EMAIL
etEMAIL_HOST_USER
en indiquant l'email NOM_UTILISATEUR_MAIL. -
Modifier la ligne
EMAIL_HOST_PASSWORD
en indiquant le bon mot de passe MOT_DE_PASSE_MAIL.
Les administrateur reçoivent des emails en cas de problèmes lors de l'utilisation de Borgia. Par exemple, si la base de données est inacessible, Borgia enverra automatiquement un mail aux administrateurs. Ces mails sont précieux et permettent de corriger des erreurs. En effet, l'interface de debug utilisée en développement n'est pas accessible ici et les mails la remplacent. Il convient d'ajouter au moins un administrateur qui va stocker les éventuels mails d'erreurs pour débuguer ensuite ou transférer à l'équipe de mainteneurs de Borgia.
Pour ajouter des administrateurs, indiquer les adresses mails dans la ligne ADMINS =
dans le fichier /borgia-app/Borgia/borgia/borgia/settings.py
.
Dans /borgia-app/Borgia/borgia
et dans l'environnement virtuel :
python3 manage.py makemigrations configurations users shops finances events modules sales stocks
python3 manage.py migrate
python3 manage.py loaddata initial
python3 manage.py collectstatic --clear
en acceptant l'alerte
Ensuite, indiquer le mot de passe du compte administrateur (qui sera désactivé par la suite) :
python3 manage.py shell
,from users.models import User
,u = User.objects.get(pk=2)
, mettre pk=1 AE_ENSAMu.set_password(NEW_PASSWORD)
.u.save()
exit()
La commande dans l'environnement virtuel python3 manage.py runserver 0.0.0.0:8000
doit lancer le serveur et ne doit pas indiquer d'erreur. Si tel est le cas, continuer vers la suite et fin du guide d'installation.
- suivre tutoriel : https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-20-04-fr
ressources a utiliser si pblm
-
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04-fr
-
https://stackoverflow.com/questions/11426087/nginx-error-conflicting-server-name-ignored
-
sudo tail -f /var/log/nginx/error.log
-
https://stackoverflow.com/questions/53223914/issue-using-certbot-with-nginx
Enfin, il convient de sauvegarder l'ensemble de cette configuration sur une branche de production (sudo non nécessaire ici) :
git add .
git commit -m "production"
Il n'est pas recommandé de push cette branche car elle pourrait contenir des informations sensibles comme des clés et des mots de passe.
Les deux clés publique et privée LYDIA_API_TOKEN
& LYDIA_VENDOR_TOKEN
permettent d'identifier le compte auprès de Lydia. Ces informations sont obtenues en contactant le support de Lydia directement après avoir ouvert un compte professionnel chez eux.
De même, il faut changer les deux urls LYDIA_CALLBACK_URL
et LYDIA_CONFIRM_URL
en modifiant la première partie qui concerne uniquement le domaine (borgia.iresam.org
par exemple). Attention, LYDIA_CONFIRM_URL
doit être en http
et Borgia fera automatiquement la redirection si SSL est activé, mais LYDIA_CALLBACK_URL
DOIT être en https
si SSL est activé !