====== Installation ====== Si besoin d'une autre version de python, télécharger la source puis apt install tk-dev cd /opt/python3.6 ./configure --enable-optimizations make make altinstall Utiliser **make altinstall** plutot que **make install** permettra de garder l'install python du system par défaut (python executera le python3.7 du system par defaut) et la commande python3.6 sera disponible ensuite installez virtualenv apt install virtualenv placez vous dans votre répertoire de travail et tapez la commande suivante pour créer un environnement virtuel pour votre version de python3.6 virtualenv .venv3.6 --python=python3.6 Lancez la virtualisation source .venv3.6/bin/activate La commande suivante devrait renvoyer la version 3.6 python --version Vous pouvez maintenant installer tous les modules python que vous souhaitez avec **pip**. Il seront installé dans votre environnement virtuel Pour quitter l'environnement virtuel, tapez la commande deactivate Commande pip pip pip list # liste les modules installés avec leur version pip freeze # liste les modules installés dans un format spécifique pour créer un fichier requirements.txt pip install -r requirements.txt # installe tous les modules écrit dans le fichier requirements.txt généré avec pip freeze pip install nom_du_module pip install nom_du_module==2.3.4 # install une version spécifique d'un module pip install nom_du_module --upgrade # met à jour le module Dans le fichier requirements.txt, on peut remplacer les == par des >= afin d'installer les dernières version des modules listés ===== Installation mod_wsgi ===== voir cette doc https://pypi.org/project/mod-wsgi/ Mais je n'y suis pas arrivé. Finalement j'ai opté pour bjoern (venv3.6) xxx: pip install bjoern Avec un petit script pour le lancer pour django par exemple $ cat run_server_bjoern.py import os, sys from django.core.wsgi import get_wsgi_application import bjoern os.environ.setdefault("DJANGO_SETTINGS_MODULE", "monapp.settings") sys.path.append('/var/www/monapp.com') application = get_wsgi_application() bjoern.run(application,'127.0.0.1',8000) Config Apache en mod reverse proxy Define HOSTNAME monapp.com ServerName ${HOSTNAME} DocumentRoot /var/www/${HOSTNAME} Require all granted ProxyPass / http://127.0.0.1:8000/ ProxyPassReverse / http://127.0.0.1:8000/ ErrorLog /var/log/apache2/${HOSTNAME}_error.log LogLevel warn CustomLog /var/log/apache2/${HOSTNAME}_access.log combined Pour garder le process actif lorsqu'il plante, j'utilise supervisor apt install supervisor Avec la conf # cat /etc/supervisor/conf.d/monapp.conf [program:monapp_prod-worker] process_name=%(program_name)s_%(process_num)02d command=/var/www/monapp.com/venv3.6/bin/python /var/www/monapp.com/run_server_bjoern.py autostart=true autorestart=true user=monuser numprocs=1 redirect_stderr=true stdout_logfile=/var/log/apache2/monapp_worker.log Puis # supervisorctl supervisor> reread monapp_prod-worker: available supervisor> add monapp_prod-worker monapp_prod-worker: added process group supervisor> status monapp_prod-worker:monapp_prod-worker_00 STARTING supervisor> status monapp_prod-worker:monapp_prod-worker_00 RUNNING pid 63019, uptime 0:00:10