一、部署环境
- Python 3.7
- Django 2.1.7
- window7 64位
二、Apache下载与配置
1.进入Apache官网下载页面,https://www.apachehaus.com/cgi-bin/download.plx 下载对应版本:
选择的是Apache2.4 VC14,点击后跳转到下图,点击对应版本的Download。
2.下载后得到一个压缩文件,直接解压缩,文件夹里的Apache24文件夹就是Apache服务器文件,不需要安装,直接将Apache24文件夹移动到你想放的位置。我这里直接将Apache24移动到D盘根目录:
3.配置Apache服务器文件:
进入D:\Apache24\conf目录,找到httpd.conf文件,这个就是apache服务器的配置文件。
我用Windows自带的写字板打开(也可以用其它编程工具),会看到很多代码,不用管,也不要删除任何代码,直接找到如下代码行进行修改:
Define SRVROOT "D:/Apache24" # Apache24文件的路径,
...
Listen 127.0.0.0:80 #此处为你要发布的网站ip地址,此处我用127.0.0.1:80 用于本地测试;80端口自己设置
...
ServerName localhost:80 # 由于本地测试,我没有改
Tips:这里可以使用查找命令,快捷键 Ctrl+F
4.创建Apache服务
打开命令行(管理员),cd进入D:\Apache24\bin文件夹(此处根据自己实际Apache24文件夹所在位置为准),输入如下代码创建服务:
httpd.exe -k install -n "apache2.4" #apache2.4是所创建服务器名称,可更改。
出现successfully installed说明服务创建成功;同时后面可能会跟一些其他信息,说明你的配置是否正确,有错的话再检查步骤3,看路径,ip是否正确。如果遇到c++插件报错,下载安装即可。
创建成功后,进入D:\Apache24\bin,运行 ApacheMonitor.exe 启动服务。
打开浏览器,在地址栏输入 127.0.0.1 显示如下页面表示成功:
三、配置Django
1.安装mod_wsgi
进入https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 下载相应版本mod_wsgi Python的插件。ap24cv24指apache版本,比如apache24, cp37指python3.7,win_adm64指操作系统为64位。
此处直接将该whl文件复制到python路径下的script文件夹下(可以通过python快捷方式的目标查找),我的是C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts。cd进入该路径(可以在当前窗口的地址栏输入cmd,然后回车),命令行输入
pip3 install "mod_wsgi-4.5.24+ap24vc14-cp37-cp37m-win_amd64.whl"
引号中的文件名根据实际更改,安装成功后再输入
mod_wsgi-express module-config
出现以下三行提示,这三行一定要记下来,后面配置最重要的就是它了:
LoadFile "c:/users/administrator/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python37"
至此,mod_wsgi安装成功。
2.配置django项目
再次打开httpd.conf文件,再最末尾添加如下代码,具体解释看注释,实际情况根据自己的项目位置更改。
# 1.安装wsgi模块后,出来的三行字符,直接复制过来
LoadFile "c:/users/administrator/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python37"
# 2.设置工程中的wsgi路径
WSGIScriptAlias / D:\website\website\website\wsgi.py
# 3.设置工程路径
WSGIPythonPath D:\website\website
# 4.设置wsgi路径
<Directory D:\website\website\website>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
#设置静态文件路径
Alias /static D:\website\website\website\static
<Directory D:\website\website\website\static>
AllowOverride None
Options None
Require all granted
</Directory>
Tips:
关于Django的静态文件:
1.Django项目的在settings.py中的STATIC_URL = '/static/'后面添加
STATIC_ROOT = os.path.join(BASE_DIR, 'static'),
2.Django收集静态文件命令:python manage.py collectstatic
写好后保存文件,回到服务器管理器,找到apache2.4重启服务(记住要重启服务)。
熟悉的界面大功告成!
倘若想在局域网下访问该站点,可按照如下链接操作https://jingyan.baidu.com/article/b87fe19e639a8052183568be.html直接从第五步看,建议别关闭防火墙。
Tips:
1.输入主机IP地址不能访问,请修改D:\Apache24\conf\httpd.conf文件
Listen 127.0.0.0:80
为Listen 192.168.31.155:80
。
2.出现“Invalid HTTP_HOST header: '192.168.1.111:8000'. You may need to add '192.168.1.111' to ALLOWED_HOSTS”错误请修改Django的setting文件中ALLOWED_HOSTS = ['*']