February 20, 2009 at 15:55
· Filed under Uncategorized
昨天把Djangoçš„adminé…å¥½äº†ï¼ŒåŒæ—¶ä¹Ÿå†™äº†ä¸€ä¸ªHello Onlinelistï¼çš„app放上去,一切看起æ¥å¾ˆç¾Žã€‚
ç„¶åŽå°±æƒ³æŠŠonlinelist.jbobos.orgåŠ åˆ°Googleçš„WebMaster里,结果å‘现Google说这个网站没有404ï¼Œæ— æ³•é€šè¿‡Verifyã€‚åŽŸæ¥æˆ‘写的urls.py,匹é…了所有的URL到Viewçš„index函数,而这个index永远返回“Hello Onlinelistï¼â€æ‰€ä»¥æ°¸è¿œä¸ä¼šæœ‰æ‰¾ä¸åˆ°é¡µé¢çš„æƒ…况。
修改å‰çš„urls.py
urlpatterns = patterns('',
(r'^admin/(.*)', admin.site.root),
(r'^(.*)$', include('djsite_onlinelist.onlinelist.urls')),
 #这里拦截了所有的URL,往åŽä¼ çš„å—符串是空。
)
修改åŽçš„urls.py
urlpatterns = patterns('',
(r'^admin/(.*)', admin.site.root),
(r'', include('djsite_onlinelist.onlinelist.urls')),
#把所有的URL一个å—䏿¼çš„ä¼ ç»™onlinelistçš„urls。
)
onlinelist的urls.py
urlpatterns = patterns('djsite_onlinelist.onlinelist.views',
(r'^$', 'index'),
#空URL调用index,返回Hello Onlinelistï¼ï¼Œçжæ€ç 200
(r'^notfound', 'notfound'),
#notfound返回HttpResponseNotFound,状æ€ç 404
)
å¦å¤–在templates下创建了404.htmlå’Œ500.html。上述urls䏿²¡æœ‰åŒ¹é…到的URL都会显示404.html(状æ€ç 404),系统障害的时候会显示500.html(状æ€ç 500ï¼‰ã€‚è¿™æ ·æŠŠæ˜¨å¤©ã€Šç»§ç»åœ¨Dreamhost上é…ç½®Django》的é—留问题也解决了。
《å‚考资料》
Django官方文档:URL dispatcher,Writing Views。
Permalink
February 19, 2009 at 16:41
· Filed under Uncategorized
上次在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ã€ã€‚这个问题ç¨åŽå†è§£å†³ã€‚
Permalink
February 14, 2009 at 00:20
· Filed under Uncategorized
看了很多指å—,Guideä¹‹ç±»çš„ä¸œè¥¿ï¼Œä¹Ÿå·æ‡’了很长时间。最近想练练手,用Django写点东西玩玩,所以还是记录一下过程,以备å‚考。好记性ä¸å¦‚烂笔头,IT尤其如æ¤ã€‚
ã€Šå‰ææ¡ä»¶ã€‹
- 1.在 Dreamhost çš„æŽ§åˆ¶é¢æ¿é‡Œï¼Œå°†å‡†å¤‡ä½¿ç”¨ Django 的(å)域åé…ç½®æˆ Enable FastCGI ã€‚å› ä¸º Dreamhost 䏿”¯æŒ mod_python ,åªèƒ½é€šè¿‡ Fast CGI æ¥è°ƒç”¨ Django 。
- 2.用 SSH 连上 Dreamhost ä¸»æœºï¼Œæ¤æ—¶åº”è¯¥åœ¨è‡ªå·±çš„ç”¨æˆ·æ ¹ç›®å½•ä¸‹ã€‚
《设置过程》
※直接贴代ç 。请将域åã€ç›®å½•åã€æ–‡ä»¶åæ¢æˆè‡ªå·±çš„。
$> export PROJECTSHOME=$HOME/myprojects
$> mkdir $PROJECTSHOME
$> export SOFTWAREHOME=$HOME/mysoftware
$> mkdir $SOFTWAREHOME
$> export DOMAINROOT=$HOME/org.jbobos.onlinelist
$> export PROJECTNAME=djsite_onlinelist
$> cd $SOFTWAREHOME
$> wget http://media.djangoproject.com/releases/1.0.2/Django-1.0.2-final.tar.gz
$> tar xzvf Django-1.0.2-final.tar.gz
$> cd $HOME
$> echo 'export PATH=$PATH:'$SOFTWAREHOME/Django-1.0.2-final/django/bin >> .bash_profile
$> echo 'export PYTHONPATH=$PYTHONPATH:'$SOFTWAREHOME/Django-1.0.2-final:$PROJECTSHOME >> .bash_profile
$> source .bash_profile
$> cd $PROJECTSHOME
$> django-admin.py startproject $PROJECTNAME
$> cd $DOMAINROOT
$> rm -f fcgi.py
$> wget http://svn.saddi.com/py-lib/trunk/fcgi.py
$> rm -f dispatch.fcgi
$> touch dispatch.fcgi
$> echo -e \#\!"/usr/bin/python2.4" >> dispatch.fcgi
$> echo "import sys" >> dispatch.fcgi
$> echo "sys.path += ['$SOFTWAREHOME/Django-1.0.2-final']" >> dispatch.fcgi
$> echo "sys.path += ['$PROJECTSHOME']" >> dispatch.fcgi
$> echo "from fcgi import WSGIServer" >> dispatch.fcgi
$> echo "from django.core.handlers.wsgi import WSGIHandler" >> dispatch.fcgi
$> echo "import os" >> dispatch.fcgi
$> echo "os.environ['DJANGO_SETTINGS_MODULE'] = '$PROJECTNAME.settings'" >> dispatch.fcgi
$> echo "WSGIServer(WSGIHandler()).run()" >> dispatch.fcgi
$> chmod 755 $DOMAINROOT/fcgi.py
$> chmod 755 $DOMAINROOT/dispatch.fcgi
$> cd $DOMAINROOT
$> rm -f .htaccess
$> touch .htaccess
$> echo "RewriteEngine On" >> .htaccess
$> echo "RewriteBase /" >> .htaccess
$> echo "RewriteRule ^(dispatch\.fcgi/.*)$ - [L]" >> .htaccess
$> echo "RewriteRule ^(.*)$ dispatch.fcgi/"\$1" [L]" >> .htaccess
ç»è¿‡ä¸Šé¢0~4çš„é…置,现在在æµè§ˆå™¨ä¸è¾“å…¥onlinelist.jbobos.org,应该å¯ä»¥çœ‹åˆ°Djangoå¯åŠ¨çš„ç”»é¢äº†ã€‚å¦å¤–,dispatch.fcgiå¯ä»¥ç›´æŽ¥è¿è¡Œã€‚它会将HTML代ç ç›´æŽ¥è¾“å‡ºåˆ°æ ‡å‡†è¾“å‡ºã€‚è°ƒè¯•çš„æ—¶å€™å¯ä»¥ä½¿ç”¨ã€‚如果修改了全局的settings,需è¦ç”¨å‘½ä»¤ã€touch dispatch.fcgiã€‘é‡æ–°è½½å…¥ã€‚
《å‚考资料》
Permalink