django部署到apache上(非常重要的,3者版本要一致,是32位就都要是32位的)
网上把django部署到apache的文章挺多的,但是按照大家的操作,并没有一次就成功,还是遇到了一些问题,这里主要有以下几个情况。
1.网上找到的mod_wsgi的版本问题,导致动态库加载不上。
2.配置问题,因为涉及到apache、Python和mod_wsgi的版本,所以配置上可能也不太一样。
这里我把我遇到的问题和解决方案比较详细的写下来。失败经历可跳过。
失败经历
我的环境是python2.7.11 64位版本,apache我选择的是2.4.20x 64位版本,这里有一点必须要保证的是apache和python的版本必须要一致(而且要使用相同的编译器编译出来的,一般来说python2.x的版本都是用vc9编译的,也就是VS2008),如果我们选择使用编译好的mod_wsgi,请到如下链接进行下载:
http://www.lfd.uci.edu/~gohlke/pythonlibs#mod_wsgi
我也的确下载了,但是失败了。
失败的原因是我认为我机器上安装的是python2.7 32位的版本,但是实际是64位的。于是我把各种版本的whl文件解压出来,将mod_wsgi.so文件进行挨个替换,还是失败。没版本,我还是不想编译把apache的版本各种下载,发现还是不对啊?看来还是不能偷懒啊,于是我采用了自己编译,因为自己计算机上没有安装VS2008,所以我下载了VS2008,这里特别要注意VS2008在64位计算机上安装的时候是不会安装VC64位的编译器的,如果你使用的是64位的python,请一定勾选VC64位组件,否则你是编译不了的,(因为我安装的时候按照默认安装的,所以我发现vcvarsall.bat amd64 报没有安装该组件的错误)。所以这个地方一定得注意。VS2010如果安装在64位计算机上的话是会默认安装64位编译器的。
详细操作过程(自己编译)
1.环境介绍:
python2.7.11 64位
apache 2.4.20 64位 VC9编译的版本
这里说明一下大家可能有时搞不清楚自己的python2.x是那个版本的vc编译的,请直接在命令行运行python,这个时候会显示该python的详细版本信息,以及编译器和编译器的版本,如下图,是我的:
MSC说明是微软的编译器编译的 v.1500这里可能有些人不知道,可以看我上个文章python的编译器对应关系,V1500代表的就是VC9的编译器版本,所以这里可以确定,我的python版本就是vc9编译出来的。这样就保证了python和apache是用的同一个编译器(相同版本)编译出来的。
2.下载mod_wsgi的源码
一听到源码,国内能下载的估计也就是github了,果然mod_wsgi的代码是托管在github上的,地址如下:
https://github.com/GrahamDumpleton/mod_wsgi
3.编译
将下载下来的mod_wsgi-develop.zip文件解压缩到mod_wsgi-develop文件夹下,打开win32文件夹,可以看到如下的目录结构:
打开ap24py27-win32-VC9.mk文件,(这里根据你的环境选择mk文件进行编译)
- APACHE_ROOTDIR = c:\Apache24-win64-VC9
- PYTHON_ROOTDIR = c:\Python27-win64-VC9
- PYTHON_VERSION = 27
- include common-VC9.mk
将APACHE_ROOTDIR和PYTHON_ROOTDIR修改为你的实际位置
例如我的环境是这样的:
- APACHE_ROOTDIR = E:\windows_softs\apache64\Apache24
- PYTHON_ROOTDIR = c:\Python27
- PYTHON_VERSION = 27
- include common-VC9.mk
这个时候,直接使用对应的批处理进行编译即可,我的环境我选择的是build-win64-vc9.bat。
或者可以打开vs2008的编译命令行(如果是64位,请选择兼容x64的命令行)
打开后cd到你的源代码目录,执行如下操作
nmake /f ap24py27-win64-VC9.mk clean
nmake /f ap24py27-win64-VC9.mk install
即可。如果没有编译过的,请查看编译输出,是不是你的python或者apache的目录没有指定正确。
4.配置apache
编译完成后,会自动将mod_wsgi.so文件拷贝到你的apache/modules目录下的,这个时候你只需要配置即可。
配置的时候有几个重要参数是必须要配置的
<1>增加模块
- LoadModule wsgi_module modules/mod_wsgi-py27-VC9.so
<2>指定python的位置(如果不指定的话,apache的error.log会报ImportError: No module named site的错误)
WSGIPythonHome C:/Python27
<3>配置django的应用
- #指定myweb项目的wsgi.py配置文件路径
- WSGIScriptAlias / G:/localsvn/trunk/python/django/myblog/myblog/wsgi.py
- #指定项目路径
- WSGIPythonPath G:/localsvn/trunk/python/django/myblo
- <Directory G:/localsvn/trunk/python/django/myblog>
- <Files wsgi.py>
- Require all granted
- </Files>
- </Directory>
- #配置static的目录,需要django的settings中关闭debug模式,而且指定STATIC_ROOT,与本目录相同
- #如果有需要可以配置上传目录MEDIA_ROOT,对应MEDIA_URL
- Alias /static G:/localsvn/trunk/python/django/myblog/myblog/static
- <Directory G:/localsvn/trunk/python/django/myblog/myblog/static>
- AllowOverride None
- Options None
- Require all granted
- </Directory>
配置好了之后,启动apache服务器,如果能直接访问django的admin网址,那么恭喜你,配置成功了。另外,apache的默认端口是80,如果有需要可以根据实际情况进行配置。
django部署到apache上(非常重要的,3者版本要一致,是32位就都要是32位的)的更多相关文章
- Django部署到Apache Web Server
Windows环境下,将Django部署到Apache Web Server 在Windows上部署Django(用mod_wsgi)会出现各种奇怪的问题,现简单记录下配置过程及遇到的错误及解决方法. ...
- django 部署到 apache
安装完django之后,每次都需要通过命令来启动启动开发服务器.虽然调试和测试方便,但只能在本地运行,并且不能承受许多用户同时使用的负载.所以需要将Django部署到生产级的服务器,这里选择apach ...
- 如何将Django部署到Apache服务器上
操作环境: Ubuntu 16.04 Apache 2.4 Django 1.9 Python 2.7 mod_wsgi 前言:本教程纯自己查阅资料后整理,望对大家有帮助! 1. 安装 mod_ws ...
- Django Web在Apache上的部署
1. 安装配置Apache 2. 安装wsgi_mod模块 3. 开放相应端口 vim /etc/sysconfig/iptables # Firewall configuration written ...
- Windows环境下,将Django部署到Apache Web Server
在Windows上部署Django(用mod_wsgi)会出现各种奇怪的问题,现简单记录下配置过程及遇到的错误及解决方法. 环境搭建 ...
- 将 django部署到 heroku上
为什么要这样做,因为我并没有弄懂,使用传统和推荐的方法来部署django.刚好我手里有这么一份教程我就按照这么做了. 1. 访问 http://heroku.com/ 完成一个注册,注册需要一个国外的 ...
- django部署到linux上不显示.svg图标处理方法
在setting文件的最开始添加如下内容: import mimetypes mimetypes.add_type("image/svg+xml", ".svg" ...
- apache上部署django的静态文件
一直在优化自己博客的代码, 昨天把css样式表分离出来, 用作静态 文件, 但是自己还没学django怎么使用静态文件, 经过一番google 终于解决了. django 使用静态文件有两种方法, 一 ...
- Django项目部署到Apache服务器上
之前写了把Django部署到XAMPP上,但是有bug,翻apache日志的时候发现会无法import _ssl,然后我就怒而直接装apache2了 配置方法大约和这篇文章差不多 安装必要的包 sud ...
随机推荐
- hdu 4908(思路题)
BestCoder Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- 更新到xcode10以后出现几个无奈的问题,谨已此篇告诫广大ioser升级请慎重
1.第一次用xcode 10 archive的时候遇到的电脑卡死不动的问题,期间鼠标键盘通通都动不了,只能强制关机来解决,于是又进行了一次可还是遇到相同的问题,无奈之下只能等待,大约20分钟左右(20 ...
- JS-严格模式、非严格模式
2018年11月14日晚上,我在“深入理解javascript”书上第一次知道“严格模式”“非严格模式”这2个名词: “严格模式”使用指令:“use strict”: 这个指令我其实有经常看到,在其他 ...
- CSU-ACM2018寒假集训选拔-入门题
[题目链接]:http://vj.bit-studio.cn/contest/205664#overview A: [给你一个长度为n的序列,尾部插入再反转,求n次后最终序列][规律/思维] [分析] ...
- Algorithm | Random
随机生成[0,n)中不重复的m个数. class Random { public: Random(int n, int m):n(n), m(m) {} void generate() { srand ...
- iterator取集合元素
1,完整代码 //创建两个arraylist对象 Collection al = new ArrayList(); //al1添加元素 al.add("name1"); al.ad ...
- C# 格式化 中文星期 显示
最近有些小忙,直接贴代码吧, /// <summary> /// 获取系统的星期 /// </summary> /// <param name="dt" ...
- htop简介
htop可谓top的升级版,top不可以鼠标操作,但是htop可以使用鼠标操作 启动方式:命令行下输入htop直接启动,启动后的界面如图所示 操作:可以使用上下左右方向键进行移动查看.可以使用鼠标点击 ...
- 七天学会ASP.NET MVC(七)——创建单页应用 【转】
http://www.cnblogs.com/powertoolsteam/p/MVC_Seven.html 系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学 ...
- 【前端阅读】——《活用PHP、MySQL建构Web世界》摘记之高级应用
一.高级应用 1.计数器 计数器的原理很简单,只有两步: 第一步就是读写一个数字,第二步就是显示出来.一般CGI'大多直接写到文件系统,当然也可以利用MySQL来存储这个数字,完成第一步的操作. 第二 ...