如何安装Django在Mandriva 2008.1(Apache2 / mod_python)

如何安装Django在Mandriva 2008.1(Apache2 / mod_python) 本教程解释如何安装Django 在Mandriva 2008.1服务器上。 Django我...

如何安装Django On Mandriva 2008.1(Apache2 / mod_python)

版本1.0
作者:Falko Timme

本教程介绍如何在Mandriva 2008.1服务器上安装Django 。 Django是一个Web框架,允许以尽可能多的自动化快速开发Python Web应用程序。 我将在本指南中使用Apache2和mod_python。

这是一个实践指南; 它不包括理论背景。 他们在网络上的许多其他文档中被处理。

本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!

1安装MySQL

在安装任何软件包之前,我们必须启用mainmain_updatescontribcontrib_updates存储库。 请访问http://easyurpmi.zarb.org/ - 它应该提供您需要运行以启用这些存储库的命令。 在我的情况下,我跑了

urpmi.addmedia contrib ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/contrib/release with media_info/hdlist.cz

urpmi.addmedia --update contrib_updates ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/contrib/updates with media_info/hdlist.cz

urpmi.addmedia main ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/main/release with media_info/hdlist.cz

urpmi.addmedia --update main_updates ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/main/updates with media_info/hdlist.cz

Django可以使用多个数据库后端,例如PostgreSQL,MySQL,SQLite等。如果要使用MySQL,可以按如下方式进行安装:

urpmi MySQL MySQL-client

默认情况下,Mandriva 2008.1的MySQL包中未启用网络连接。 我们可以通过在/etc/my.cnf注释掉 skip-networking来改变这一点

vi /etc/my.cnf

[...]
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
[...]

之后,我们为MySQL创建系统启动链接...

chkconfig mysqld on

...并启动它:

/etc/init.d/mysqld start

现在检查网络是否启用。 跑

netstat -tap | grep mysql

输出应如下所示:

[root@server1 ~]# netstat -tap | grep mysql
tcp        0      0 *:mysql-im                  *:*                         LISTEN      3746/mysqlmanager
tcp        0      0 *:mysql                     *:*                         LISTEN      3754/mysqld
[root@server1 ~]#

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

为用户root设置密码(否则任何人都可以访问您的MySQL数据库!)。

2安装Apache和mod_python

如果系统上尚未安装Apache2和mod_python,可以按如下方式进行安装:

urpmi apache-mod_python

(如果还没有安装,还将安装Apache2)

3安装Django

为了安装Django和Python MySQL绑定,我们运行:

urpmi python-django python-mysql

4配置Apache

在配置Apache之前,我们必须创建一个Django项目(例如,称为mysite )(参见http://www.djangoproject.com/documentation/tutorial01/ )。 出于安全考虑,我在文档根目录下创建该项目(我使用默认的Mandriva文档根/ var / www / html )(例如/ home / mycode ):

mkdir /home/mycode
cd /home/mycode
/usr/bin/django-admin.py startproject mysite

这将创建一个目录/ home / mycode / mysite与其中的一些Python文件。

现在随着项目mysite的创建,我们可以配置Apache。 我创建一个原始的/etc/httpd/modules.d/16_mod_python.conf文件的备份副本,并创建一个新的,如下所示:

cp /etc/httpd/modules.d/16_mod_python.conf /etc/httpd/modules.d/16_mod_python.conf_orig
cat /dev/null > /etc/httpd/modules.d/16_mod_python.conf
vi /etc/httpd/modules.d/16_mod_python.conf

LoadModule python_module        extramodules/mod_python.so

<Location "/mysite">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonDebug On
    PythonPath "['/home/mycode'] + sys.path"
</Location>

(此配置对于/ var / www / html中的默认Mandriva vhost有效 - 如果您已经定义了要使用Django的其他vhost,请放置<Location ...> ... </ Location>部分在适当的vhost配置中,但将LoadModule行保留在/etc/httpd/modules.d/16_mod_python.conf中。)

第一行( <Location“/ mysite”> )中的路径指的是URL - 如果您在URL中使用/ mysite (例如http://www.example.com/mysite ),则将使用此配置。 你可以把它改成你的喜好。 请将其他值( SetEnv DJANGO_SETTINGS_MODULE mysite.settingsPythonPath“['/ home / mycode'] + sys.path” )调整到项目的名称及其所在的路径。

之后重新启动Apache:

/etc/init.d/httpd restart

现在,您可以在浏览器中访问http://www.example.com/mysite 。 如果一切顺利,你应该看到这样的事情:

这意味着Django已成功安装,您现在可以使用它开发Python Web应用程序(请参阅http://www.djangoproject.com/documentation/了解如何使用Django开发Web应用程序)。

5从Django项目连接到MySQL数据库

如果要在Django项目中使用MySQL数据库,则应首先为该数据库创建数据库(例如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';
FLUSH PRIVILEGES;
quit;

然后打开项目文件夹中的settings.py文件(例如/ home / mycode / mysite )并修改数据库设置,例如:

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.
[...]