隔很長時間重新接觸某個技術的好處是,你會很開心的發現很多擾人的問題已經被好心人們解決掉了。至少以 Python 而言,這是常見的快樂結局。
弊小站荒廢日久,但因為某種因素搬了新家。新家燈光好氣氛佳,唯一的問題是事隔數年,我早就忘記 Django 該怎麼佈署了。在那遙遠的幾年前,大家還在為了 WSGI 吵來吵去,佈署 Django 的 best practice 當然是 FastCGI (舊)。為了讓弊小站復活,我很榮幸地和大家宣佈,我又學會了新把戲。弊小站現以 WSGI 重新開張。
首先,官方文件 How to use Django with Apache and mod_wsgi 必備。Django 的文件仍然擁有一貫的品質。即使事前多年,瞄一眼大概就知道是怎麼回事了。
在 Apache2/mod_wsgi 的環境下佈署 Django project 需要弄幾組檔案:壹、/etc/apache2/site-available/site,貳、$SITE_ROOT/site.wsgi,參、Django project。$SITE_ROOT 是你要放所有和該 project 相關檔案的地方。第一項的 Apache2 config 要這樣寫:
DocumentRoot $SITE_ROOT/apache <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory $SITE_ROOT/apache> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> WSGIScriptAlias / $SITE_ROOT/django.wsgi Alias /media/ $SITE_ROOT/apache/media/
再來是 django.wsgi 指令稿:
import os import sys sdir = '$SITE_ROOT' sys.path.insert(0, os.path.join(sdir, 'projects')) os.environ['DJANGO_SETTINGS_MODULE'] = 'site_name.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
sdir 就是指 $SITE_ROOT。Django project 的內容則是你自己的事了。
不知道這樣算不算是有眼光。當初從 Zope 跳過來 Django 的時候就看上它的完整性和文件。三年沒碰這玩意兒竟然還能在三個小時內完成移機,或許多少證明當初的決定是對的吧。
- Previous: vim advocacy @2010/02/21
- Next: PyCon 2011 迫近 @2011/02/14
Please send trackback to: http://blog.seety.org/everydaywork/2011/1/30/1207/trackback/.