Comme le titre l'indique "Comment installer mod_wgsi pour python3.5 sur CentOS 7"?
$ pip3.5 install mod_wgsi n'a pas fonctionné
Collecting mod_wgsi
Could not find a version that satisfies the requirement mod_wgsi (from versions: )
No matching distribution found for mod_wgsi
L'installation de sudo yum libapache2-mod-wsgi-py3 a également échoué:
Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-manager
This system is not registered with Subscription Management. You can use subscription-manager to register.
Loading mirror speeds from cached hostfile
* base: mirror.daniel-jost.net
* epel: mirrors.n-ix.net
* extras: mirror.daniel-jost.net
* ius: mirror.amsiohosting.net
* remi: mirror.23media.de
* remi-php56: mirror.23media.de
* remi-safe: mirror.23media.de
* updates: mirror.daniel-jost.net
No package libapache2-mod-wsgi-py3 available.
Error: Nothing to do
Toutes les suggestions sur la façon d'exécuter Apache2.4 + mod_wsgi avec python3.5 sur CentOS 7 sont les bienvenues!
Je vois que le repo IUS est déjà activé. Plutôt que de sauter à travers les cerceaux SCL, vous pouvez simplement installer un package normal.
yum install python35u-mod_wsgi
Cela utilisera des emplacements de système de fichiers standard pour fonctionner avec le stock Apache HTTPD 2.4.
/etc/httpd/conf.modules.d/10-wsgi-python3.5.conf
/usr/lib64/httpd/modules/mod_wsgi_python3.5.so
J'ai essayé de suivre réponse de Carl , mais cela n'a pas résolu le problème. Il s'avère que la version que j'ai installée nécessitait des étapes de configuration supplémentaires après l'installation.
J'ai regardé le dossier modules
d'Apache avant d'installer le mod_wsgi
mise à niveau:
$ ls -l /lib64/httpd/modules
[...]
-rwxr-xr-x. 1 root root 172800 Oct 30 22:44 mod_wsgi.so
J'ai ensuite installé le référentiel SCL et cherché à voir quelles versions de mod_wsgi
sont disponibles.
$ Sudo yum install -q -y centos-release-scl
[...]
$ yum search mod_wsgi
[...]
koschei-frontend.noarch : Web frontend for koschei using mod_wsgi
mod_wsgi.x86_64 : A WSGI interface for Python web applications in Apache
python27-mod_wsgi.x86_64 : A WSGI interface for Python web applications in Apache
python33-mod_wsgi.x86_64 : A WSGI interface for Python web applications in Apache
rh-python34-mod_wsgi.x86_64 : A WSGI interface for Python web applications in Apache
rh-python35-mod_wsgi.x86_64 : A WSGI interface for Python web applications in Apache
rh-python36-mod_wsgi.x86_64 : A WSGI interface for Python web applications in Apache
viewvc-httpd-wsgi.noarch : ViewVC configuration for Apache/mod_wsgi
[...]
J'utilise Python 3.6, j'ai donc installé la version correspondante et redémarré Apache.
$ Sudo yum install -q -y rh-python36-mod_wsgi
[...]
$ Sudo systemctl restart httpd
Malheureusement, cela n'a pas résolu le problème. Quand j'ai regardé dans le dossier modules
d'Apache, rien n'avait changé. Bizarre!
$ ls -l /lib64/httpd/modules
[...]
-rwxr-xr-x. 1 root root 172800 Oct 30 22:44 mod_wsgi.so
Alors qu'est-ce qui a été installé?
$ rpm -ql rh-python36-mod_wsgi
/opt/rh/httpd24/root/etc/httpd/conf.modules.d/10-rh-python36-wsgi.conf
/opt/rh/httpd24/root/usr/lib64/httpd/modules/mod_rh-python36-wsgi.so
/opt/rh/rh-python36/root/usr/share/doc/rh-python36-mod_wsgi-4.5.18
/opt/rh/rh-python36/root/usr/share/doc/rh-python36-mod_wsgi-4.5.18/CREDITS.rst
/opt/rh/rh-python36/root/usr/share/doc/rh-python36-mod_wsgi-4.5.18/LICENSE
/opt/rh/rh-python36/root/usr/share/doc/rh-python36-mod_wsgi-4.5.18/README.rst
Il a installé les fichiers dont j'ai besoin, mais il ne les a pas mis à un endroit utile. Avec quelques indices du README.rst
fichier, je les ai copiés au bon endroit.
Sudo cp /opt/rh/httpd24/root/usr/lib64/httpd/modules/mod_rh-python36-wsgi.so /lib64/httpd/modules
Sudo cp /opt/rh/httpd24/root/etc/httpd/conf.modules.d/10-rh-python36-wsgi.conf /etc/httpd/conf.modules.d
Sudo systemctl restart httpd
J'ai maintenant la bonne version de mod_wsgi
, et mon Django s'exécutera sous Apache.
Avez-vous vérifié la collection de logiciels rh-python35 qui fournit un package rh-python35-mod_wsgi?
Pour plus d'informations sur SCL, voir:
J'utiliserais les packages SCL pour python 3.6 (mais n'hésitez pas à remplacer 3.5 ci-dessous).
Commencer:
yum install centos-release-scl
yum install rh-python36 rh-python36-mod_wsgi
Notez que cela apportera le package SCL httpd24-httpd
et placez le fichier mod_wsgi dans cette installation. Je vous recommande d'utiliser cette installation et de ne pas installer le package de base CentOS httpd
. Au moment de l'écriture, pour CentOS 7, le package httpd
est 2.4.6 et le httpd24-httpd
le package est 2.4.37.
Ensuite, vous créez un virtualenv avec:
/opt/rh/rh-python36/root/usr/bin/python -m venv /path/to/venv36
source /path/to/venv36/bin/activate
pip install ...
Vous pouvez maintenant mettre la configuration de votre site dans /opt/rh/httpd24/root/etc/httpd/conf.d/mysite.conf
, qui pourrait contenir quelque chose comme:
<VirtualHost *:80>
LoadModule wsgi_module modules/mod_wsgi.so
ErrorLog /var/log/httpd24/mysite-err.log
CustomLog /var/log/httpd24/mysite.log combined
# recommended way of setting Django_SETTINGS_MODULE http://stackoverflow.com/a/25496668/3189
WSGIProcessGroup mysite.settings.production
WSGIDaemonProcess mysite.settings.production python-path=/path/to/mysite/:/path/to/venv36/lib/python3.6/site-packages
WSGIScriptAlias / /path/to/mysite/wsgi.py process-group=mysite application-group=%{GLOBAL}
</VirtualHost>
Vous démarrez maintenant le SCL Apache avec:
systemctl start httpd24-httpd
Et votre site devrait fonctionner.