Django是当前流行的基于python的开源web开发框架,容易上手并且代码的重用性也很好,是敏捷开发的典范。本文将着重介绍如何在ubuntu下安装django并经过apache发布django项目。请尽可能按照文中提到的软件版本号进行安装有些版本间的兼容问题会致使安装不成功。例如在ubuntu 12.04上进行部署发现安装不少软件都由于依赖关系而不可以安装。Let's begin!python
1. 安装pythonmysql
ubuntu自带python,所以通常不须要安装,本文所使用的版本为2.7web
2. 安装mysql-serversql
sudo apt-cache search mysql-server #查询能够安装的版本 apache
sudo apt-get install mysql-server-5.1 #本文中安装5.1 django
3. 安装mysqlPythonubuntu
下载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 ide
安装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/
若是看到如下画面则说明部署成功
这仅仅是一个最小项目的部署状况,针对较为复杂的项目,会在下一篇文章中讨论。