Python-Django Win7上使用Apache24和mod_wsgi部署Django1.11应用程序
Win7上使用Apache24和mod_wsgi部署Django1.11应用程序
by:授客 QQ:1033553122
测试环境
win7 64
Django-1.11.4.tar.gz
下载地址:https://pan.baidu.com/s/1hsclV5y
httpd-2.4.23-win64.zip
下载地址1:https://www.apachelounge.com/download/VC10/
下载地址2:https://pan.baidu.com/s/1hsclV5y
Python 3.4.0
Apache24-win64-VC10|mod_wsgi-py34-VC10.so
下载地址:https://pan.baidu.com/s/1hsclV5y(链接包含不同版本的集合包)
软件包依赖VS2010

先决条件
注意,部署之前,必须先满足以下几个条件
1、位数要对。操作系统,安装的对应软件,要么统一32位,要么统一用64位,不要混用。
2、安装Python时选择为所有用户安装,而不是仅为安装python的用户安装。
3、使用相同Microsoft C/C++ 编译器编译的Apache和Python版本。
4、使用相同Microsoft C/C++ 编译器编译的Apache和mod_wsgi版本。
以下为Python版本和C/C++编译器的对应关系
Python 2.6 - VC9
Python 2.7 - VC9
Python 3.3 - VC10
Python 3.4 - VC10
以下为Apache版本和mod_wsgi版本的对应关系
Apache22-win32-VC9/modules/mod_wsgi-py26-VC9.so
Apache22-win32-VC9/modules/mod_wsgi-py27-VC9.so
Apache24-win32-VC9/modules/mod_wsgi-py26-VC9.so
Apache24-win32-VC9/modules/mod_wsgi-py27-VC9.so
Apache24-win32-VC10/modules/mod_wsgi-py33-VC10.so
Apache24-win32-VC10/modules/mod_wsgi-py34-VC10.so
Apache24-win64-VC10/modules/mod_wsgi-py33-VC10.so
Apache24-win64-VC10/modules/mod_wsgi-py34-VC10.so
参考链接:
https://github.com/GrahamDumpleton/mod_wsgi/blob/develop/win32/README.rst
部署操作
项目文件结构


解压httpd-2.4.23-win64.zip,取出其中的目录(例中Apache24),放到目标路径(不能有空格等),例中D:/Apache24
检查Apache版本是否正确
cd /d D:/Apache24/bin
httpd.exe -V
Server version: Apache/2.4.23 (Win64)
……
修改Apache配置
打开conf/httpd.conf文件,编辑,修改服务器根目录
ServerRoot "c:/Apache24" 改成 ServerRoot "d:/Apache24"
然后查找所有的 "c:/Apache24",全部改成 "d:/Apache24"
修改监听端口(可选,根据实际需要)
Listen 80 改成 Listen 8000
修改服务器名称(建议)
#ServerName www.example.com:80 改成 ServerName 192.168.1.101:80
注:这里我没有注册域名,直接改成了本机ip
去掉#注释,打开访问日志
CustomLog "logs/access.log" common
修改#LoadModule rewrite_module modules/mod_rewrite.so 为如下:
LoadModule rewrite_module modules/mod_rewrite.so
说明:加载重写模块,防止出现 The requested URL / was not found on this server的情况。
找到如下配置
AllowOverride none
Require all denied
修改为
AllowOverride ALL
Require all granted
说明:配置更改,以防止出现如下情形:
Forbidden
You don't have permission to access / on this server.
启动Apache
1)httpd.exe -k install -n Apache2.4
Installing the 'Apache2.4' service
The 'Apache2.4' service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service can be started.
注:install:把Apache注册为Windows服务,反之 uninstall, -n 接服务名称
2) httpd.exe -k start
注:start 启动, stop 停止
浏览器访问


添加mod_wsgi.so模块
把mod_wsgi-py34-VC10.so重命名为mod_wsgi.so,放入D:\Apache24\modules目录下。
参考链接:
http://modwsgi.readthedocs.io/en/develop/
https://pypi.python.org/pypi/mod_wsgi
再次修改Apache 配置
打开conf/httpd.conf文件,编辑,在末尾添加一下内容:
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias / D:/AutotestPlatform/AutotestPlatform/wsgi.py
WSGIPythonHome "D:/Program Files (x86)/python34"
WSGIPythonPath D:/AutotestPlatform/AutotestPlatform/website
Alias /static/ D:/AutotestPlatform/website/static/
<Directory D:/AutotestPlatform/website/static>
Require all granted
</Directory>
<Directory D:/AutotestPlatform/AutotestPlatform/website/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
说明:
LoadModule 加载模块
WSGIScriptAlias 设置base URL, / 代表应用程序root url
WSGIPythonHome 设置python安装路径,
WSGIPythonPath 用于确保项目包可导入,即import AutotestPlatform 有效。
<Directory> 保证Apache可访问wsgi.py,及其它必要文件。
以下设置Apache通过mod_wsgi为静态资源服务
Alias /static D:/AutotestPlatform/AutotestPlatform/website/static/
<Directory D:/AutotestPlatform/AutotestPlatform/website/static>
Require all granted
</Directory>
注意:如果使用的apache低于2.4版本,修改Require all granted 为如下内容:
Order deny,allow
Allow from all
参考链接:
https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/modwsgi/
https://github.com/GrahamDumpleton/mod_wsgi/blob/develop/win32/README.rst
收集静态配置文件
1)修改应用的settings.py(例中为D:\AutotestPlatform\AutotestPlatform\settings.py)
STATIC_URL = '/static/' 改行下方新增如下内容:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
2)运行命令,收集静态文件到指定的static目录
cd /d D:\AutotestPlatform
python manage.py collectstatic
You have requested to collect static files at the destination
location as specified in your settings:
D:\AutotestPlatform\static
This will overwrite existing files!
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel: yes #输入yes,回车
完成后,把收集的静态文件都放到 D:\AutotestPlatform\static目录下
参考链接:
https://pypi.python.org/pypi/mod_wsgi
Django访问IP配置
修改应用的settings.py(例中为D:\AutotestPlatform\AutotestPlatform\settings.py),编辑,找到ALLOWED_HOSTS修改为如下值,其中192.168.1.101是Django所在主机ip,也就是客户端浏览器访问用的IP
ALLOWED_HOSTS = ['localhost','127.0.0.1','192.168.1.101']
修改wsgi.py
如下,新增带背景色内容,以解决找不到AutotestPlatform模块的问题
from django.core.wsgi import get_wsgi_application
import sys
sys.path.append('D:/AutotestPlatform/AutotestPlatform/')
sys.path.append('D:/AutotestPlatform/')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "AutotestPlatform.settings")
application = get_wsgi_application()
重启Apache并启动Django应用
D:\Apache24\bin>httpd.exe -k stop
The 'Apache2.4' service is stopping.
The 'Apache2.4' service has stopped.
D:\Apache24\bin>httpd.exe -k start
说明:到这一步,已经可以浏览器访问了,以下为了看对比效果,同时开启了Django
启动Django
python manage.py runserver 0.0.0.0:8001 --insecure
浏览器验证




Python-Django Win7上使用Apache24和mod_wsgi部署Django1.11应用程序的更多相关文章
- 使用Nginx+uwsgi在亚马逊云服务器上部署python+django项目完整版(二)——部署配置及相关知识
---恢复内容开始--- 一.前提: 1.django项目文件已放置在云服务器上,配置好运行环境,可正常运行 2.云服务器可正常连接 二.相关知识 1.python manage.py runserv ...
- Python - Django - 页面上展示固定的页码数
如果页数太多的话,全部显示在页面上就会显得很冗杂 可以在页面中显示规定的页码数 例如: book_list.html: <!DOCTYPE html> <html lang=&quo ...
- Python Django文件上传
文件保存本地 view视图 def update(request): if request.method =='GET': return render(request,'update.html') e ...
- python django 批量上传文件并绑定对应文件的描述
- Win7上IIS发布网站系统\部署项目
1.系统已经安装IIS,如果没有安装,请到[控制面板]→[程序]→[程序和功能]→[打开或关闭Windows功能],选中Internet 信息服务Web管理工具下面的所有选项,确定:如下图 2.发布文 ...
- CentOS 5系统安装Django、Apache 、mod_wsgi部署Python环境教程
Django,是一款针对Python环境的WEB开发框架,能够帮助我们构架快捷.简单的WEB框架设置,Django框架非常适合开发内容应用环境,所以在本文中,麦子将整理基于Centos系统部署安装Dj ...
- 使用Visual Studio 2017开发python,并在iis上部署Python Django
作为宇宙第一IDE,怎么可以不支持python开发呢? 1.Visual Studio Installer 扩展Python开发 开始菜单中打开Visual Studio Installer,点修改. ...
- python Django之文件上传
python Django之文件上传 使用Django框架进行文件上传共分为俩种方式 一.方式一 通过form表单进行文件上传 #=================================== ...
- [原创]win7环境下搭建eclipse+python+django开发环境
一)工具下载 a)eclipse(最新版4.3.1)官网下载地址 http://www.eclipse.org/downloads/ b)python (2.X版本)官网下载地址 http://pyt ...
随机推荐
- python(leetcode)-重复元素算法题
leetcode初级算法 问题描述 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 该问题表述非常简单 ...
- netty中的传输
终于在课设的闲时间把netty实战的四五章给解决了 这里来记录一下第四章里面所讲的IO 首先说到IO,我想,必须要先了解阻塞,非阻塞,同步和异步这四个词 看到一个讲的很易懂的例子:https://ww ...
- javascript数组的属性、方法和清空-最全!!!(必看)
今天经理要我从新看一遍js,当我再看<精通js和jquery>这本书时,发现关于数组的这章节讲的很少,于是想自己总结一下数组的常用方法. 定义数组: var arr = new Array ...
- Ubuntu安装Python2.7,nodejs,Redis
安装Python2.7 sudo add-apt-repository ppa:fkrull/deadsnakes-python2.7sudo apt-get update sudo apt-get ...
- DWR第二篇之逆向Ajax
1. 本示例在第一篇架构基础上添加代码 2. 首先修改web.xml里dwr的servlet配置: <!-- 配置dwr请求的servlet --> <servlet> < ...
- Go实用开源库收集
框架 https://github.com/go-martini/martini 图形验证码 https://github.com/dchest/captcha ORM https://github. ...
- Java——构造方法和匿名对象
前言 在编写程序时不安全的初始化会导致程序发生发生重大错误.为了使程序可以被安全地初始化,C++引入了构造器(也可以成为构造方法)的概念,这是一个在创建对象时被自动调用的特殊方法.Java中也采用了构 ...
- 02_python是一种什么语言?
python是一种什么语言? 1.低级语言与高级语言 最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果.后来为了方便记忆,就将用0.1序列 ...
- SpringBoot系列——花里胡哨的banner.txt
前言 我们注意到springboot项目启动时,控制台会打印自带的banner,然后对于部分IT骚年来说,太单调太普通太一般了:所以,是时候表演真正的技术了 项目结构 我们只需要在springboot ...
- 怎么将XML字符串转换为XmlDocument,并获取部分节点值
我们的目标:解析XML字符串,并获取节点:z:row下的属性:ows_LinkFilename的值集合??? XML字符串数据结构如下: <listitems xmlns:s='uuid:BDC ...