【问题标题】:Testing Pyramid application on localhost via Apache2 does not work通过 Apache2 在 localhost 上测试 Pyramid 应用程序不起作用
【发布时间】:2017-11-28 09:07:42
【问题描述】:

配置:

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

myapp.wsgi 文件包含:

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

通过 myapp.wsgi 中的代码启用/禁用 venv 激活时结果相同,即仍然在“from pyramid.paster...”行崩溃:

ImportError: No module named 'pyramid'

/etc/apache2/sites-available/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

有什么建议吗?

当尝试在我的主目录之外的新 virtualenv 中安装 mod_wsgi 时,它崩溃了:

/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/

【问题讨论】:

  • 阅读有关设置使用 Python 虚拟环境的 mod_wsgi 文档。您没有使用推荐的方法,也不能在 Apache 配置的路径中使用 ~modwsgi.readthedocs.io/en/develop/user-guides/…
  • @GrahamDumpleton 好的,已经在主目录之外设置了一个 python 3.4.6 venv,但无法从其中 pip install mod_wsgi:错误:命令“gcc”失败,退出状态为 1
  • 除非能从gcc中看到错误信息的实际细节,否则帮不上你。
  • @GrahamDumpleton 添加了详细信息:他们的意思是我应该重新编译 python 3.4.6,并将“-fPIC”添加到“./configure”或“sudo -H make install”?

标签: python-3.x apache2 mod-wsgi pyramid


【解决方案1】:

在 Pyramid 文档中有一个教程 Running a Pyramid Application under mod_wsgi 从头到尾运行。

【讨论】:

    【解决方案2】:

    您的问题是:

    这是由于 Python 没有与共享库一起安装。

    在从源代码构建并安装 Python 的 configure 脚本时,您需要确保将 --enable-shared 选项提供给它。

    有关从源代码构建 Python 的一系列其他良好实践,请阅读:

    这是关于使用 Docker,但在您自己的系统上构建时仍然相关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-21
      • 2019-03-06
      • 1970-01-01
      • 2018-12-09
      • 2015-02-14
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多