隔很長時間重新接觸某個技術的好處是,你會很開心的發現很多擾人的問題已經被好心人們解決掉了。至少以 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 的時候就看上它的完整性和文件。三年沒碰這玩意兒竟然還能在三個小時內完成移機,或許多少證明當初的決定是對的吧。

Posted by yungyuc at 21:43, 0 comment, 0 trackback.
Navigate
Add a trackback
Add a comment

Your name. (required)

Your personal website. (optional)

Your email address. Will not show in page. (suggested, but optional)

Text format is "Plain Text".

Enter "CPhvE"
© hover year to navigate month: powered by django