Centos Django+ Mod_wsgi

本文介绍了在Centos系统下搭建Django站点的流程。

一.安装环境

   本文适合环境:

  centOS 5/6

  python2.7+-

  Django1.5

  mod_wsgi

  apache2.2/2.4

其中由于mod_python对python2.7没有提供支持,因此采用mod_wsgi代替mod_python.
 
二.软件安装:

  1.安装apache服务器:     

# yum install -y httpd  httpd-devel
(一般系统已自带apache服务器,安装在/etc/httpd目录下)


    http-devel 是为了apxs,yum后你可以whereis apxs去寻找他,然后后边编译使用。

  2.安装python2.7

(我编译后不能import zlib,先要

# yum install -y zlib zlib-devel


    

centos系统自带的python基本是小于2.6版本的,你可以用自带的编译,可能会产生错误,尽量编译2.7吧。【假设所有下载的压缩文件放在~(家目录)目录下。】

   
#tar -xzvf Python-2.7.tar.bz2 
#cd Python-2.7 
#.configure --enable-shared  (!!!后面安装mysql-python时,python必须采用共享方式)加了这个参数--enable-shared会出现运行找不到 libpython2.5.so.1.0 这个库,在编辑 目录下把这个文件复制到 /usr/lib下就可以,然后可加入链接到 /usr/lib64目录。如果在有错把/usr/local/lib and /usr/local/lib64 都做lin(快捷方式)

  一般安装路径是:/usr/local/lib/python2.7。安装好后执行命令#python,若输出版本号,说明成功。 

错误1:/usr/local/lib/python2.7/config/libpython2.7.a:  could not read symbols: Bad value  collect2ld returned 1 exit status apxs:Error: Command failed with rc=65536 

               =》因为安装python的时候,没有   ./configure  --enable-shared 

或 

  更改在编译目录下src文件夹下connobject.c 142行左右

!(b == APR_BRIGADE_SENTINEL(b) ||
改为 
!(b == APR_BRIGADE_SENTINEL(bb) ||
(我都遇到了)

错误2:python: error while loading shared  libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory                =》新建文件: #vim  /etc/ld.so.conf.d/python2.7.conf 

                    加入内容:  /usr/local/lib 

                    保存退出后运行: ldconfig     再执行#python,测试是否成功。       

上边一定要注意,因为编译wsgi还可能会报一样的错。

 3. 安装Django  【下载Django压缩文件至~目录】


#tar -xzvf Django1.4
#cd Django1.4
#python setup.py install 


      测试:

         #python     >>>import django     >>>django.VERSION

    4. 安装mod_wsgi

       a。安装之前,先进行apache的apxs扩展:(上边已经装了)  


# yum install httpd-devel


     错误:有可能发现yum命令用不了,提示:No module named yum

                =》原因是yum命令依赖python2.4,现在用了2.7之后,yum命令就用不了了,解决方法如下:

  #vim /usr/bin/yum

将  #!/usr/bin/python 修改为 #!/usr/bin/python2.4 

其他错误:bad interpreter: No such file or directory 

       b。安装mod_wsgi,mod_wsgi压缩包也在/var目录下,同样采用源码【链接】安装

在这我卡了好长时间。终于编译mod_wgsi成功了。。。。。。。。

这块看你改不改编译的python作为你的默认python了,我直接用


# alias python="python2.7" #你可以把这个写在/etc/profile最后边,然后# source /etc/profile
这样能安全点吧。

  

# ./configure --with-python=/usr/local/bin/python2.7  【关联python2.7】 
# make 
# make install 

有可能报错。

缺啥就--with-。

找不到就whereis一下

尽量完整。

5,开始配置。

在httpd.conf文件中加入


LoadModule wsgi_module modules/mod_wsgi.so

重启即完成安装。

然后部署django

首先先看一下tree


[root@localhost html]# tree /var/www/html/   #在这django-admin.py startproject mysite
/var/www/html/                               #除了标记都是生成的。
└── mysite
    ├── manage.py
    ├── mysite
    │   ├── helloworld.py                 #自己测试写的一个hello,不写可以,成功后会显示默认
    │   ├── helloworld.pyc
    │   ├── __init__.py
    │   ├── __init__.pyc
    │   ├── settings.py
    │   ├── settings.pyc
    │   ├── urls.py
    │   ├── urls.pyc
    │   ├── wsgi.py
    │   └── wsgi.pyc                      #不动
    └── wsgi
        └── django.wsgi                   #自己写的
django.wsgi 内容



import os
import sys

sys.path.append('/var/www/html/mysite')#不写这个老说配置文件不再环境变量里,就不在环境变量里写了,在这写
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' #配置文件。
os.environ['PYTHON_EGG_CACHE'] = '/tmp/.python-eggs'

current_dir = os.path.dirname(__file__)                         
if current_dir not in sys.path: sys.path.append(current_dir)

import django.core.handlers.wsgi  #!!

application = django.core.handlers.wsgi.WSGIHandler()  #!!


httpd.conf配置文件中添加的内容,用来连接django.wsgi,使工程被apache加载。

咱们httpd不是编译的。有这个目录。


[root@localhost mysite]# ls /etc/httpd/conf.d/
apache会加载他,新建配置文件wsgi.conf



#  LoadModule wsgi_module modules/mod_wsgi.so #在httpd.conf写了的话这就注释掉。
WSGIScriptAlias / "/var/www/html/mysite/wsgi/django.wsgi" 

<Directory "/var/www/html/mysite">  #网站家目录。
    Order Deny,Allow
    Allow from all
</Directory>

http.conf 

更改 


DocumentRoot "/var/www/html/mysite"

ServerName 127.0.0.1:80


然后因为静态文件放在static目录中,所以要在httpd.conf中加入static的映射:

Alias /static H:/pythondev/webDSS/static

如果使用django的后台管理的话,还必须在httpd.conf中加入:

Alias /static/admin E:/Python27/Lib/site-packages/django/contrib/admin/media
 
<Directory "E:/Python27/Lib/site-packages/django/contrib/admin/media">
Order Deny,Allow
Allow from all
</Directory>

然后重启httpd服务。搞定。

你可能感兴趣的:(django配置)