Python-Django Win7上使用Apache24和mod_wsgi部署Django1.11应用程序

简介: Python-Django Win7上使用Apache24和mod_wsgi部署Django1.11应用程序

Win7上使用Apache24mod_wsgi部署Django1.11应用程序


 

测试环境

win7 64

Django-1.11.4.tar.gz

下载地址:https://pan.baidu.com/s/1hsclV5y

 

httpd-2.4.23-win64.zip

下载地址1https://www.apachelounge.com/download/VC10/

下载地址2https://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++ 编译器编译的ApachePython版本。

4、使用相同Microsoft C/C++ 编译器编译的Apachemod_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 -kstart

注: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.101Django所在主机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

 

浏览器验证

 

 

 


 

目录
相关文章
|
12天前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
63 21
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
12天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
41 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
8天前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
21 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
6天前
|
jenkins 持续交付 Docker
docker之自定义制作镜像(python程序)
docker之自定义制作镜像(python程序)
|
5天前
|
Python
Python 编程入门:打造你的第一个程序
【9月更文挑战第27天】编程,就像是在数字世界里绘画。想象一下,你手中的键盘是画笔,屏幕是画布,而代码则是你的颜料。这篇文章将带你走进编程的世界,学习如何使用 Python 这门语言来创建你的第一个程序。我们将从基础的语法开始,逐步深入到条件判断和循环结构,最终完成一个简单的猜数字游戏。无论你是否有编程经验,这里的内容都将为你打开一扇新的大门。
|
5天前
|
Windows Python
python获取windows机子上运行的程序名称
python获取windows机子上运行的程序名称
|
6天前
|
缓存 前端开发 Java
python之django
python之django
|
8天前
|
机器学习/深度学习 人工智能 算法
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
25 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
20天前
|
JSON 监控 数据挖掘
Python I/O管理新篇章:优化你的程序,让数据流动更顺畅
【9月更文挑战第13天】在数据驱动时代,Python因其在数据分析、科学计算及Web开发中的广泛应用而备受青睐。本文探讨了Python I/O管理的关键方面,包括理解I/O瓶颈、使用缓冲技术、并发与异步I/O、高效数据序列化及监控调试。通过具体示例,展示了如何优化文件读写和网络通信,提高程序性能。掌握这些技能,可使数据在程序中流动更加顺畅。
34 3
|
20天前
|
Python
惊!Python进程间通信IPC,让你的程序秒变社交达人,信息畅通无阻
【9月更文挑战第13天】在编程的世界中,进程间通信(IPC)如同一场精彩的社交舞会,每个进程通过优雅的IPC机制交换信息,协同工作。本文将带你探索Python中的IPC奥秘,了解它是如何让程序实现无缝信息交流的。IPC如同隐形桥梁,连接各进程,使其跨越边界自由沟通。Python提供了多种IPC机制,如管道、队列、共享内存及套接字,适用于不同场景。通过一个简单的队列示例,我们将展示如何使用`multiprocessing.Queue`实现进程间通信,使程序如同社交达人般高效互动。掌握IPC,让你的程序在编程舞台上大放异彩。
14 3
下一篇
无影云桌面