继续在Dreamhost上配置Django
上次在Dreamhost上配置Django,能够看到Django启动的画面后,接着就好几天没玩它了。今天先把Django的admin配起来。
《1.创建media目录》
Django建议所有的静态文件应该交给Apache管理。官方教程(Django on Dreamhost)使用专门管理media的子域名media.mydomain.com,有点太小题大作了。我觉得在mydomain.com下建目录更好。一个media目录用于存放自己的媒体,一个admin_media链接到django的admin的media。如下(顺便把jQuery也装上):
$> export SOFTWAREHOME=$HOME/mysoftware $> export DOMAINROOT=$HOME/org.jbobos.onlinelist $> ln -s $SOFTWAREHOME/Django-1.0.2-final/django/contrib/admin/media $DOMAINROOT/admin_media $> mkdir $DOMAINROOT/media $DOMAINROOT/media/js $> cd $DOMAINROOT/media/js $> wget http://jqueryui.com/repository/files/jquery-ui-personalized-1.5.3.zip $> unzip jquery-ui-personalized-1.5.3.zip
《2.修改.htaccess》
这时候浏览器还看不到media,因为.htaccess将所有的HTTP请求都转给了dispatch.fcgi。
$> vi $DOMAINROOT/.htaccess
修改后的.htaccess文件如下,使media和admin_media开头的请求不要被转发。.htaccess的前四行禁止自己被浏览,「Options -Indexes」禁止目录被浏览。
<Files .htaccess> order allow,deny deny from all </Files> Options -Indexes RewriteEngine On RewriteBase / RewriteRule ^(media|admin_media)/.*$ - [L] RewriteRule ^(dispatch\.fcgi/.*)$ - [L] RewriteRule ^(.*)$ dispatch.fcgi/$1 [L]
现在在浏览器中输入http://onlinelist.jbobos.org/media/js/example.html,可以看到jQuery UI的sample了。mod_rewrite的详细文档请参照Apache Module mod_rewrite – URL Rewriting Engine。
《3.修改settings.py》
$> export PROJECTSHOME=$HOME/myprojects $> export PROJECTNAME=djsite_onlinelist $> vi $PROJECTSHOME/$PROJECTNAME/settings.py
settings.py文件中被修改的部分如下:
import os
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = SITE_ROOT+'/onlinelist.db'
MEDIA_URL = 'http://onlinelist.jbobos.org/media/'
ADMIN_MEDIA_PREFIX = 'http://onlinelist.jbobos.org/admin_media/'
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
)
注意, MEDIA_ROOT 是用于保存上传文件的目录,如无必要,保留其为空即可。 Django官方文档中关于 MEDIA_ROOT 和 MEDIA_URL 的说明很不详细,我参考的是 Django and Static Files。关于数据库,看过Fenng写的《SQLite数据库是中小站点CMS的最佳选择》后,觉得就用sqlite3也挺好的。在设置DatabaseName的时候我用了相对路径,这样不用在source里把路径写死。详细请参考Django Settings Tip。
《4.初始化admin数据库》
$> python $PROJECTSHOME/$PROJECTNAME/manage.py syncdb
按照提示创建管理员用户。数据库同步完成后,在浏览器中输入http://onlinelist.jbobos.org/admin/就可以看到登录画面了。
《5.其他问题》
在浏览器地址栏输入一个未定义的地址,会引发异常。DEBUG=True的话,会看到Django的404页面; DEBUG=False的话,会看到一个更ugly的Traceback,显示「TemplateDoesNotExist : 500.html」。这个问题稍后再解决。
T.T.T said,
February 19, 2009 @ 23:43
《4.初始化admin数据库》运行manage.py syncdb的时候老是出错,所以用python manage.py syncdb来运行。后来发现原来我的manage.py是在windows上创建的,换行符为CRLF,在Linux上shell解释通不过。改为LF换行就好了。
Django 的 urls 匹配 | 清風徐来,驚涛拍岸 said,
February 20, 2009 @ 15:55
[...] 另外在templates下创建了404.html和500.html。上述urls中没有匹配到的URL都会显示404.html(状态码404),系统障害的时候会显示500.html(状态码500)。这样把昨天《继续在Dreamhost上配置Django》的遗留问题也解决了。 [...]