目录
前言
参考各种关于apache服务器部署django的博客,发现很多博客都写的很片面,而且很多都有错误,照着配置根本部署不了,经过各种调试后最终被搞定,所以写下该博客,希望能帮助到需要的人。
一、Apache的安装
进入 Apache官网下载页面下载windows版本的Apache ,这里就会出现第一个坑,apache的编译VS版本必须和python的编译VS版本一致,我们可以在命令行调用python端口
我们可以看到一个数字MSC V.1928,这个就是我当前版本python对应的vs版本,带入下面代码表
Visual C++ version _MSC_VER
Visual C++ 4.x 1000
Visual C++ 5 1100
Visual C++ 6 1200
Visual C++ .NET 1300
Visual C++ .NET 2003 1310
Visual C++ 2005 (8.0) 1400
Visual C++ 2008 (9.0) 1500
Visual C++ 2010 (10.0) 1600
Visual C++ 2012 (11.0) 1700
Visual C++ 2013 (12.0) 1800
Visual C++ 2015 (14.0) 1900
Visual C++ 2017 (15.0) 1910
Visual C++ 2017 (15.3) 1911
Visual C++ 2017 (15.5) 1912
Visual C++ 2017 (15.6) 1913
Visual C++ 2017 (15.7) 1914
Visual C++ 2017 (15.8) 1915
Visual C++ 2017 (15.9) 1916
Visual C++ 2019 RTW (16.0) 1920
Visual C++ 2019 (16.1) 1921
Visual C++ 2019 (16.2) 1922
Visual C++ 2019 (16.3) 1923
Visual C++ 2019 (16.4) 1924
Visual C++ 2019 (16.5) 1925
Visual C++ 2019 (16.6) 1926
Visual C++ 2019 (16.7) 1927
Visual C++ 2019 (16.8) 1928
可以发现1928对应的vs16,那么我们必须要下载vs16的apche
同时也需要注意你的python版本是32位还是64位,并下载对应的版本。
下载完成后,解压到你要部署服务器的文件夹。你要部署服务器的电脑磁盘下建立一个英文目录,注意千万别用中文目录。
最好是放在和django文件同级目录
二、配置基础apache
配置该文件是最核心的,打开conf文件夹内的httpd.conf文件,对以下几个地方配置:
1、32行配置apache主目录,前面两个端口号是apache本地运行需要的端口,如何和本地端口有冲突,注意修改。
2、67行监听端口号配置,注意选择的端口就是你后端的运行端口
3、服务配置256行,配置服务,这里面的地址就是后端服务的发布地址
4、 配置完成后,将Apache下的bin目录添加到系统环境变量
5、安装apache,在cmd命令行输入httpd -k install
如图所示,即代表服务器安装成功
6、启动服务器
打开bin目录下的ApacheMonitor.exe
点击start则启动服务,服务器启动成功后,可以按在浏览器中输入的ip地址进行访问apache主页
如果到这一步都没问题书面apache已经安装完毕,我们需要进入django进行配置
三、安装配置mod_wsgi库
该库会让django的wsgi和apache进行联通,所以该库的版本尤为重要,需要对应apache和python版本,在http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi网站下载mod_wsgi.whl文件
4.7.1版本后默认支持apacheV16和V17两个版本,所以我们只需要关系python版本一致性,cp后面就代表python版本,还需要注意64位和32位的对应关系。
下载完成后将该whl文件解压至python环境的Scripts目录下
如果是虚拟环境,则需要先进入虚拟环境,带venv则代表进入虚拟环境。
cd进入Scripts并pip安装该库
出现successful则说明安装成功
输入mod_wsgi-express module-config
记录下这三行配置,下一步使用
三、配置django环境到apache
将mod_wsgi下载后的config信息,复制粘贴到apache中的httpd.conf文件,
并加入WSGIApplicationGroup %{GLOBAL}
LoadFile "C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python38.dll"
LoadModule wsgi_module "g:/django1/venv/lib/site-packages/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd"
WSGIPythonHome "g:/django1/venv"
WSGIApplicationGroup %{GLOBAL}
然后输入
#设置django工程中的wsgi路径
WSGIScriptAlias / G:/django1/django1/wsgi.py
#设置django工程路径
WSGIPythonPath G:/django1
#设置wsgi的文件夹路径
<Directory F:/django1/django1>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
#设置静态文件路径
Alias /static G:/django1/static
<Directory G:/django1/static>
AllowOverride None
Options None
Require all granted
</Directory>
#设置媒体文件
Alias /media G:/django1/media
<Directory G:/django1/media>
AllowOverride None
Options None
Require all granted
</Directory>
然后在Apache24\conf\extra路径中的httpd-vhosts.conf设置django网络端口,这里的8080就是前面的监听端口,其他路径都是django路径
<VirtualHost *:8080 >
ServerAdmin [email protected]
WSGIScriptAlias / G:/django1/django1/wsgi.py
DocumentRoot G:/django1/django1
<Directory "G:/django1">
Require all granted
</Directory>
</VirtualHost>
四、给apache配置python环境
很多同学忘记这apache启动不了就是因为启用了虚拟环境,让apache找不到python路径,所以需要在系统环境变量中配置pythonhome和pythonpath
注意,这里的路径为mod_wsgi-express module-config后的loadfile的python主路径
五、重启apache
点击重启完成配置,在Apache24\logs路径中的可以查看各种日志,如果发现报错,查看对应日志修改错误即可。
重新请求地址,django后端部署成功
注意django正式上线时,需要把debug换成FALSE。
DEBUG = False
ALLOWED_HOSTS = ['*']