基于mod_wsgi模式安装Django

PHPABC Apache 955 次浏览 , 没有评论

安装Apache和MySQL的时候尽量选择源代码编译安装,因为后面安装Python的MySQL扩展的时候需要用到MySQL的开发包及编译头文件。Python的版本最好为2.6.X的。
本文中源码的存放目录为:/usr/local/src,源代码均可以到各自的官方网站进行下载。

1、安装apache:

#cd httpd-2.2.17
#./configure –enable-track-vars –enable-cgi –with-config-file-path=/opt/apache/conf –enable-modules=all –enable-mods-shared=all –enable-file-cache –enable-disk-cache –enable-cache –enable-mem-cache –enable-dumpio –enable-logio –enable-mime-magic –enable-headers –enable-usertrack –enable-version –enable-ssl –enable-http –enable-rewrite –enable-proxy –enable-proxy-connect –enable-proxy-http –enable-proxy-ftp –enable-proxy-ajp –enable-proxy-balancer –enable-so
#make
#make install

2、安装 mod_wsgi:

cd mod_wsgi-3.3
./configure –with-apxs=/usr/local/apache2/bin/apxs \   –with-python=/usr/bin/python
make
make install

将编译生成的库文件拷到apache的库文件目录:

cp /usr/local/apache2/modules/mod_wsgi.so /etc/httpd/modules

在/etc/httpd/conf/httpd.conf中添加:

LoadModule wsgi_module modules/mod_wsgi.so

3、安装mysql:

# cd mysql-VERSION
# ./configure
# make
# make install
# cp support-files/my-medium.cnf /etc/my.cnf
 
# cd /usr/local/
# bin/mysql_install_db –user=mysql
# bin/mysqld_safe –user=mysql &

配置my.cnf

改动如下:

[client]
#password = your_password
port = 3306
socket = /tmp/Mysql3306.sock
 
# The Mysql server
[Mysqld]
port = 3306
socket = /tmp/Mysql3306.sock

/*
若是你的mysql不是安装在默认路径,如安装在/usr/local/mysql,安装完成后,记得设置PATH环境变量,加上/usr/local/mysql/bin,以便运行mysql。
直接编辑/etc/environment文件,在里面修改PATH环境变量。该方法必须重启系统后才能生效,但是对于任何用户都有效。
可以设置为:

#PATH=.:/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/local/mysql/bin
*/

注:
安装了mysql以后,mysql的库文件默认放在/usr/local/lib/mysql下面,必须修改一下库文件的配置文件,不然在使用MySQLdb时会出现找不到库文件的错误。
(1)往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到
(2)想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig,不然也会找不到。
安装了mysql后,mysql有一大堆library在/usr/local/lib/mysql/下面,这时就需要在/etc/ld.so.conf下面加一行/usr/local/lib/mysql,保存过后ldconfig一下,新的library才能在程序运行时被找到。

连接数据库:

mysql -uroot -p

修改数据库root用户的密码:

mysqladmin -uroot -p password 1234//1234为新密码

4、将mysql加入系统服务

cp /usr/local/share/mysql/mysql.server      /etc/init.d/mysql     #把msql的脚本文件拷到系统的启动目录下
cd /etc/init.d/
chkconfig –add mysql                                #将mysql加到启动服务列表里
chkconfig mysql on                                    #让系统启动时自动打开mysql服务

apache安装以后,默认已经在系统服务里面了,通过下面的命令可以方便的进行管理。同时也可以通过setup命令对系统服务进行设置,使其开机自启动。
管理

apache:service httpd start/restart/stop)

管理

mysql:service mysql start/restart/stop)

5、安装setuptools

sh setuptools-0.6c9-py2.4.egg

6、安装MySQLdb:
如果你是像前面说的,默认编译安装的MySQL,不用做任何修改。若是自定义的安装路径有所不同,对于MySQLdb的安装,用vi打开MySQLdb目录中的site.cfg文件,找到“mysql_config=”,修改后面的路径到你机器中mysql_config文件的路径。

mysql_config =/usr/local/mysql/bin/mysql_config
<pre lang="bash">
#python setup.py build
#python setup.py install

测试:

# python
>>> import MySQLdb
>>>

没有任何输出,安装成功!

如果出现了安装或者使用错误,请参照:http://mysql-python.sourceforge.net/FAQ.html

7、安装配置Django:
下载最新安装包到本地,解压缩:

# tar -xvf django.tar.gz
进入到安装目录,执行命令安装Django:
<pre lang="bash"># cd Django_x.x.x
# python setup.py install

简单测试:

# python
>>> import django
>>>

没有任何输出,安装成功!

8、本地测试django(开发环境):

# cd /var/www
# mkdir /test
# cd /htdocs
# django-admin.py startproject myproject
# cd myproject
# python manager.py runserver 0.0.0.0:80

现在访问 http://服务器IP,看到“It works”了吧 ^_^
若是其他端口,可能不能访问,这可能是由于你服务器的防火墙阻挡了,在防火墙里添加相应的端口即可。
测试正常后,按Ctrl + C退出服务器。

9、在apache上的部署
创建项目mdash,mdash的源代码存放在wman目录下:

#cd /var/www/html/wman
#django-admin.py startproject mdash

配置Apache的httpd.conf以运行wsgi

# vi /etc/httpd/conf/httpd.conf

添加以下内容:

    WSGIScriptAlias /  /var/www/html/wman/mdash/django.wsgi 
 
    <Directory /var/www/html/wman> 
       Order Deny,Allow 
       Allow from all 
    </Directory>

配置django.wsgi:

#cd mdash
#touch django.wsgi
#vi django.wsgi

添加如下内容:

    import os, sys 
 
    sys.path.append(‘/var/www/html/wman’)
    os.environ['DJANGO_SETTINGS_MODULE'] = ‘mdash.settings’
    os.environ['PYTHON_EGG_CACHE'] = ‘/tmp/.python-eggs’    #防止PYTHON_EGG_CACHE无权限的问题
 
    import django.core.handlers.wsgi
    application = django.core.handlers.wsgi.WSGIHandler()

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Go