Sur Ubuntu 14.04, l'utilisation d'Apache2 avec le paquet libapache2-mod-wsgi-py3 installé donne des erreurs dans /var/log/apache2/error.log
La façon de se reproduire est simple:
sudo apt-get install apache2
sudo service apache2 restart
# /var/log/apache2/error.log is "clean"
sudo apt-get install libapache2-mod-wsgi-py3
sudo service apache2 restart
/var/log/apache2/error.log donne l'erreur suivante:
[Mon Jan 05 16:51:53.641332 2015] [:error] [pid 3141:tid 140703516379008] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Mon Jan 05 16:51:53.643563 2015] [:error] [pid 3141:tid 140703516379008] Traceback (most recent call last):
[Mon Jan 05 16:51:53.643633 2015] [:error] [pid 3141:tid 140703516379008] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Mon Jan 05 16:51:53.644350 2015] [:error] [pid 3141:tid 140703516379008] assert tlock is not None
[Mon Jan 05 16:51:53.643449 2015] [:error] [pid 3140:tid 140703516379008] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Mon Jan 05 16:51:53.644456 2015] [:error] [pid 3140:tid 140703516379008] Traceback (most recent call last):
[Mon Jan 05 16:51:53.644514 2015] [:error] [pid 3140:tid 140703516379008] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Mon Jan 05 16:51:53.645052 2015] [:error] [pid 3140:tid 140703516379008] assert tlock is not None
[Mon Jan 05 16:51:53.645119 2015] [:error] [pid 3141:tid 140703516379008] AssertionError:
[Mon Jan 05 16:51:53.647513 2015] [:error] [pid 3140:tid 140703516379008] AssertionError:
Comment le faire fonctionner sans erreur?
virtualenv -p python3.4 DIRECTORY
, ou pour 3.4+, mieux:pyvenv-3.4 DIRECTORY
.cannot open shared object file: No such file or directory
) en essayant de le faire, n'oubliez pas de changer de version à l'étape 3. J'utilisais Python 3.5, 64 bits.mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so
. Si vous ne savez pas de quelle version vous disposez, allez dans le dossier (/usr/lib/apache2/modules/
) et regardez. Cette réponse semble être basée sur python 32 bits 3.4.sudo /venv_path/bin/mod_wsgi-express install-module
à l'étape 3 imprimera les chemins que vous devez mettre dans leswsgi_express
fichiersJe voulais juste ajouter quelque chose à la réponse acceptée fournie par samb.
Les lignes de configuration réelles que vous devez ajouter à la configuration du module sont celles générées par la
mod_wsgi-express install-module
commande (ce n'était pas explicite dans la réponse acceptée).De plus, dans mon cas (et selon la documentation du module mod_wsgi - ce n'était probablement pas le cas lorsque la réponse acceptée a été écrite), je n'ai pas entré de
wsgi_express.*
fichiersmods-available
, mais seulementwsgi.*
, et il suffisait de remplacer lewsgi.load
fichier par le nouvelle configuration en exécutantBien sûr, cela écraserait tout le fichier, alors faites attention au cas où vous auriez plus de directives dedans.
la source