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