Om via een webserver Python scripts te kunnen gebruiken en specifiek Django of Flask voor bijvoorbeeld API deployments zal je de server iets bij moeten werken.
Onderstaand voorbeeld is hoe je dus Mod_wsgi activeert in een Centos7 server voorzien van Apache 2.4. De keuze op Python versie is sowieso 3.x en in dit voorbeeld 3.8.7.
Belangrijk is om root
rechten te hebben. We beginnen met 2 environment variabelen te definiëren:
export PATH=$PATH:/usr/local/bin/ export LD_RUN_PATH=/usr/local/lib/
Hierna zorgen we dat de package apxs
beschikbaar is, die via httpd-devel te vinden is:
yum install -y httpd-devel
Dan is het zaak Python te installeren. Vanwege redenen is Centos7 nog steeds standaard uitgerust met versie 2.7 en dat willen we verder niet gebruiken. Het is dus belangrijk dat de installatie naast de bestaande komt te draaien. Het hele Centos ecosysteem is afhankelijk van de huidige versie. Dat word met ‘make altinstall‘ bepaald.
Nog veel belangrijker is de ‘–enable-shared‘ optie waarme Python op de juiste manier compiled word. Vergeet deze niet!
cd /tmp wget https://www.python.org/ftp/python/3.8.7/Python-3.8.7.tgz tar -xf Python-3.8.7.tgz -C /usr/local/src cd /usr/local/src/Python-3.8.7 ./configure --enable-shared --enable-optimizations make altinstall
Als het goed is kan je daarna Python3.8 starten:
[root@mightyserver ~]# python3.8 Python 3.8.7 (default, Jan 2 2021, 14:19:51) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
Voor we de module mod_wsgi introduceren in Apache moet er nog een kleine update gedaan worden:
/usr/local/bin/python3.8 -m pip install --upgrade pip
Nu kunnen we via ‘Pip’ de installatie van de module uitvoeren en deze configureren:
pip3.8 install mod_wsgi mod_wsgi-express install-module > /etc/httpd/conf.modules.d/02-wsgi.conf systemctl restart httpd
Een controle kan gedaan worden of de module beschikbaar is:
[root@mightyserver ~]# httpd -t -D DUMP_MODULES | grep wsgi wsgi_module (shared)
In de volgende post meer over hoe nu Apache te ‘sturen’ is naar jouw Python project.