web-dev-qa-db-fra.com

Comment installer mod_wgsi pour Apache 2.4+ avec python3.5 sur CentOS 7

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!

10
uzla

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
10
carlwgeorge

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.

Contexte

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

Étapes de configuration supplémentaires

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.

10
Don Kirkby

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:

1
Remi Collet

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.

0
Hamish Downer