debian(linux) 配置 apache+django+mysql

蓝色字体为本人注解

原文出自:How To Install Django On Debian Etch (Apache2/mod_python)

1 安装 MySQL

Django 可以使用多种类型的数据库, 例如:. PostgreSQL, MySQL, SQLite, etc. 如果你打算使用mysql,可以按照一下步骤操作:

apt-get install mysql-server mysql-client #debian的apt工具真牛!

我们希望mysql可以通过多种接口连接, 不单单localhost方式链接, t要实现这点,我们需要修改/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[...]

#我这样做了,但是感觉没什么用,局域网内的其他机子还是不能访问

然后,重启mysql:

/etc/init.d/mysql restart

现在,我们修改下网络设置

netstat -tap | grep mysql

输出应该是这样的:

server1:~# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 3085/mysqld
server1:~#

继续

mysql -u root password yourrootsqlpassword
mysql -h server1.example.com -u root password yourrootsqlpassword

给root用户设置一个密码 (不然任何用户都能登录你的mysql数据库了!)

2 安装 Apache 和 mod_python

如果apache和mod_python还没有安装到服务器上去,你可以安装下面步骤进行安装:

apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-python

3 安装 Django

#前提是python要安装,版本要和django对应,debian默认安装的是python2.4,即使安装了python2.5,对应的软链接还是指向python2.4的,即使修改了也没用。这里我的解决方法是,升级debian

apt-get update

apt-get dist-upgrade

之后继续安装django就可以了

为了同时安装django和python_mysqldb,我们运行下面命令:

apt-get install python-django python-mysqldb

4 设置Apache

#这里是关键中的关键

使用 /var/www 作为apache的根目录(#默认就是如此,不用设置)

使用/etc/apache2/sites-available/default 做虚拟目录. 调整你的环境. #这段翻译不好,简单的说就是设置下apache的虚拟路径和主路径,apache相关设置资料中文一大堆

在设置apache之前, 我们先创建一个django项目(e.g. called mysite) (see http://www.djangoproject.com/documentation/tutorial01/). 出去安全考虑,我新建的项目不安装到apache更根目录下去 /var/www (e.g. in /home/mycode):

mkdir /home/mycode #新建一个目录
cd /home/mycode #打开刚才创建的目录
/usr/share/python-support/python-django/django/bin/django-admin.py startproject mysite #在打开的目录下创建一个django项目

这里会创建一个目录 /home/mycode/mysite with 一些python文件在里面

现在,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

我们可以看到打开的效果如下:

5 在django项目里设置mysql的链接

#不翻译这段废话了,看下面的就知道了

vi /home/mycode/mysite/settings.py

[...]DATABASE_ENGINE = 'mysql'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.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.[...]

原文讲的很清晰,可以我配置起来还是有点问题,第一次成功,后面就一直失败,莫名其妙~~

目前我还未解决一下问题,望高手指教:

1、mysql对外开发链接,不能成功,期待解决方案

2、mysql中文问题,即使我都设置了utf8 还是有乱码现象

3、暂时未发现,但一定还有问题

本人无论E文还是python水平都有限,望大家见谅。算是为python&django在中国推广做点贡献!

评论关闭。