首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webfaction + mod_wsgi + django配置问题

Webfaction + mod_wsgi + django配置问题
EN

Stack Overflow用户
提问于 2010-04-28 12:29:40
回答 2查看 1.6K关注 0票数 2

我最近偶然发现了一个问题,即使我解决了这个问题,我也想听听你对什么是正确的/简单的/采用的解决办法的看法。

我正在用Django + python开发网站。当我使用"python“在本地机器上运行它时,默认情况下本地地址是manage.py。

但是,在生产服务器上,我的应用程序还有其他url,带有路径类的"http://server.name/myproj/“。

我需要生成和使用永久的urls。如果我使用{% url视图参数%},我将获得相对于/的路径,因为我的urls.py包含以下内容

代码语言:javascript
复制
urlpatterns = patterns('',
 (r'^(\d+)?$', 'myproj.myapp.views.index'),
 (r'^img/(.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT + '/img' }),
 (r'^css/(.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT + '/css' }),
)

到目前为止,我发现了两种解决方案:

  1. urls.py,包括'/myproj/‘在生产运行时,
  2. 使用request.build_absolute_uri()在views.py中创建链接,或者在模板

中传递一些带有'hostname:port/path’的变量

有没有更好的方法来处理这个问题?谢谢。

更新:问题似乎不是在django,而是在配置的Well方式上。带有URL "hostname.com/myapp“的应用程序的Apache配置包含以下行

代码语言:javascript
复制
WSGIScriptAlias / /home/dreamiurg/webapps/pinfont/myproject.wsgi

因此,SCRIPT_NAME是空的,我看到的唯一解决方案是访问mod_python或从根提供应用程序。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-28 12:43:49

你不需要做什么特别的事。Django授予SCRIPT_NAME环境变量,这个变量是由mod_wsgi设置的,当您服务一个Django站点时,这个变量不是从根目录中设置的,而是自动地将其添加到url反向代码。

如果您使用的是mod_python (不应该使用),您可能需要在您的Apache配置中设置django.root

更新了,我怀疑这是因为Web派系通过Apache的代理实例为Django站点提供服务的方式--这个实例不知道实际的挂载点,这是由Web派系的控制面板确定的。

在这种情况下,您可能需要在SCRIPT_NAME脚本中手动设置.wsgi。我认为这应该是可行的:

代码语言:javascript
复制
_application = django.core.handlers.wsgi.WSGIHandler()

def application(environ, start_response):
    os.environ['SCRIPT_NAME'] = '/myproj/'
    return _application(environ, start_response)
票数 3
EN

Stack Overflow用户

发布于 2010-04-29 01:11:05

更改:

代码语言:javascript
复制
WSGIScriptAlias / /home/dreamiurg/webapps/pinfont/myproject.wsgi

至:

代码语言:javascript
复制
WSGIScriptAlias /myproj /home/dreamiurg/webapps/pinfont/myproject.wsgi

然后将WebFaction的nginx前端配置更改为后端的“/myproj”,而不是“/”。

这应该是所需的一切。您不应该在urls.py中使用'/myproj‘前缀。

换句话说,只需确保后端的安装点与安装在前端的位置相同。

修改WSGI脚本文件可以伪造SCRIPT_NAME,尽管它可能工作,但通常不建议允许Apache/mod_wsgi做正确的事情,这可能会有其他影响。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2729368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档