Python 学习笔记13:Python + wsgi + django 配置。坑爹的python3和wsgi不兼容的解决

时间:2022-08-28 09:19:16

今人不见古时月,今月曾经照古人。生命是如此的美丽与短暂!

学习Python已经两个月了,Python的语法通过做简单的语法题和看Python语法介绍,有了初步的了解。但上班还是要做别的事情,所以感觉学起来特别慢。有一种时不我待的感觉。

基本的语法了解了,接下来就要尽快进入到项目的实战。这样才能快速的遇到问题,并解决问题,迅速提升能力。

开始当然就是先按网上的一般步骤,用django写个博客网站出来。

接下来就是血泪啊!配置这个Python + wsgi + django, 其恶心已达到足以让我呕出几十两血的程度。来看:

***********************

安装环境:

Centos5.6

Python2.7

Mod_wsgi: mod_wsgi-4.4.13

Apache: httpd2.2

Django: Django-1.8.3

***********************

1. 安装Python: Python2.7

本来系统里已经自带了Python2.6, 为了我的追求极致,装逼的完美主义,我又安装了Python3.4. 并且把 /usr/local/bin/python 直接指向Python3.4. 将其设为python的主要程序。

此处就为悲剧的根源了。因为Python3 和 mod_wsgi 不兼容 (注:至少到现在我还没有找到能用使用python3 来安装的wsgi),我安装的时候直接使用 ./Configure   make    makeinstall 命令,导致系统先择了将apache 的python版本设置成了python2.6. (注:wsgi: 即为 the python web server gateway interface, 其作用就是apache能通过它来连接并使用Python)

但是由于我的django是用Python3安装的。最终导致apache根本就连接不上django, 我查询httpd下的error_log来回无数遍,终于发现httpd使用的是python2.6。所以只能果断使用python2了, 但是新的问题又出现了,因为下载的django版本过高,python2.6安装不了,所以最终结果就是:安装python2.7!

命令:

tar -xvf Python-2.7.10.tgz
cd Python-2.7
./configure --enable-shared make make install

可能遇到问题:python: error while loading shared  libraries: libpython2.7.so.1.0: 
  cannot open shared object file: No such file

原因: python2.7 的库找不到了

解决方案:1. 进入/etc/ld.so.conf.d/,

     2. 新建文件:vim python2.7.conf

     3. 添加python2.7的库的所在路径: /usr/local/lib

4. 保存并退出,然后执行命令:ldconfig

2. 安装django: Django-1.8.3

直接进入安装包文件夹使用python安装

tar xzvf  Django-1.8.3 .tar.gz
cd Django-1.8.3 sudo python setup.py install

3. 安装mod_wsgi: mod_wsgi-4.4.13

下载地址:https://pypi.python.org/pypi/mod_wsgi

安装命令:

./configure --with-python=/usr/local/bin/python2.7

make

make install

可能遇到问题:

3-1. apxs: command not found

原因: apache 组件 httpd-devel 没有安装

解决办法: yum install httpd-devel

3-2. 在make时编译失败。查看错误第一行,发现:Sorry, Python developer package does not appear to be installed.

原因:python组件 python-devel没有安装

解决办法: yum install python-devel

参考链接: http://www.cnblogs.com/bolddream/p/mod_wsgi.html

4. 配置httpd(注:此目的为能让httpd能通过wsgi来使用python,并访问django的网站目录) 非常重要,也很容易出问题:

4-1. 为httpd添加wsgi的动态链接库.so文件的链接:

1. vim /etc/httpd/conf/httpd.conf

2. 添加内容:LoadModule  wsgi_module modules/mod_wsgi.so

3. 保存退出。

4-2. 继续修改httpd.conf, 添加django项目的路径,比如我新建的django网站的路径为:/var/www/html/mysite, 则配置为如下:

WSGIPythonPath /var/www/html/mysite
WSGIScriptAlias / "/var/www/html/mysite/mysite/wsgi.py" <Directory "/var/www/html/mysite/mysite">
Order Allow,Deny
Allow from all
<Files wsgi.py>
Order allow,deny
Allow from all
</Files>
</Directory>

4-3. 配置wsgi文件

一般django生成项目时会自动帮你配置好wsgi.py文件。不需要自己配的,前提是你的wsgi得装好了。我的/var/www/html/mysite/mysite/wsgi.py 内容如下:

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

5. 重启httpd service: service httpd restart

至少则配置问题基本解决. 如果遇到新的问题,就得上*再去查一下了。

下一篇讲一下怎么用django建blog网站。

Python 学习笔记13:Python + wsgi + django 配置。坑爹的python3和wsgi不兼容的解决的更多相关文章

  1. python学习笔记&lpar;13&rpar;&colon;python并发编程以及系统常用模块

    一.进程与线程 1.进程:程序的一次执行(程序装载入内存,系统分配资源运行).n 每个进程有自己的内存空间.数据栈等,只能使用进程间通讯,而不能直接共享信息 2.线程:所有线程运行在同一个进程中,共享 ...

  2. python 学习笔记 13 -- 经常使用的时间模块之time

    Python 没有包括相应日期和时间的内置类型.只是提供了3个相应的模块,能够採用多种表示管理日期和时间值: *    time 模块由底层C库提供与时间相关的函数.它包括一些函数用于获取时钟时间和处 ...

  3. Python学习笔记整理总结【Django】:Model操作(一)

    Model操作(一) 一.Django ORM基本配置 ORM:关系对象映射(Object Relational Mapping,简称ORM)db Frist:到目前为止,当我们的程序涉及到数据库相关 ...

  4. python学习笔记13(模块、包)

    在Python中有一个概念叫做模块(module),比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块. 模块文件以.py后缀结 ...

  5. Python学习笔记13:标准库之子进程(subprocess包)

    ubprocess包主要功能是运行外部的命令和程序.从这个意义上来说,subprocess的功能与shell类似. subprocess以及经常使用的封装函数 当我们执行python的时候,我们都是在 ...

  6. python 学习笔记 9 -- Python强大的自省简析

    1. 什么是自省? 自省就是自我评价.自我反省.自我批评.自我调控和自我教育,是孔子提出的一种自我道德修养的方法.他说:“见贤思齐焉,见不贤而内自省也.”(<论语·里仁>)当然,我们今天不 ...

  7. Python学习笔记 - day12 - Python操作NoSQL

    NoSQL(非关系型数据库) NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.用于超大规模数据的存储.(例如 ...

  8. python学习笔记&lpar;一&rpar;&colon;python简介和入门

    最近重新开始学习python,之前也自学过一段时间python,对python还算有点了解,本次重新认识python,也算当写一个小小的教程.一.什么是python?python是一种面向对象.解释型 ...

  9. python学习笔记&lpar;1&rpar;--python特点

    python诞生于复杂的信息系统时代,是计算机时代演进的一种选择. python的特点,通用语言,脚本语言,跨平台语言.这门语言可以用于普适的计算,不局限于某一类应用,通用性是它的最大特点.pytho ...

随机推荐

  1. FreeSWITCH 1&period;2&period;5&period;3 Step by Step Install

    Ubuntu: apt-get -y install build-essential automake autoconf git-core wget libtool apt-get -y instal ...

  2. 【BZOJ-4514】数字配对 最大费用最大流 &plus; 质因数分解 &plus; 二分图 &plus; 贪心 &plus; 线性筛

    4514: [Sdoi2016]数字配对 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 726  Solved: 309[Submit][Status ...

  3. C&plus;&plus; Primer &colon; 第十三章 &colon; 拷贝控制之对象移动

    右值引用 所谓的右值引用就是必须将引用绑定到右值的引用,我们通过&&来绑定到右值而不是&, 右值引用只能绑定到即将销毁的对象.右值引用也是引用,因此右值引用也只不过是对象的别名 ...

  4. PowerShell实现文件下载&lpar;类wget&rpar;

    对Linux熟悉的读者可能会对Linux通过wget下载文件有印象,这个工具功能很强大,在.NET环境下提到下载文件大多数人熟悉的是通过System.Net.WebClient进行下载,这个程序集能实 ...

  5. RabbitMQ消息队列:ACK机制

    每个Consumer可能需要一段时间才能处理完收到的数据.如果在这个过程中,Consumer出错了,异常退出了,而数据还没有处理完成,那么 非常不幸,这段数据就丢失了. 因为我们采用no-ack的方式 ...

  6. hdu5785&lpar;极角排序求所有锐角钝角个数&rpar;

    做法很显然,求出所有的锐角和钝角就能求出有多少个锐角三角形了. 我用了愚钝的方法,写了两三个小时... 看了下别人简单的代码.学习了下做法. sort(temp+,temp+cnt+);//排序 Fo ...

  7. WebSocket与Tcp连接

    最近做了一个项目,客户端为WebSocket页面,服务器端为Tcp控制台 .将代码贴出来,供需要的参考. 1.服务器端代码 其中服务器的Session使用了第三方插件,为TCP连接. 2.客户端代码如 ...

  8. I2C操作笔记——以 AT24C04为例

    1.前言     对于大多数project师而言,I2C永远是一个头疼的问题.相比UART和SPI而言,I2C的时序要复杂一些,I2C组合变化也丰富一些.在这里以AT24C04为例说明I2C使用过程中 ...

  9. C&num;播放流媒体的几种方法

    原文:[转载]C#播放流媒体的几种方法 做视频开发要学的东西真多,不知道如何入门,乱打乱撞,慢慢摸索吧! 首先搭建Windows Meida Server ,方法很简单,试试就会.在这里需要声明的是, ...

  10. Jmeter 创建FTP测试计划

    FTP服务主要提供上传和下载功能. 操作步骤: 1.创建一个线程组 2.线程组--->添加--->配置元件--->FTP请求缺省值:输入服务器名称或IP. 3.线程组--->添 ...