Quote: http://club.topsage.com/thread-412466-1-1.html
Django开源项目网站:http://www.djangoproject.com/
Django是用python语言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MTV设计。Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0。Django 根据比利时的爵士音乐家Django Reinhardt命名,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。
Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(Do Not Repeat Yourself)原则。
本文将演示如何在Debian Lenny服务器中快速搭建Django环境,使用Apach2 Web服务器及其mod_python模块提供对pyhton和Django的支持。另外,本文只是提供一个Django运行平台快速搭建的参考,最多Django开发等相关内容请参考其官方文档资料。
1. 安装MySQL
Django支持的数据库管理系统非常广泛,如PostgreSQL、MySQL、SQLite等等,如果你像我一样也是使用MySQL数据库的话,使用下面这个简单的命令安装它,
- aptitude install mysql-server mysql-client
New password for the MySQL "root" user: <-- yourrootsqlpassword
Repeat password for the MySQL "root" user: <-- yourrootsqlpassword
如果希望远程访问MySQL的话,我们要修改 /etc/mysql/my.cnf配置文件,把其中的 bind-address=127.0.0.1 一行注释掉:
- vi /etc/mysql/my.cnf
- [...]
- # Instead of skip-networking the default is now to listen only on
- # localhost which is more compatible and is not less secure.
- #bind-address = 127.0.0.1
- [...]
- /etc/init.d/mysql restart
- netstat -tap | grep mysql
- server1:~# netstat -tap | grep mysql
- tcp 0 0 *:mysql *:* LISTEN 3403/mysqld
- server1:~#
如果你的系统中Apache2及mod_python没有安装的话,也不必担心,同样一条安装命令搞定:
- aptitude install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-python
3. 安装Django
接下来我们该安装Django了,同样,还要安装 Python对MySQL的支持,这样才能使用python、Django访问MySQL数据库,安装python-django、python-mysqldb:
- aptitude install python-django python-mysqldb
Apache安装成功后,其默认的站点根目录为 /var/www,我们这里也不防简化一下:默认的虚拟目录(/etc/apache2/sites-available/default)就直接指向默认的站点根目录(/var/www)了。不过,实际应用中要依自己的具体情况而定。
在正式配置Apache之前,我们必须先新建一个Django项目(比如,叫mysite,具体请参考: http://www.djangoproject.com/documentation/tutorial01/)。为了安全起见,这个项目不放在/var/www目录里,暂且改放在/home/mycode里:
- mkdir /home/mycode
- cd /home/mycode
- /usr/share/python-support/python-django/django/bin/django-admin.py startproject mysite
现在,我们来配置Apache,打开我们的默认虚拟主机配置文件/etc/apache2/sites-available/default,在配置文件中的<VirtualHost ...>和</VirtualHost>之前加入如下配置项:
- vi /etc/apache2/sites-available/default
- [...]
- <Location "/mysite">
- SetHandler python-program
- PythonHandler django.core.handlers.modpython
- SetEnv DJANGO_SETTINGS_MODULE mysite.settings
- PythonDebug On
- PythonPath "['/home/mycode'] + sys.path"
- </Location>
- [...]
修改完成后,重启Apache:
- /etc/init.d/apache2 restart
这说明Django已经安装成功了,我们可以立即着手Python Web应用程序的开发了,更多Django框架下的Python Web开发资料可以参见: http://www.djangoproject.com/documentation/。
5. Django项目连接MySQL数据库
多数Web应用都要用到后台数据库以存取数据,这里我们也简要地说明一下其中的过程。
首先,我们新建一个数据库mysite,并为该库新建一个管理用户mysiteadmin:
- mysql -u root -p
- CREATE DATABASE mysite;
- GRANT ALL ON mysite.* TO 'mysiteadmin'@'localhost' IDENTIFIED BY 'mysiteadmin_password';
- GRANT ALL ON mysite.* TO 'mysiteadmin'@'localhost.localdomain' IDENTIFIED BY 'mysiteadmin_password';
- quit;
- vi /home/mycode/mysite/settings.py
- [...]
- DATABASE_ENGINE = 'mysql' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
- DATABASE_NAME = 'mysite' # Or path to database file if using sqlite3.
- DATABASE_USER = 'mysiteadmin' # Not used with sqlite3.
- DATABASE_PASSWORD = 'mysiteadmin_password' # Not used with sqlite3.
- DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3.
- DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3.
- [...]