正统的apache用来配Django做服务还是很靠谱,用来调试也方便。以ArchLinux为例。
首先,安装好apache2, mod_python和django。
1. 新建项目
$ mkdir -p /srv/http/django/db /srv/http/html/{media,templates} # 分别放置媒体文件和模板
$ chmod 777 /srv/http/django/db # 如果使用sqlite,除了文件的写权限,还需要目录的写权限
$ cd /srv/http/django
$ django-admin.py startproject kang
2. 编辑apache配置 加入或替换内容:
LoadModule python_module /usr/lib/httpd/modules/mod_python.so
MaxRequestsPerChild 1
Alias /admin-media "/usr/lib/python2.6/site-packages/django/contrib/admin/media"
<Directory "/usr/lib/python2.6/site-packages/django/contrib/admin/media">
Order allow,deny
Allow from all
</Directory>
<Location "/">
SetHandler python-program
PythonPath "['/srv/http/django/'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE kang.settings
PythonAutoReload Off
PythonDebug On
</Location>
<Location "/media">
SetHandler None
</Location>
<Location "/admin-media">
SetHandler None
</Location>
- 配置django
urls.py:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^admin/', include(admin.site.urls)),
)
settings.py: DATABASE_ENGINE = 'sqlite3' DATABASE_NAME = '/srv/http/django/db/data.fs' ADMIN_MEDIA_PREFIX = '/admin-media/' TEMPLATE_DIRS = ( "/srv/http/html/templates", ) INSTALLED_APPS = ( 'django.contrib.admin', )
python manage.py syncdb
启动apache,完成。