====== 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