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.
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)
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
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
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;"
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"
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/
Pour rafraîchir le supervisor
supervisorctl reread supervisorctl add test supervisorctl restart test
Pour rafraîchir les services nginx
service nginx restart
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.
Pour réaliser une mise à jour:
cd /home/test source virt/bin/activate lucterios_admin.py update python "manage_test.py" collectstatic --noinput -l