3

我已经完成了第一个基于 django 的网站,并且准备在 liveserver 上进行部署。但是,在调整和测试时,我不希望这个网站现在对公众可见。

在 PHP 站点上,我总是通过 .htaccess 使用基本的 http 身份验证来进行最后的更改。这是一个拒绝访问整个站点的两个班轮。

理想情况下,我想运行这样的环境:

  • static.mydomain.com(由 apache2 为静态文件提供服务)
  • mydomain.com(由具有 mod_wsgi 最新稳定版本的 apache2 提供 -> 可供公众使用)
  • dev.mydomain.com(由带有 mod_wsgi 开发/测试的 apache2 提供 -> 不可用于公共(基本身份验证))

这可以用 django/apache2/mod_wsgi 完成吗?

4

2 回答 2

4

您可以为您的虚拟主机设置基本身份验证dev.mydomain.com。查看http://httpd.apache.org/docs/2.2/mod/mod_auth_basic.htmlhttp://httpd.apache.org/docs/2.2/vhosts/name-based.html了解更多详情

编辑:您的虚拟主机配置将类似于:

<VirtualHost *:80>

    ServerName mydomain.com
    DocumentRoot /srv/www/wsgi

    <Directory /srv/www/wsgi>
        Order allow,deny
        Allow from all
    </Directory>

    WSGIScriptAlias / /srv/www/wsgi/app.wsgi

</VirtualHost>

<VirtualHost *:80>

    ServerName dev.mydomain.com
    DocumentRoot /srv/www/wsgi-dev

    <Directory /srv/www/wsgi-dev>
        Order allow,deny
        Allow from all
    </Directory>

    WSGIScriptAlias / /srv/www/wsgi-dev/app.wsgi

    <Location />
        AuthType Basic
        AuthName "Restricted Files"
        AuthUserFile /usr/local/apache/passwd/passwords
        Require valid-user
    </Location>

</VirtualHost>
于 2012-08-01T15:07:05.943 回答
1

mod_wsgi 不在乎你是否在上面使用 HTTP 身份验证。唯一的规定是,如果您希望它对 WSGI 应用程序可见,那么您需要使用WSGIPassAuthorization,但在这种情况下这不是问题,因为 Django 有自己的独立于 HTTP auth 的身份验证方案。

于 2012-08-01T15:07:26.850 回答