Python Web学习记录之Django(八) -- 使用Apache作为服务

本文介绍了在Windows 10上使用Apache 2.4和Python 3.6部署Django 2.0.5项目的过程,包括Apache的安装、配置,mod_wsgi的安装和项目配置,详细记录了解决遇到问题的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是去年5月份写的文章…不知道为何一直在草稿箱里面,现在才发现,把它发表出来好了


在前面的章节中我们使用 python manage.py runserver 来运行服务器。这只适用测试环境中使用。正式发布的服务,我们需要一个可以稳定而持续的服务器,比如apache, Nginx, lighttpd等,菜鸟教程中是以 Nginx 为例。现在我用Apache作为服务器进行部署。
环境:Windows 10
python:3.6-64位
Django:2.0.5
Apache:2.4-64位
虽然在网上也有很多在Windows上部署的文章,但是我在部署的时候也遇到了很多问题,搜索了大量的资料才得以解决。所以在这里记录一下。


#1. 安装Apache2.4
地址:http://www.apachelounge.com/download/
下载vc_redist_x64/86.exe.和httpd-2.4.33-win64-VC14.zip
这里写图片描述
如果你也是用的python3.6,这里一定要选择VC14版本进行下载。后面再做解释。
##1.1 vc_redist_x64/86.exe
直接安装:
这里写图片描述
##1.2 Apache

环境变量

解压下载的压缩文件httpd-2.4.33-win64-VC14.zip并配置环境变量:path增加…Apache24\bin; (视自己的解压目录而定)

配置文件

修改配置文件: Apache24\conf\httpd.conf :
这里写图片描述
这里写图片描述
这里的端口号可自行设置
这里写图片描述
服务名也可自己设置,端口号与Listen中一致
这里写图片描述
这里写图片描述
这里写图片描述

测试

在Apache\Apache24\bin使用cmd>httpd 。然后访问Listen中配置的地址加index.html。如我的为:
这里写图片描述
显示**It works!**表示安装成功。
#2. mod_wsgi
安装mod_wsgi。
先安装:pip install wheel。
然后在https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi中下载对应你版本的whl文件,如根据我的环境,我选择了下面这个文件
这里写图片描述
看吧,python3.6 只有VC14版本的Apache能匹配,这都是我走过的弯路。。。
下载了之后 使用pip 安装(这步我是把文件复制到python的scripts目录下执行的):pip install mod_wsgi-4.6.4+ap24vc14-cp36-cp36m-win_amd64.whl
但是我的还是还是报了错:
mod_wsgi-4.6.4+ap24vc14-cp36-cp36m-win_amd64.whl is not a supported wheel on this platform.
在网上查了资料,.whl文件的命名格式很严格,我们在网上下载的文件不符合。因此查看pip的支持:

import pip._internal.pep425tags as my
print(my.get_supported())

得到

[('cp36', 'cp36m', 'win32'), ('cp36', 'none', 'win32'),
 ('py3', 'none', 'win32'), ('cp36', 'none', 'any'), 
('py3', 'none', 'any'), ('py35', 'none', 'any'), 
('py34', 'none', 'any'), ('py33', 'none', 'any'), 
('py32', 'none', 'any'), ('py31', 'none', 'any'),
 ('py30', 'none', 'any')]

所以安装这个规则,我把文件更改为mod_wsgi-4.6.4+ap24vc14-cp36-cp36m-win32.whl再次使用pip安装,安装成功。
这里写图片描述

3. 配置项目工程

配置Apache2.4、mod_wsgi、django项目工程 。
##3.1 配置mod_wsgi
网上很多教程指出,将 \mod_wsgi.so 拷贝至 Apache24\modules下 。
然后在httpd.conf中添加mod_wsgi.so 模块
LoadModule wsgi_module modules/mod_wsgi.so
如果你找得到这个方法,就这样做。
但是我这里找不到mod_wsgi.so文件,再次查阅资料得到解决方法。
在python的scripts目录下执行命令
mod_wsgi-express module-config
得到三行输出:

LoadFile "d:/environment/python36/python36.dll"
LoadModule wsgi_module "d:/environment/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win32.pyd"
WSGIPythonHome "d:/environment/python36"

将这三行输出添加到httpd.conf中取代 LoadModule wsgi_module modules/mod_wsgi.so
这里写图片描述

3.2 配置Django

指定静态资源路径

Alias /statics/ D:/workspace/workspaceDjango/testApp/templates/
<Directory D:/workspace/workspaceDjango/testApp/templates>
    Require all granted    
</Directory>

指定项目的wsgi.py配置文件路径

WSGIScriptAlias / D:/workspace/workspaceDjango/testApp/testApp/wsgi.py

指定项目路径

WSGIPythonPath D:/workspace/workspaceDjango/testApp
      
<Directory D:/workspace/workspaceDjango/testApp/testApp>    
    <Files wsgi.py>    
        Require all granted 
    </Files>
</Directory>

3.3 编辑setting.py

编辑项目中的setting.py文件
这里写图片描述

4. 启动Apache

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值