Django是当前流行的基于python的开源web开发框架,容易上手而且代码的重用性也很好,是敏捷开发的典范。本文将着重介绍如何在ubuntu下安装django并通过apache发布django项目。请尽量按照文中提到的软件版本号进行安装有些版本间的兼容问题会导致安装不成功。例如在ubuntu 12.04上进行部署发现安装很多软件都因为依赖关系而不能够安装。Let's begin!

1. 安装python

ubuntu自带python,因此一般不需要安装,本文所使用的版本为2.7

2. 安装mysql-server

 
  
  1. sudo apt-cache search mysql-server #查询可以安装的版本

  2. sudo apt-get install mysql-server-5.1 #本文中安装5.1

3. 安装mysqlPython

 
  
  1. tar -zxvf MySQL-python-1.2.3.tar.gz

  • 安装mysql开发包

 
  
  1. sudo apt-get install libmysqld-dev

  • 进入目录,修改文件site.cfg去掉这一行的注释 #mysql_config=/usr/local/bin/mysql_config并且更新本地mysql_config的路径,我的本地路径是/usr/bin/mysql_config

  • 安装setuptools

 
  
  1. sudo apt-get install python-setuptools

  • 安装python开发包

 
  
  1. sudo apt-get install python-dev

  • 最后,执行编译安装

 
  
  1. sudo python setup.py install

  • 编译过程中可能出现的错误及解决方法:

EnvironmentError: /usr/bin/mysql_config not found 解决方法:安装libmysqld-dev

ImportError: No module named setuptools 解决方法:安装python-setuptools

pymemcompat.h:10:20: fatal error: Python.h: No such file or directory 解决方法:安装python-dev

4. 安装django

之前的三个步骤都为安装django做好了准备,打通了python和mysql之间的通道。

 
  
  1. sudo python setup.py install

5. 安装apache

 
  
  1. sudo apt-get install apache2

6. 安装mod_python

 
  
  1. sudo apt-get install apache2-dev

  • 解压之后进入目录执行(路径根据实际路径更改)

 
  
  1. ./configure –with-apxs=/usr/bin/apxs2 –with-python=/usr/bin/python

  • 源代码中有一个公认的bug需要修复,在src/connobject.c的第142行:

 
  
  1. !(b == APR_BRIGADE_SENTINEL(b)

改为

 
  
  1. !(b == APR_BRIGADE_SENTINEL(bb)

  • 最后编译安装

 
  
  1. sudo make & make install

7. 配置apache

  • 在mod_python安装好之后,我们会在/usr/lib/apache2/modules下发现新创建的mod_python.so, 我们在目录/etc/apache2/mods-available下按照其他文件格式一样新建文件python.load,内容为:

 
  
  1. LoadModule python_module /usr/lib/apache2/modules/mod_python.so

同时在mods-enabled下建立到这个文件的链接

 
  
  1. sudo ln -s ../mods-available/python.load python.load

8. 发布网页

这里将着重介绍如何将一个django项目通过apache向外发布以让外网访问。

  • 首先,建立一个project,取名mysite,目标目录设在/home/user_name/Workspace

 
  
  1. django-admin.py startproject mysite

  • /usr/apache2/sites-available下新建site配置文件mysite,内容如下:

 
  
  1. <Location "/">

  2. SetHandler python-program

  3. PythonPath "['/home/user_name/Workspace/mysite/'] + sys.path"

  4. PythonHandler django.core.handlers.modpython

  5. SetEnv DJANGO_SETTINGS_MODULE mysite.settings

  6. PythonOption django.root /

  7. PythonDebug On

  8. </Location>

  • 启用site

 
  
  1. sudo a2ensite mysite

  • 重启apache,

 
  
  1. sudo /etc/init.d/apache2 restart

如果看到以下画面则说明部署成功

235210439.png

这仅仅是一个最小项目的部署情况,针对较为复杂的项目,会在下一篇文章中讨论。