简介

在 Django 的学习过程中, 我们一直使用 Django 的 manage.py 的runserver 命令来运行 Django 应用, 这个命令启动的是 Django 自带的用于开发的简易服务器, 它是一个用纯 Python 写的轻量级的 Web 服务器. 这个服务器内置在 Django 中是为了方便开发, 并不适用于实际的生产环境. 当项目真正部署上线的时候我们就必须 Django 项目部署到特定的web服务器上了.

这里我们采用的是 windows+apache+django 方式.

我的配置

安装apache

Apache官方网站: http://httpd.apache.org/

在Apache官方网站中的 download 界面中找到 Files for Microsoft Windows

21

进入后一般选择第一个 ApacheHaus , 这是个第三方下载平台

22

这里我下载的是 Apache 2.4.39 x64

23

下载后解压缩文件, 将其中的 Apache24文件夹 放到你想放置的目录下, 这里我选择放在云服务器的桌面上, 即 C:\Users\Administrator\Desktop\web\ 目录下.

修改 Apache24/conf/httpd.conf 文件:

1
2
3
4
5
6
Define SRVROOT "C:\Users\Administrator\Desktop\web\Apache24"    #将全局变量改成自己 Apache24 的位置
......
Listen 127.0.0.1:80 #修改ip地址和端口号
......
ServerName 127.0.0.1:80 #修改ip地址和端口号
......

主要就是路径和端口号的修改, 如果你在启动 apache 的 httpd.exe 程序后打不开 http://127.0.0.1 , 请检查这些配置.

启动 Apache24/bin/httpd.exe 程序

通过浏览器访问: http://127.0.0.1/

若出现 It works! 界面, 则表明安装成功.

安装mod_wsgi

mod_wsgi 是一个 Apache 模块, 它可以管理任何 Python WSGI 应用, 包括 Django. Django 支持所有支持 mod_wsgi 的 Apache 版本.

下载地址: http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

这里配置 Apache-httpd-2.4.39-win64-VC14, python3.7 对应版本为: mod_wsgi‑4.5.24+ap24vc14‑cp37‑cp37m‑win_amd64.whl

下载后, 在 cmd界面 用 pip install 该文件的位置/mod_wsgi‑4.5.24+ap24vc14‑cp37‑cp37m‑win_amd64.whl 安装该模块.

安装后在 cmd界面 输入 mod_wsgi-express module-config 命令, 显示该模块的安装信息.

24

复制下来备用.

配置apache和django项目

这里我的 Apache24 和 django 项目均放在桌面的 web文件夹中, 即 C:\Users\Administrator\Desktop\web\ 目录下.

25

再次打 Apache24/conf/httpd.conf 文件, 在文件的末尾加上以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
……
#添加 mod_wsgi 模块, 即上文备用的信息.
LoadFile "c:/python37/python37.dll"
LoadModule wsgi_module "c:/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/python37"

#指定项目的wsgi.py配置文件路径,这个py文件是在你的Django项目中
WSGIScriptAlias / C:\Users\Administrator\Desktop\web\mysite\mysite\wsgi.py

#指定项目目录, 即你的Django项目路径
WSGIPythonPath C:\Users\Administrator\Desktop\web\mysite
<Directory C:\Users\Administrator\Desktop\web\mysite\mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

#项目静态文件地址, 即Django项目中静态文件的路径
Alias /static C:\Users\Administrator\Desktop\web\mysite\polls\static
<Directory C:\Users\Administrator\Desktop\web\mysite\polls\static>
AllowOverride None
Options None
Require all granted
</Directory>

#项目media地址, 上传图片等文件夹的路径
Alias /media C:\Users\Administrator\Desktop\web\mysite\polls\media
<Directory C:\Users\Administrator\Desktop\web\mysite\polls\media>
AllowOverride None
Options None
Require all granted
</Directory>

然后打开Django项目内的 mysite\mysite\settings.py 文件进行配置:

1
2
3
4
5
DEBUG = False

TEMPLATE_DEBUG = False

ALLOWED_HOSTS = ['*']

最后再次启动 Apache24\bin\httpd.exe 程序, 通过浏览器访问: http://127.0.0.1/ 即可看到你的 django项目了.

如果出错, 可以进入 Apache24\logs\ 文件夹中查看错误信息并设法解决.

成功部署后如果想要你的Django项目能通过局域网访问, 则需要进一步的配置.

打开 Apache24/conf/httpd.conf 配置文件, 修改 ip地址 为 你的ip地址即可(云服务器要用内网地址):

1
2
3
4
5
......
Listen 你的ip地址和端口号
......
ServerName 你的ip地址和端口号
......

保存文件, 再重启 httpd.exe 程序就部署完成了.

参考资料

  1. Apache部署django项目 - 虫师 - 博客园
  2. Windows下实现Django + Apache 部署 - Mr_blueD的博客 - CSDN博客