Bonjour,
Je partage ici les étapes manuelles que j'ai exécutées pour installer Diacamma Syndic sur un VPS sur Ubuntu 22.04.
Ces étapes n'utilisent pas d'environnement virtuel Python (le VPS est dédié à Diacamma, par ailleurs lors de précédentes tentatives je ne parvenais à installer Qt au sein d'un venv).
Sécurisation VPS
Avant tout, une bonne pratique est de sécuriser le VPS (notamment activer un firewall).
Prérequis
Librairies Python
sudo apt install build-essential python3-dev python3-pip python3-tk python3-pil python3-pyqt5 qtbase5-dev python3-cairo
Autres librairies de base
sudo apt install libxml2 libxml2-dev libxslt1-dev libjpeg-dev libfreetype6 libfreetype6-dev libpq-dev libssl-dev zlib1g-dev libcairo2 libcairo2-dev
Librairies base de données
sudo apt install postgresql postgresql-contrib
Librairies serveur
sudo apt install gunicorn nginx
Configuration de la base de donnéessudo -u postgres psql -c "CREATE USER my_db_user;"
sudo -u postgres psql -c "ALTER USER my_db_user PASSWORD 'my_db_password';"
sudo -u postgres psql -c "CREATE DATABASE my_db OWNER my_db_user;"
Note: cet utilisateur (ici my_db_user) est dédié à la base de données (et donc indépendant de l'utilisateur Linux ou de l'utilisateur Diacamma).
Installation de l'application Diacamma
Installation
pip install -U lucterios-standard diacamma-asso diacamma-syndic diacamma-pro psycopg2-binary
Ajout de Diacamma au path: ouvrir le fichier bashrc
puis ajouter cette ligne à la fin du fichier
export PATH="$PATH:$HOME/.local/bin"
Instance (syndic)
Création du dossier de travail
mkdir /home/my_linux_user/lucterios
cd /home/my_linux_user/lucterios
Définition des paramètres
OPTION='{"ALLOWED_HOSTS": ["localhost", "127.0.0.1", "www.my_site.com"], "LANGUAGE_CODE": "fr"}, "DEBUG": "False", "LOGGING": {"version": "1", "disable_existing_loggers": "True"}}'
DATABASE='postgresql:name=my_db,user=my_db_user,password=my_db_password,host=localhost'
Création de l'instance
lucterios_admin.py add -n my_diacamma_instance -p 'diacamma.syndic' -m 'lucterios.contacts,lucterios.documents,lucterios.mailing,diacamma.condominium,diacamma.accounting,diacamma.payoff' -e "$OPTION" -d $DATABASE
Définition du mot de passe administrateur
lucterios_admin.py security -n my_diacamma_instance -e "PASSWORD=my_diacamma_admin_password"
Nettoyage
python manage_my_diacamma_instance.py collectstatic --noinput -l
rm -rf my_diacamma_instance/static/pycache
rm -rf my_diacamma_instance/static/settings.py
rm -rf my_diacamma_instance/static/init.py
Web
Création d'un fichier de configuration NGinx
sudo nano /etc/nginx/sites-available/lucterios
Avec le contenu suivant:
server {
listen 80;
server_name www.my_site.com;
return 301 https://www.my_site.com/;
}
server {
listen 443;
server_name www.my_site.com;
charset utf-8;
access_log /var/log/nginx/www.my_site.com.access.log;
error_log /var/log/nginx/www.my_site.com.error.log;
root /home/my_linux_user/lucterios/;
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/my_linux_user/lucterios/my_diacamma_instance/static/lucterios.framework/web/;
}
location /static/ {
alias /home/my_linux_user/lucterios/my_diacamma_instance/static/;
}
location / {
proxy_pass http://127.0.0.1:8100;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
}
}
Activtion du site
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/lucterios /etc/nginx/sites-enabled/
Sécurisation SSL:
www.digitalocean.com/community/tutorials...rypt-on-ubuntu-20-04
Changement de l'utilisateur nginx, afin que Nginx puisse accéder aux fichiers Diacamma: ouvrir ce fichier:
sudo nano /etc/nginx/nginx.conf
puis remplacer l'utilisateur nginx par:
Redémarrage du serveur
sudo systemctl restart nginx
Service
Création d'un fichier service
sudo nano /etc/systemd/system/my_diacamma_instance.service
avec le contenu suivant:
[Unit]
Description=Diacamma Syndic
After=network.target
[Service]
User=my_linux_user
WorkingDirectory=/home/my_linux_user/lucterios
Environment="DJANGO_SETTINGS_MODULE=my_diacamma_instance.settings"
ExecStart=gunicorn lucterios.framework.wsgi --bind=127.0.0.1:8100 -w 1 --timeout 600 --access-logfile /home/my_linux_user/lucterios/access.log --error-logfile /home/my_linux_user/lucterios/error.log
Restart=always
RestartSec=30
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
Redémarrage du service
sudo systemctl daemon-reload
sudo systemctl enable my_diacamma_instance