【发布时间】:2014-12-29 05:06:13
【问题描述】:
大家好,我在这里遇到了一些麻烦,所以我正在寻求一些建议。
我构建了一个金字塔应用程序,它可以在 localhost 上完美运行,现在我将它上传到 vps 并且遇到了各种麻烦。我的网站托管在 mercurial 上。
请不要引用这个:http://docs.pylonsproject.org/projects/pyramid/en/latest/tutorials/modwsgi/index.html
我已经尝试了很多次并且在 Google 上搜索了很多次,这就是我在这里问这个问题的原因。
我在 python 2.7 上
- 我创建了一个虚拟环境
- 激活虚拟环境
- pip -r requirements 下载所有需求
- 然后 python setup.py 安装
我现在有一个这样的文件夹结构:
appname_dir/
appname_module/
static/
template/
__init__.py
views.py
请记住,我没有将文件夹命名为 appname_dir 和 appname_module。
我在 appname_module 文件夹中创建了我的 app.wsgi 文件,它看起来像这样
from pyramid.paster import get_app, setup_logging
ipath = '/path/to/appname_dir/production.ini'
application = get_app(ipath, 'main')
我尝试创建一个类似于下面的虚拟主机文件
<VirtualHost *:80>
ServerAdmin contact@domain.com
ServerName domain.com
ServerAlias www.domain.com
UseCanonicalName On
WSGIScriptAlias / /path/to/my/app.wsgi
<Directory /path/to/folder/that/contains/app.wsgi>
Order allow,deny
Allow from all
</Directory>
Alias /static /path/to/app/static/folder
<Directory /path/to/app/static/folder>
Order allow,deny
Allow from all
</Directory>
ErrorLog /path/to/app/folder/logs/error.log
LogLevel warn
CustomLog /path/to/app/folder/logs/access.log combined
</VirtualHost>
这行不通
我尝试添加类似于下面的自定义 apache conf 文件
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
WSGIDaemonProcess pyramid user=username group=groupname threads=6 \
python-path=/path/to/virtualenv/site-packages
WSGIScriptAlias / /path/to/app.wsgi
<Directory /path/to/appname_dir>
WSGIProcessGroup pyramid
Order allow,deny
Allow from all
</Directory>
还是不行。通常他们在 apache 错误日志文件中使用此代码会出现 500 错误
Target WSGI script cannot be loaded as Python module
任何人都可以帮助解释发生了什么或如何解决这个问题。请向我指出其他 SO 答案对我花了一整天的时间试图弄清楚这一点没有帮助。
【问题讨论】:
-
您要求不要引用您链接的文档页面,但我注意到您的版本和他们的版本之间存在问题,有什么建议吗?
-
我指的是人们只是说,去阅读....,我今天花了一整天的时间阅读 mod_wsgi 文档,但我仍然处于 0 的状态。你有什么建议可以帮助解决这个问题吗?
-
在您的
application = get_app(ipath, 'main')行中——您使用的 ipath 是一个目录,而在文档中,它是一个指向 .ini 配置文件的链接。阅读文档的第 7 点。 -
这是一个错字 ipath = '/path/to/production.ini' 我会在上面的问题中解决这个问题。
-
你没有提到调整权限以允许 Apache 读取 wsgi 文件——你这样做了吗?还有 'Target...' 错误——在日志文件之前和之后是否有更多信息?