Django是当前流行的基于python的开源web开发框架,容易上手而且代码的重用性也很好,是敏捷开发的典范。本文将着重介绍如何在ubuntu下安装django并通过apache发布django项目。请尽量按照文中提到的软件版本号进行安装有些版本间的兼容问题会导致安装不成功。例如在ubuntu 12.04上进行部署发现安装很多软件都因为依赖关系而不能够安装。Let's begin!
1. 安装python
ubuntu自带python,因此一般不需要安装,本文所使用的版本为2.7
2. 安装mysql-server
sudo apt-cache search mysql-server #查询可以安装的版本
sudo apt-get install mysql-server-5.1 #本文中安装5.1
3. 安装mysqlPython
下载MySQL for Python 1.2.3,到http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/下载对应文件
解压缩文件
tar -zxvf MySQL-python-1.2.3.tar.gz
安装mysql开发包
sudo apt-get install libmysqld-dev
进入目录,修改文件site.cfg,去掉这一行的注释 #mysql_config=/usr/local/bin/mysql_config并且更新本地mysql_config的路径,我的本地路径是/usr/bin/mysql_config
安装setuptools
sudo apt-get install python-setuptools
安装python开发包
sudo apt-get install python-dev
最后,执行编译安装
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之间的通道。
解压之后进入目录直接执行命令
sudo python setup.py install
5. 安装apache
sudo apt-get install apache2
6. 安装mod_python
下载mod_python 3.3.1 http://archive.apache.org/dist/httpd/modpython/
安装apache开发包
sudo apt-get install apache2-dev
解压之后进入目录执行(路径根据实际路径更改)
./configure –with-apxs=/usr/bin/apxs2 –with-python=/usr/bin/python
源代码中有一个公认的bug需要修复,在src/connobject.c的第142行:
!(b == APR_BRIGADE_SENTINEL(b)
改为
!(b == APR_BRIGADE_SENTINEL(bb)
最后编译安装
sudo make & make install
7. 配置apache
在mod_python安装好之后,我们会在/usr/lib/apache2/modules下发现新创建的mod_python.so, 我们在目录/etc/apache2/mods-available下按照其他文件格式一样新建文件python.load,内容为:
LoadModule python_module /usr/lib/apache2/modules/mod_python.so
同时在mods-enabled下建立到这个文件的链接
sudo ln -s ../mods-available/python.load python.load
8. 发布网页
这里将着重介绍如何将一个django项目通过apache向外发布以让外网访问。
首先,建立一个project,取名mysite,目标目录设在/home/user_name/Workspace
django-admin.py startproject mysite
在/usr/apache2/sites-available下新建site配置文件mysite,内容如下:
<Location "/">
SetHandler python-program
PythonPath "['/home/user_name/Workspace/mysite/'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonOption django.root /
PythonDebug On
</Location>
启用site
sudo a2ensite mysite
重启apache,
sudo /etc/init.d/apache2 restart
打开浏览器输入http://localhost/
如果看到以下画面则说明部署成功
这仅仅是一个最小项目的部署情况,针对较为复杂的项目,会在下一篇文章中讨论。