====== 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 : 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 //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: adduser --system --home-dir "/home/test" create-home "test" Création d'un environement virtuel Python: cd /home/test python3 -m virtualenv -p "python3.7" virt ===== Installation ===== Installer les composants Python dans l'environnement virtuel: cd /home/test source virt/bin/activate pip install -U lucterios-standard diacamma-asso diacamma-syndic diacamma-pro gunicorn psycopg2-binary ===== Base de données ===== Nous allons créé une base de donnée PostgreSQL: 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;" ===== Configuration ===== Pour lancer l'installation d'une instance Diacamma: Pour Diacamma Asso: 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 Pour Diacamma Syndic: 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 Avec: 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" Ensuite, pour définir le mot de passe du compte "admin": cd /home/test source virt/bin/activate lucterios_admin.py security -n test -e "PASSWORD=xxxxx" ===== Configuration web ===== Générer des documents statics de Diacamma/Django: cd /home/test source virt/bin/activate python "manage_test.py" collectstatic --noinput -l Un certain nombre d'éléments statics sont par contre à supprimer pour des raisons de sécurité: 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 Créer une fichier pour supervisor "supervisor-test.conf": [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 Créer également un fichier pour nginx "nginx-test": # 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; 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; } } 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: ln -sf /home/test/nginx-test /etc/nginx/sites-enabled/ ln -sf /home/test/supervisor-test.conf /etc/supervisor/conf.d/ ===== Rechargement ===== Pour rafraîchir le supervisor supervisorctl reread supervisorctl add test supervisorctl restart test Pour rafraîchir les services nginx service nginx restart ===== Sauvegarde/restauration ===== Des commandes spécifiques Diacamma permette de réaliser la sauvegarde: cd /home/test source virt/bin/activate lucterios_admin.py archive -n test -f "/path/to/savefile" Et la restauration: cd /home/test source virt/bin/activate lucterios_admin.py restore -n test -f "/path/to/restorefile" supervisorctl restart test Mais il est également possible de réaliser une sauvegarde en réalisant un "dump" de la base de donnée: sudo -u postgres pg_dump $DBNAME > backup_data.sql 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: cd /home/test source virt/bin/activate lucterios_admin.py update python "manage_test.py" collectstatic --noinput -l