Django用户登录可以使用dev-server,但不能使用bitnami djangostack上的apache2



我已经完成了与DJango一起开发学习网站的书,该书将带你创建一个基本的书签共享网站,只要我在DJango开发服务器上运行它,这一切都可以按照书中的描述进行。我现在正试图在运行Ubuntu 14.04的虚拟机上使用apache进行设置,我已经在该虚拟机上安装了bitnami django堆栈(https://bitnami.com/stack/django)。

我不得不修改httpd-app.conf和settings.py,以考虑到项目文件不在项目的顶级文件夹中(开发服务器似乎会自动考虑这一点),并且我可以访问网站的各个页面。

该网站包括一个通过django.contrib.auth的简单用户登录系统,这意味着用户必须登录才能访问某些页面,这在开发服务器上运行良好,但它似乎无法使用apache,我只是在点击登录页面上的提交按钮后返回到同一页面。我确实通过谷歌搜索找到了一个参考,但没有提供解决方案。

django文档中确实包含了有关授权的信息(https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/apache-auth/)但a)这似乎是指阻止访问网站文件夹,而不是授权个人视图(这就是书中的应用程序所做的),b)我已经做了那里描述的更改,似乎没有什么区别。

我还浏览了许多通过谷歌发现的涉及用户授权的网页,但其中大多数都涉及django的早期版本,以及django 1.7(我正在使用)中似乎没有的参考功能或设置,或者没有直接解决我的问题。在花了几个小时的时间之后,作为一个django新手,我非常困惑。我认为这一定是一个微不足道的问题,我很确定有多种设置可以解决它,但我似乎无法解决它,任何关于如何做到这一点的帮助或教程/指南链接都将不胜感激。我能为django找到的大多数培训材料都使用内置的开发服务器(并非毫无道理),即使他们提到在生产服务器上的部署,基本上也只是说这超出了他们的范围,没有提供任何有用的东西。

我正在张贴我认为是相关的文件如下:

httpd-app.conf(来自django项目conf文件夹):

<IfDefine !IS_DJANGOSTACK_LOADED> 
Define IS_DJANGOSTACK_LOADED
WSGIDaemonProcess wsgi-djangostack processes=2 threads=15 display-name=%{GROUP}
</IfDefine> 
<Directory "/home/george/djangostack-1.7.4-0/apps/django/django_projects/django_webtest_02/django_webtest_02">
    Options +MultiViews
    AllowOverride All
    <IfVersion < 2.3 >
        Order allow,deny
        Allow from all
    </IfVersion>
    <IfVersion >= 2.3>
        Require all granted
    </IfVersion>
    WSGIProcessGroup wsgi-djangostack
WSGIApplicationGroup %{GLOBAL}
    <IfVersion < 2.3 >
        Order allow,deny
        Allow from all
    </IfVersion>
    <IfVersion >= 2.3>
        Require all granted
    </IfVersion>
</Directory>
Alias /static "/home/george/djangostack-1.7.4-0/apps/django/lib/python2.7/site-packages/django/contrib/admin/static"
WSGIScriptAlias /django_webtest_02 '/home/george/djangostack-1.7.4-0/apps/django/django_projects/django_webtest_02/django_webtest_02/wsgi.py'

httpd-vhosts.conf

<VirtualHost *:8080>
    ServerName djangostack.example.com
    ServerAlias www.djangostack.example.com
    DocumentRoot "/home/george/djangostack-1.7.4-0/apps/django/django_projects/django_webtest_02/django_webtest_02"
    Include "/home/george/djangostack-1.7.4-0/apps/django/django_projects/django_webtest_02/conf/httpd-app.conf"
</VirtualHost>
<VirtualHost *:8443>
    ServerName djangostack.example.com
    ServerAlias www.djangostack.example.com
    DocumentRoot "/home/george/djangostack-1.7.4-0/apps/django/django_projects/django_webtest_02/django_webtest_02"
    SSLEngine on
    SSLCertificateFile "/home/george/djangostack-1.7.4-0/apps/django/django_projects/django_webtest_02/conf/certs/server.crt"
    SSLCertificateKeyFile "/home/george/djangostack-1.7.4-0/apps/django/django_projects/django_webtest_02/conf/certs/server.key"
    Include "/home/george/djangostack-1.7.4-0/apps/django/django_projects/django_webtest_02/conf/httpd-app.conf"
</VirtualHost>

来自apachehttpd.conf文件(该文件很长,无法完整发布,因此我在这里只显示了我根据所查看的各种网站添加内容的最后一部分):

Include "conf/deflate.conf"
Include conf/pagespeed.conf
Include conf/pagespeed_libraries.conf
WSGIScriptAlias / /home/george/.virtualenvs/django_webtest_02/wsgi.py
LoadModule wsgi_module modules/mod_wsgi.so
WSGIPythonHome /home/george/djangostack-1.7.4-0/python
# virtualenv
WSGIPythonPath /home/george/.virtualenvs/django_webtest_02/lib/python2.7/site-packages
WSGIPassAuthorization On
# The following lines prevent .user.ini PHP settings files from being viewed by Web clients.
<Files ".user.ini">
<IfVersion < 2.3 >
    Order allow,deny
    Deny from all
</IfVersion>
<IfVersion >= 2.3>
    Require all denied
</IfVersion>
</Files>
# Security 
ServerSignature Off
ServerTokens Prod
TraceEnable Off
Include "/home/george/djangostack-1.7.4-0/apache2/conf/ssi.conf"
Include "/home/george/djangostack-1.7.4-0/apache2/conf/bitnami/bitnami.conf"
Include "/home/george/djangostack-1.7.4-0/apps/django/conf/django.conf"

最后一点是,我使用的是virtualenv,但遵循了此处的说明(https://community.bitnami.com/t/how-to-get-virtualenv-working-on-djangostack/765)据我所知,这没有任何问题。

如有任何帮助或指导,我们将不胜感激。

我一直在使用MySQL Workbench查看users表,这看起来不错,这表明数据库运行正常,但当我尝试进行迁移时,它出现了一条错误消息,表明没有安装python-mysqldb。bitnami django堆栈包括mysql,但我在网上发现的一些评论表明,默认情况下不包括python mysqldb,所以我用pip安装了它。

我之前曾通过我的django应用程序创建了几个用户,所以我不确定如果需要python-mysqldb但缺少它,我是如何做到这一点的。

但是我仍然无法登录,所以我检查了Apache错误日志(我以前应该这样做),它说我试图登录的用户没有被授权,所以我从数据库中清除了users表,并创建了一些新用户,它让我可以毫无问题地与其中一个新用户登录。

这对我来说强调了有人来解决问题的价值——我本可以再花一天(或更长时间)试图弄清楚,但这些评论让我做了一些不同的事情,用不同的方式看待问题,这让我找到了解决方案。再次感谢。

最新更新