折腾了一下午,总算把django项目部署到apache中了,在这里做下简单的小结。本文不做详细介绍,只是把要注意的事项强调一下。
方案
本来打算使用nginx+gunicorn+django启动项目,但是发现安装gunicorn之后,无法运行,查原因说是gunicorn不支持在windows系统,于是作罢。
转战nginx+uwsgi+django,但是又发现uwsgi也不支持windows,于是找到apache,开始折腾。
- 所以:如果你是windows环境下:那么gunicorn和uwsgi方案都是不可行的,apache+django可行。
具体实施
1.安装apache
下载地址:https://www.apachelounge.com/download/VC14/
- 注意:要下载VC14版本的,具体是64还是32,这个要和你安装的python版本一样
- 安装好做下简单的配置
Define SRVROOT "C:\Apache24" #Apache24文件的路径,其余不用改。
Listen 192.168.31.227:8000 #此处为你要发布的网站ip地址,此处我用我电脑的ip和端口,你也可以用127.0.0.1:8000用于本地测试;80端口自己设置
ServerName 192.168.31.227:8000
- apache一些命令
httpd -k install
httpd -k start
重启命令:httpd -k restart
关闭命令:httpd -k stop
2.安装mod_wsgi
下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
- 注意:第一处红线,与apache VC14对应,所以,第一步下载apache要下载VC14版本,明白了吧。否则可能出现
cannot load *.dll into server
的错误。 - 然后下载你电脑中python版本对应的whl文件即可。
- 把下载的 .whl文件复制到 python\Scripts下使用 pip 进行安装
pip install mod_wsgi‑4.5.17+ap24vc14‑cp36‑cp36m‑win32.whl
进行安装在安装成功后在python的安装目录的\scripts文件夹下运行
mod_wsgi-express module-config
运行后命令行得到如下结果
LoadFile "e:/hx_work/python36_32/python36.dll"
LoadModule wsgi_module "e:/hx_work/python36_32/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win32.pyd"
WSGIPythonHome "e:/hx_work/python36_32"
配置django
打开 httpd.conf 文件,在文件末尾加入以下信息
#添加mod_wsgi.so模块,这三行是上面命令行中显示出来的
LoadFile "e:/hx_work/python36_32/python36.dll"
LoadModule wsgi_module "e:/hx_work/python36_32/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win32.pyd"
WSGIPythonHome "e:/hx_work/python36_32"
#指定项目的wsgi.py配置文件路径,这个py文件是在你的Django项目中
WSGIScriptAlias / d:/picture/picture/wsgi.py
#指定项目目录,即你的Django项目路径
WSGIPythonPath d:/picture
<Directory d:/picture/picture>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
#项目静态文件地址, Django项目中静态文件的路径
Alias /static D:/picture/tu/static
<Directory D:/picture/tu/static>
AllowOverride None
Options None
Require all granted
</Directory>
#项目media地址, 上传图片等文件夹的路径
Alias /media D:/picture/tu/media
<Directory D:/picture/tu/media>
AllowOverride None
Options None
Require all granted
</Directory>
注意:在django的setting中要设置 STATIC_ROOT的路径
参考
https://blog.csdn.net/weixin_40754816/article/details/80955817
https://blog.csdn.net/u014305812/article/details/72636342
https://blog.csdn.net/Mr_blueD/article/details/79759483
https://blog.csdn.net/dave_haijie/article/details/78060888