Outils pour utilisateurs

Outils du site


outil_de_gestion_de_structures_de_benevoles_diacamma

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

outil_de_gestion_de_structures_de_benevoles_diacamma [2021/05/08 13:25] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Diacamma ======
 +
 +Présentation d'installation d'une instance Diacamma sur //debian// 9.\\ 
 +Dans cette présentation, nous allons configurer un site https://test.sleto.net.\\ 
 +
 +Nous utiliserons les variables //DBNAME//, //DBUSER// et //DBPASSWD// respectivement pour le nom, l'utilisateur et le mot de passe de base de données.\\  
 +
 +===== Dépendances =====
 +
 +Utilise un [[Serveur web sécurisé (Nginx / Let's Encrypt)]].\\ 
 +Nécessite également les outils :
 +
 +<code>sudo apt-get install -y python3-dev python3-pip python3-tk python3-pil libxml2-dev libxml2 libxslt1-dev libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev postgresql postgresql-contrib supervisor</code>
 +
 +//Remarque:// privilégier l'installation de Python 3.7 (ou ultérieur).
 +
 +Vous devrez également ajouter le domaine __test.sleto.net__ dans le [[Serveur DNS (bind9)]]
 +
 +===== Pré-configuration =====
 +
 +Création d'un utilisateur test:
 +
 +<code>adduser --system --home-dir "/home/test" create-home "test"</code>
 +
 +Création d'un environement virtuel Python:
 +
 +<code>cd /home/test
 +python3 -m virtualenv -p "python3.7" virt</code>
 +
 +===== Installation =====
 +
 +Installer les composants Python dans l'environnement virtuel:
 +
 +<code>cd /home/test
 +source virt/bin/activate
 +pip install -U lucterios-standard diacamma-asso diacamma-syndic diacamma-pro gunicorn psycopg2-binary</code>
 +
 +===== Base de données =====
 +
 +Nous allons créé une base de donnée PostgreSQL:
 +
 +<code>sudo -u postgres psql -c "CREATE USER $DBUSER;"
 +sudo -u postgres psql -c "ALTER USER $DBUSER PASSWORD '$DBPASSWD';"
 +sudo -u postgres psql -c "CREATE DATABASE $DBNAME OWNER $DBUSER;"</code>
 +
 +===== Configuration =====
 +
 +Pour lancer l'installation d'une instance Diacamma:
 +
 +Pour Diacamma Asso:
 +<code>cd /home/test
 +source virt/bin/activate
 +lucterios_admin.py add -n test -p 'diacamma.asso' -m 'lucterios.contacts,lucterios.documents,lucterios.mailing,diacamma.member,diacamma.event,diacamma.accounting,diacamma.invoice,diacamma.payoff' -e "$OPTION" -d $DATABASE</code>
 +
 +Pour Diacamma Syndic:
 +<code>cd /home/test
 +source virt/bin/activate
 +lucterios_admin.py add -n test -p 'diacamma.syndic' -m 'lucterios.contacts,lucterios.documents,lucterios.mailing,diacamma.condominium,diacamma.accounting,diacamma.payoff' -e "$OPTION" -d $DATABASE</code>
 +
 +Avec:
 +<code>OPTION='{"ALLOWED_HOSTS":["localhost","127.0.0.1","test.sleto.net"],"DEBUG": False,"LANGUAGE_CODE": "fr","LOGGING": {"version": 1,"disable_existing_loggers": True}}'
 +DATABASE="postgresql:name=$DBNAME,user=$DBUSER,password=$DBPASSWD,host=localhost"</code>
 +
 +Ensuite, pour définir le mot de passe du compte "admin":
 +<code>cd /home/test
 +source virt/bin/activate
 +lucterios_admin.py security -n test -e "PASSWORD=xxxxx"</code>
 +
 +===== Configuration web =====
 +
 +Générer des documents statics de Diacamma/Django:
 +<code>cd /home/test
 +source virt/bin/activate
 +python "manage_test.py" collectstatic --noinput -l</code>
 +
 +Un certain nombre d'éléments statics sont par contre à supprimer pour des raisons de sécurité:
 +<code>cd /home/test
 +rm -rf test/static/static
 +rm -rf test/static/tmp
 +rm -rf test/static/usr
 +rm -rf test/static/__pycache__
 +rm -rf test/static/settings.py
 +rm -rf test/static/__init__.py
 +</code>
 +
 +Créer une fichier pour supervisor "supervisor-test.conf":
 +<code>
 +[program:%s]\n" % instancename)
 +environment=DJANGO_SETTINGS_MODULE='test.settings'
 +directory=/home/test
 +command=/home/test/virt/bin/gunicorn lucterios.framework.wsgi --bind 0.0.0.0:8100 -w 1 --timeout 600 --access-logfile /home/test/access.log --error-logfile /home/test/error.log
 +user=test
 +autostart=true
 +autorestart=true
 +stdout_logfile=/var/log/supervisor/test.log
 +redirect_stderr=true</code>
 +
 +Créer également un fichier pour nginx "nginx-test":
 +<code>
 +# Configuration du server
 +server {
 +    listen      80;
 +    server_name test.sleto.net;
 +    return 301 https://test.sleto.net/;
 +}
 +
 +server {
 +    listen      443 ssl;
 +    server_name test.sleto.net;
 +    # Set variables
 +    set $workingpath   /home;
 +    set $domain        sleto.fr;
 +    set $subdomain     test;
 +    set $djangoport    8091;
 +
 +    include /opt/ssl/test.sleto.net.conf;
 +
 +    charset     utf-8;
 +    access_log /var/log/nginx/test.sleto.net.access.log;
 +    error_log  /var/log/nginx/test.sleto.net.error.log;
 +    root /home/test/;
 +
 +    client_max_body_size 100M;
 +
 +    gzip on;
 +    gzip_vary on;
 +    gzip_min_length 1024;
 +    gzip_proxied expired no-cache no-store private auth;
 +    gzip_types text/plain text/css text/xml text/javascript application/javascript application/x-javascript application/xml application/json application/pdf;
 +
 +    fastcgi_buffers  16 16k;
 +    fastcgi_buffer_size  32k;
 +
 +    location = /index.html {
 + return 301 $scheme://$host;
 +    }
 +
 +    location /web/ {
 +        alias /home/test/test/static/lucterios.framework/web/;
 +    }
 +
 +    location /static/ {
 +        alias /home/test/test/static/;
 +    }
 +
 +    location / {
 +    proxy_pass http://127.0.0.1:8100;
 + proxy_read_timeout    300;
 + proxy_connect_timeout 300;
 + proxy_redirect        off;
 +    }
 +}
 +</code>
 +
 +Notons que ///opt/ssl/test.sleto.net.conf// contiendra les informations relatives aux clefs privé et public HTTPS/SSL (voir [[Serveur web sécurisé (Nginx / Let's Encrypt)]]).
 +
 +Activer la configuration web par:
 +<code>ln -sf /home/test/nginx-test /etc/nginx/sites-enabled/
 +ln -sf /home/test/supervisor-test.conf /etc/supervisor/conf.d/
 +</code>
 +
 +===== Rechargement =====
 +
 +Pour rafraîchir le supervisor
 +<code>
 +supervisorctl reread
 +supervisorctl add test
 +supervisorctl restart test
 +</code>
 +
 +Pour rafraîchir les services nginx
 +<code>
 +service nginx restart   
 +</code>
 +
 +===== Sauvegarde/restauration =====
 +
 +Des commandes spécifiques Diacamma permette de réaliser la sauvegarde:
 +<code>cd /home/test
 +source virt/bin/activate
 +lucterios_admin.py archive -n test -f "/path/to/savefile"
 +</code>
 +Et la restauration:
 +<code>cd /home/test
 +source virt/bin/activate
 +lucterios_admin.py restore -n test -f "/path/to/restorefile"
 +supervisorctl restart test
 +</code>
 +
 +Mais il est également possible de réaliser une sauvegarde en réalisant un "dump" de la base de donnée:
 +<code>
 +sudo -u postgres pg_dump $DBNAME > backup_data.sql
 +</code>
 +Ainsi que la sauvegarde de fichiers contenu dans "/home/test/test" (excepté "/home/test/test/static") créé par Diacamma.
 +
 +===== Mise à jour =====
 +
 +Pour réaliser une mise à jour:
 +<code>cd /home/test
 +source virt/bin/activate
 +lucterios_admin.py update
 +python "manage_test.py" collectstatic --noinput -l</code>
  
outil_de_gestion_de_structures_de_benevoles_diacamma.txt · Dernière modification: 2021/05/08 13:25 (modification externe)