2017-09-28 31 views
0

众所周知,在通过web浏览器发出带有唯一IP或服务器名称的请求后,apache会将其默认静态主页返回给资源管理器。我使用了django和apache以及mod_wsgi来部署我的网站(即在apache web服务器上的django应用程序)。如何将处理路由到views.py中定义的django映射规则,以便在向该服务器运行apache发出请求时动态生成该网站的主页(即索引页)?提前致谢!如何让django渲染默认的主页而不是apache

我加在Apache主 '的httpd.conf' 以下配置:

<VirtualHost 127.0.0.1:80> 

    ServerName 127.0.0.1 
    ServerAlias example.com 
    ServerAdmin [email protected] 

    DocumentRoot /usr/local/www/documents 

    Alias /robots.txt /usr/local/www/documents/robots.txt 
    Alias /favicon.ico /usr/local/www/documents/favicon.ico 

    Alias /media/ /usr/local/www/documents/media/ 

    <Directory /usr/local/www/documents> 
    Require all granted 
    </Directory> 

    WSGIDaemonProcess 127.0.0.1 processes=2 threads=15 display-name=%{GROUP} 
    WSGIProcessGroup 127.0.0.1 

    WSGIScriptAlias//usr/local/www/wsgi-scripts/myapp.wsgi 

    <Directory /usr/local/www/wsgi-scripts> 
    Order allow,deny 
    Allow from all 
    </Directory> 

</VirtualHost> 

代码在myapp.wsgi:

def application(environ, start_response): 
    status = '200 OK' 
    output = b'Hello World!' 

    response_headers = [('Content-type', 'text/plain'), 
         ('Content-Length', str(len(output)))] 
    start_response(status, response_headers) 

    return [output] 

然后我发出127.0.0.1,资源管理器显示的“它工作!',这是apache生成的默认页面,而不是我希望的'Hello world!'。在这种情况下返回。我只是希望在发布IP或站点地址时,将生成默认主页的工作直接委托给django进行动态处理,而不是由Apache返回静态index.html。虽然我配置了WSGIScriptAlias//usr/local/www/wsgi-scripts/myapp.wsgi,但这似乎仍然不起作用。

+0

不,它不*已知*。除非特意提出,否则它不会提供“默认静态主页”。你是如何在第一个地方配置mod_wsgi的? –

+0

正如@DanielRoseman所要求的,提供您正在使用的配置。如果您已经添加了'WSGIScriptAlias// some/path/to/wsgi.py''和其他适当的配置以在适当的位置启用对该资源的访问,那么应该导致WSGI应用程序接管对该站点根目录的请求。如果不是,那么您可能已经虚拟了虚拟主机配置。 –

+0

@GrahamDumpleton提供了配置和必要的信息。 –

回答

0

对于127.0.0.1,虚拟主机不会以这种方式工作,因为它有点特殊。会发生什么情况,除非这是您配置中唯一的VirtualHost,否则Apache将回退到使用找到的第一个VirtualHost定义,通常是默认站点。

所以通常你会:

<VirtualHost *:80> 
    ServerName my.fqdn.host.name 
    ... 
</VirtualHost> 

也就是说,在VirtualHost指令和ServerName没有IP是出现在URL中,而不是IP地址的实际主机名。

之前有没有VirtualHosthttpd.conf或者它是否包括extra/httpd-vhosts.conf,这将导致VirtualHost取代这一个吗?

+0

谢谢Dumpleton先生。 –