文档章节

Centos Django+ Mod_wsgi

拜仁慕尼黑
 拜仁慕尼黑
发布于 2013/06/14 14:31
字数 1089
阅读 6077
收藏 14

本文介绍了在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服务。搞定。

© 著作权归作者所有

拜仁慕尼黑

拜仁慕尼黑

粉丝 21
博文 58
码字总数 49609
作品 0
朝阳
系统管理员
私信 提问
加载中

评论(7)

Cnlouds
Cnlouds
不错 很经典的文章,几乎很多的错误都碰到了,学习了,mark下
觉得还是不要在http.conf中配置太多东西的好,都单拉出来。
admin路径的配置最新django一句话配置
Alias /static /usr/lib/python2.6/site-packages/django/contrib/admin/static
拜仁慕尼黑
拜仁慕尼黑 博主

引用来自“alazyer”的评论

引用来自“拜仁慕尼黑”的评论

引用来自“小毛驴啊驾”的评论

怎么有linux 路径还有windows路径?

zai na

1. Alias /static H:/pythondev/webDSS/static
2. E:/Python27/Lib/site-packages/django/contrib/admin/media
这样只能serve一个应用吧?要想serve多个应用的话,应该怎样?
# add the below to the wsgi.conf, and add 'include path/to/wsgi.conf to httpd.conf, does this work?
<VirtualHost *:80>
ServerName .example.com
DocumentRoot project root
....
</VirtualHost>

改一下路径就好了
alazyer
alazyer

引用来自“拜仁慕尼黑”的评论

引用来自“小毛驴啊驾”的评论

怎么有linux 路径还有windows路径?

zai na

1. Alias /static H:/pythondev/webDSS/static
2. E:/Python27/Lib/site-packages/django/contrib/admin/media
这样只能serve一个应用吧?要想serve多个应用的话,应该怎样?
# add the below to the wsgi.conf, and add 'include path/to/wsgi.conf to httpd.conf, does this work?
<VirtualHost *:80>
ServerName .example.com
DocumentRoot project root
....
</VirtualHost>
拜仁慕尼黑
拜仁慕尼黑 博主

引用来自“小毛驴啊驾”的评论

怎么有linux 路径还有windows路径?

zai na
小毛驴啊驾
小毛驴啊驾
怎么有linux 路径还有windows路径?
拜仁慕尼黑
拜仁慕尼黑 博主

引用来自“飞弹蛋”的评论

够详细,先收藏了

按自己经历修改了。这回基本人见人OK了!
飞弹蛋
飞弹蛋
够详细,先收藏了
Django+ Mod_wsgi

安装环境 centos 6.4 apache 2.2 python 2.7 sqlite3 2.软件安装 1.安装apache yum install -y httpd httpd-devel 2.安装sqlite3 wget http://www.sqlite.org/sqlite-autoconf-3070500.tar.......

yubochinese
2014/08/08
0
0
Linux配置实践:apache+wsgi+虚拟主机配置

<安装mod_wsgi> 使用centos光盘中mod_wsgi.rpm包 LoadModule wsgimodule modules/modwsgi.so 编译完成后引入配置文件: LoadModule wsgimodule modules/modwsgi.so 最后的虚拟主机配置: # ......

Nob
2014/06/20
410
1
CentOS7.4 部署 Django + Python3 + Apache + Mod_wsgi

安装环境 Remote: CentOS 7.4 x64 (django.example.com) Python: Python3.6.5 Apache: Apache 2.4.6 Mod_wsgi: 4.6.4 Django: Django 2.0.4 一. 系统环境配置 1.关闭 iptables 和 selinux 修......

xjtuhit
2018/04/19
0
0
CentOS 7部署django运行环境

1,安装postgresql数据库,安装过程参考我的 2,安装apache服务器 sudo yum install httpd 3,安装mod_wsgi,支持参考网上的。 https://code.google.com/p/modwsgi/wiki/InstallationOnLinux...

longfirst
2014/11/13
2.3K
2
Windows上配置Apache httpd运行python web应用

配置步骤 安装Apache httpd (可参考官方文档)我的具体步骤: 从Apache Haus下载编译好的二进制文件,可以根据系统环境选择适合的版本,因为我使用的是WIN32的Python2.7,与后续使用的mod_w...

周宇YuZhou
2015/09/21
148
0

没有更多内容

加载失败,请刷新页面

加载更多

最简单的获取相机拍照的图片

  import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import andr......

MrLins
今天
6
0
说好不哭!数据可视化深度干货,前端开发下一个涨薪点在这里~

随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在...

个推
今天
9
0
第三方支付-返回与回调注意事项

不管是支付宝,微信,还是其它第三方支付,第四方支付,支付机构服务商只要涉及到钱的交易都要进行如下校验,全部成功了才视为成功订单 1.http请求是否成功 2.校验商户号 3.校验订单号及状态...

Shingfi
今天
5
0
简述Java内存分配和回收策略以及Minor GC 和 Major GC(Full GC)

内存分配: 1. 栈区:栈可分为Java虚拟机和本地方法栈 2. 堆区:堆被所有线程共享,在虚拟机启动时创建,是唯一的目的是存放对象实例,是gc的主要区域。通常可分为两个区块年轻代和年老代。更...

DustinChan
今天
7
0
Excel插入批注:可在批注插入文字、形状、图片

1.批注一直显示:审阅选项卡-------->勾选显示批注选项: 2.插入批注快捷键:Shift+F2 组合键 3.在批注中插入图片:鼠标右键点击批注框的小圆点【重点不可以在批注文本框内点击】----->调出批...

东方墨天
今天
7
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部