我是使用 Django 进行 Web 开发的新手,所以请多多包涵,并提前感谢您的帮助。
我在学习的时候一直在使用 Django 自己的 web 服务器和 SQLite。但是,现在我正在努力为我的下一个项目设置更复杂的设置。
据我所知,我的设置(Apache、Python、mod_wsgi、PostgreSQL 服务器、psycopg 和 Django)应该可以正常工作。我创建了我的 Django 项目并在我的浏览器上访问了 localhost,在那里我得到了“欢迎使用 Django!它成功了!” 页。但是,当我尝试启用管理员并访问 localhost/admin/ 时,我收到以下错误(请注意,我可以使用 Django 自己的 Web 服务器访问此页面而不会出错):
OperationalError at /admin/
FATAL: Role "_www" does not exist
Request Method: GET
Request URL: http://localhost/admin/
Django Version: 1.4.3
Exception Type: OperationalError
Exception Value: FATAL: role "_www" does not exist
Exception Location: /Library/Python/2.7/site-packages/psycopg2/__init__.py in connect, line 178
我猜 PostgreSQL 或 psycopg 有问题,但我不确定到底是什么。这就是我到达这里的方式:
- Mac OS X Mountain Lion (10.8.2) 全新安装。
- 从 Mac App Store 安装 Xcode,然后从 Xcode 的首选项安装命令行工具。
- 没有更新 Apache 或 Python,我使用的是默认安装的任何内容(Apache 2.2.22 和 Python 2.7.2)。
从源代码安装 mod_wsgi 3.4
$ curl -O http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz $ tar xvfz mod_wsgi-3.4.tar.gz $ cd mod_wsgi-3.4 $ ./configure $ make
(注意:我必须输入以下行才能使“make”工作:)
$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain $ make install
编辑 httpd.conf,添加以下内容并重新启动 Apache:
LoadModule wsgi_module libexec/apache2/mod_wsgi.so
- 通过下载 Postgres.app ( http://postgresapp.com ) 并将其复制到我的 Applications 文件夹来安装 PostgreSQL 9.2.2。
运行应用程序,将以下内容添加到我的 ~/.bash_profile(终端默认使用 Postgres.app 的 psql,而不是 Mac OS X 上预装的),然后创建一个新数据库以与我的 django 一起使用项目:
PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"
从源代码安装 psycopg 2.4.6。我下载了文件,将其解压缩,然后从解压缩的目录中:
$ python setup.py install
从源代码安装 Django 1.4.3。创建了一个新项目和一个新应用程序。编辑 settings.py 以取消注释管理应用程序并输入我的数据库设置(如 Postgres.app 的网站所述:http: //postgresapp.com/documentation#toc_3)。数据库设置如下所示:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'my_db_name', 'USER': '', 'PASSWORD': '', 'HOST': '', 'PORT': '', } }
编辑 urls.py 以取消注释与管理相关的行:
from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)), )
在 https.conf 末尾添加以下文本:
WSGIScriptAlias / /Users/antubel/Projects/Django/antubel_com/antubel_com/wsgi.py WSGIPythonPath /Users/antubel/Projects/Django/antubel_com <Directory /Users/antubel/Projects/Django/antubel_com> <Files wsgi.py> Order deny,allow Allow from all </Files> </Directory>
重新启动阿帕奇。试图在我的浏览器上加载 localhost/admin/ 并得到上述错误。
请帮忙 :)
谢谢, 达苏维亚