[django]使用 apache + mod_wsgi 部署 django

本文测试环境:linux mint,python 2.7,django 1.4

安装依赖

$ sudo apt-get install apache2
$ sudo apt-get install libapache2-mod-wsgi

设置 django

本例中项目名为 bbs:

$ pwd
/var/www/bbs

$ tree . -d
.
|-- bb  # 应用
|-- bbs  # settings.py wsgi.py
|-- static  # 静态文件
|   `-- css
`-- templates  # TEMPLATE_DIRS

配置 settings:

TEMPLATE_DIRS = (
    '/var/www/bbs/templates',  # 这里要是绝对路径
)

STATIC_ROOT = '/var/www/bbs/static'

配置 wsgi.py:

import os
import sys

sys.path.append('/var/www/bbs/')  # 项目目录的绝对路径

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bbs.settings")

本例中使用 /var/www/bbs/static/ 保存静态文件,使用命令 python manage.py collectstatic 收集静态文件。

最终 /var/www/bbs/static/ 目录结构应该类似(admin 目录及其目录下文件一定要有):

$ tree static -d
static
|-- admin
|   |-- css
|   |-- img
|   |   `-- gis
|   `-- js
|       `-- admin
`-- css

配置 apache

$ sudo vim /etc/apache2/conf.d/bbs.conf


WSGIPythonPath /var/www/bbs
<VirtualHost *:80>
    ServerName bbs.com

    Alias /static/ /var/www/bbs/static/

    <Directory /var/www/bbs/static>
    Order deny,allow
    Allow from all
    </Directory>

    WSGIScriptAlias / /var/www/bbs/bbs/wsgi.py
    <Directory /var/www/bbs/bbs>
    <Files wsgi.py>
    Order allow,deny
    Allow from all
    </Files>
    </Directory>
</VirtualHost>

更改目录权限:

$ sudo chown www-data:www-data /var/www/bbs -R

启动 apache 服务

$ service apache2 restart

结果:

前台

后台

后续 linux 相关的工作暂且不表:

  • 配置项目目录访问权限
  • 配置 iptables ,开放 80 端口

测试项目及配置文件可以从 这个代码仓库 中获取。

参考


Comments