ç»§ç»åœ¨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》的é—留问题也解决了。 […]