2017-06-25 1 views
0

Config:l'application Pyramide Test sur localhost via Apache2 ne fonctionne pas

Ubuntu 16.04 LTS x64 
Apache/2.4.18 
libapache2-mod-wsgi-py3 4.3.0-1.1build1 amd64 
Python 3.4.6 (compiled from sources) 
Pyramid running Python 3.4.6-based Virtualenv 

fichier myapp.wsgi contient:

venv = '/path-to-venv/bin/activate_this.py' 
exec(open(venv).read()) 
from pyramid.paster import get_app, setup_logging 
... 

Même résultat lors de l'activation/désactivation venv activation par code dans myapp.wsgi, à-dire encore s'écraser sur 'de pyramid.paster ...' ligne:

ImportError: No module named 'pyramid' 

/etc/apache2/sites availabl e/myapp.conf:

ServerName myapp.localhost 
    DocumentRoot /path-to-myapp-project/ 

    WSGIApplicationGroup %{GLOBAL} 

    WSGIPassAuthorization On 

    WSGIDaemonProcess pyramid user=me group=me threads=4 \ 
      python-path=~/path-to-venv/lib/python3.4/site-packages 

    WSGIScriptAlias//path-to-myapp-project/myapp.wsgi 

    <Directory /path-to-myapp-project/> 
      WSGIProcessGroup pyramid 
      Order deny,allow 
      Require all granted 
    </Directory> 

    ErrorLog ${APACHE_LOG_DIR}/myapp.localhost-error.log 
    CustomLog ${APACHE_LOG_DIR}/myapp.localhost-access.log combined 

Des conseils?

Tout en essayant de pépin installer mod_wsgi dans une nouvelle virtualenv situé en dehors de mon répertoire personnel, il se bloque avec:

/usr/bin/ld: /usr/bin/python3.4.6/lib/libpython3.4m.a(abstract.o): réadressage de R_X86_64_32S en vertu de « _Py_NotImplementedStruct » ne peut être utilisé lors de la création d'un objet partagé; recompilez avec -fPIC 
/usr/bin/python3.4.6/lib/libpython3.4m.a : erreur lors de l'ajout de symboles : Mauvaise valeur 
collect2: error: ld returned 1 exit status 
error: command 'gcc' failed with exit status 1 

---------------------------------------- 
Command "/anvenv/venv_py3.4.6/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-svro6spq/mod-wsgi/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-jfm8wwoj-record/install-record.txt --single-version-externally-managed --compile --install-headers /anvenv/venv_py3.4.6/include/site/python3.4/mod-wsgi" failed with error code 1 in /tmp/pip-build-svro6spq/mod-wsgi/ 
+0

Lisez la documentation de mod_wsgi sur la configuration de l'utilisation d'un environnement virtuel Python. Vous ne le faites pas en utilisant la méthode recommandée et vous ne pouvez pas non plus utiliser '' ~ '' dans un chemin dans la configuration d'Apache. http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html –

+0

@GrahamDumpleton Ok, ont mis en place un python 3.4.6 venv hors du répertoire de base, mais ne peut pas pip installer mod_wsgi de l'intérieur it: erreur: la commande 'gcc' a échoué avec le statut de sortie 1 – ting12

+0

A moins que vous ne puissiez voir les détails du message d'erreur de gcc, vous ne pouvez pas vraiment vous aider. –

Répondre

0

Votre question est une variante de:

et est causée par le fait que Python n'a pas été installé avec une bibliothèque partagée.

Vous devez vous assurer que l'option --enable-shared est fournie au script configure pour Python lors de sa construction à partir du code source et de son installation.

Pour un tas d'autres bonnes pratiques autour de la construction de Python à partir du code source lu:

Il est sur l'utilisation Docker, mais toujours d'actualité lors de la construction de votre propre système.