Django 部署(发布)在Windows Apache上
安装 apache
Apache 官方网站: http://httpd.apache.org/
https://www.apachehaus.com/cgi-bin/download.plx
在Apache官方网站中的 download 界面中找到 Files for Microsoft Windows
下载后解压缩文件, 将其中的 Apache24文件夹 放到你想放置的目录下, 这里我选择放在 D:\software\ 目录下.
解压 D:\software\httpd-2.4.52-o111m-x64-vc15
修改 D:\software\httpd-2.4.52-o111m-x64-vc15\Apache24\conf\httpd.conf
Apache24/conf/httpd.conf 文件:
Define SRVROOT Define SRVROOT "D:\software\httpd-2.4.52-o111m-x64-vc15\Apache24" #将全局变量改成自己 Apache24 的位置 ...... Listen 127.0.0.1:80 #修改ip地址和端口号 ...... ServerName 127.0.0.1:80 #修改ip地址和端口号 ......
主要就是路径和端口号的修改, 如果你在启动 apache 的 httpd.exe 程序后打不开 http://127.0.0.1 , 请检查这些配置.
启动 D:\software\httpd-2.4.52-o111m-x64-vc15\Apache24\bin\httpd.exe 程序
如出现以下错误,443端口被占用,修改conf目录中的extra目录下的两个文件,将其443端口修改为442或444均可
D:\software\httpd-2.4.52-o111m-x64-vc15\Apache24\bin>httpd.exe (OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : AH00072: make_sock: could not bind to address [::]:443 (OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : AH00072: make_sock: could not bind to address 0.0.0.0:443 AH00451: no listening sockets available, shutting down AH00015: Unable to open logs
443端口被占用,修改conf目录中的extra目录下的两个文件,将其443端口修改为442或444均可
D:\software\httpd-2.4.52-o111m-x64-vc15\Apache24\conf\extra
httpd-ahssl.conf
httpd-ssl.conf
通过浏览器访问: http://127.0.0.1/
下载安装mod_wsgi
mod_wsgi 是一个 Apache 模块, 它可以管理任何 Python WSGI 应用, 包括 Django. Django 支持所有支持 mod_wsgi 的 Apache 版本.
下载地址: http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
这里配置 python3.8 对应版本为: mod_wsgi-4.9.0-cp38-cp38-win_amd64.whl , 把该文件放到 python 3.8 的安装目录的 scripts 下面。
下载后, 在 cmd界面 用 pip install mod_wsgi-4.9.0-cp38-cp38-win_amd64.whl 安装该模块.
安装后在 cmd 界面 输入 mod_wsgi-express module-config 命令, 显示该模块的安装信息.
C:\Python38\Scripts>pip install mod_wsgi-4.9.0-cp38-cp38-win_amd64.whl Processing c:\python38\scripts\mod_wsgi-4.9.0-cp38-cp38-win_amd64.whl Installing collected packages: mod-wsgi Successfully installed mod-wsgi-4.9.0 C:\Python38\Scripts>mod_wsgi-express module-config LoadFile "c:/python38/python38.dll" LoadModule wsgi_module "c:/python38/lib/site-packages/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd" WSGIPythonHome "c:/python38"
复制下来备用.
部署Django与Apache
再次打 Apache24/conf/httpd.conf 文件, 在文件的末尾加上以下代码:
#添加 mod_wsgi 模块, 即上文备用的信息. LoadFile "c:/python38/python38.dll" LoadModule wsgi_module "c:/python38/lib/site-packages/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd" WSGIPythonHome "c:/python38" #指定项目的wsgi.py配置文件路径,这个py文件是在你的Django项目中 WSGIScriptAlias / D:\temp-test\djangodemo\app02\app02\wsgi.py #指定项目目录, 即你的Django项目路径 WSGIPythonPath D:\temp-test\djangodemo\app02 <Directory D:\temp-test\djangodemo\app02\app02> <Files wsgi.py> Require all granted </Files> </Directory> #项目静态文件地址, 即Django项目中静态文件的路径 Alias /static D:\temp-test\djangodemo\app02\app02\static <Directory D:\temp-test\djangodemo\app02\app02\static> AllowOverride None Options None Require all granted </Directory> #项目media地址, 上传图片等文件夹的路径 Alias /media D:\temp-test\djangodemo\app02\app02\media <Directory D:\temp-test\djangodemo\app02\app02\media> AllowOverride None Options None Require all granted </Directory>
然后打开Django项目内的 D:\temp-test\djangodemo\app02\app02\settings.py 文件进行配置:
DEBUG = False TEMPLATE_DEBUG = False ALLOWED_HOSTS = ['*']
最后再次启动 Apache24\bin\httpd.exe 程序, 通过浏览器访问: http://127.0.0.1/ 即可看到你的 django项目了.
如果出错, 可以进入 Apache24\logs\ 文件夹中查看错误信息并设法解决.
REF
https://blog.csdn.net/sinat_41292836/article/details/103772521
https://www.cnblogs.com/hemomo/p/12339902.html
https://www.jb51.net/article/197234.htm
https://www.cnblogs.com/feifeifeisir/p/13792353.html