Apache 2.4+Django 1.11配置
最近在写一个django网站,差不多开发好了,打算挂在我的win服务器上。 开发调试阶段没什么讲究,直接给个
python settings.py runserver 0.0.0.0:80
就这么让他跑起来的,但到了生产环境可不能这么干啊! 万一不小心关掉cmd控制台的话 整个网站就停止运行了,这太坑了! 所以想把网站挂在一个成熟的web 服务器上,首先想到的是nginx,不过看了django+nginx的很多帖子后,说实话真心没看懂,所以打算看看能不能挂在apache httpd,答案是肯定的! 那就开始部署吧。
首先说明一下: 其实django程序如何部署在apache服务器这个题材的帖子可以搜出n个,不过你可能会遇到跟我一样的问题,那就是别人写的 apache 2.2环境,或者django1.7环境,或者python2.7的环境根本不适合你下载的最新的环境! 人家说的东西,你找不到,配置方法也不一样,所以我才冷饭再炒一边。
环境: win10 64位,python 3.6 64位 , apache 2.4.27 64位
第一步: apache环境配置,如果你已经配置好apache的话直接看第二步,如果你还没配置好的话,请先看我的上一个帖子,把apache配置好再回来。
第二步:下载部署mod_wsgi ,这到底是什么东西我没追究太多,反正只知道不弄这东西的话,你的django网站无法在apache上跑起来。
首先到http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 这个网站,下载适合自己环境的包,我下载了mod_wsgi‑4.5.17+ap24vc14‑cp36‑cp36m‑win_amd64.whl。因为我环境就是python3.6,win64环境。
然后网上有很多如何部署的帖子,但都是老方法,他们说的mod_wsgi.so这个文件,在我下载的版本里根本不存在!
如果你也找不到那个so文件,那就跟着我配置吧!
我们之所以找不到那个文件,是因为现在配置方法改变了,我们要用新方法来部署。
如果你把刚才的whl文件下好的话,用cmd控制台把它安装到python中,比如我的whl文件在d盘根目录的话,我会这样安装
pip install mod_wsgi‑4.5.17+ap24vc14‑cp36‑cp36m‑win_amd64.whl
安装好了后,这个包进入到 你的电脑python环境中,如我的电脑的路径是 C:\Program Files\Python36\Lib\site-packages\mod_wsgi
第三步,配置apache
打开apache的httpd.conf文件(在conf目录下),然后依次配置下面几行
LoadFile "C:/Program Files/Python36/python36.dll" # 你电脑python根目录中的python36.dll文件
LoadModule wsgi_module "C:/Program Files/Python36/Lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd" #你只要把python根目录部分改成你自己的就好了
WSGIPythonHome "C:/Program Files/Python36" # 你电脑python根目录
WSGIScriptAlias / D:/Server/Apache24/htdocs/djangoshop/DjangoShop/wsgi.py #这是我django项目的wsgi.py文件,你把项目路径改成你自己的就行
WSGIPythonPath D:/Server/Apache24/htdocs/djangoshop #我的django项目根目录位置
<Directory D:/Server/Apache24/htdocs/djangoshop/DjangoShop> #我的django项目根目录位置
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static/ D:/Server/Apache24/htdocs/djangoshop/static/ #这是django static目录的定义,你的网站css js 和图片之类的静态文件都在这个目录下
<Directory D:/Server/Apache24/htdocs/djangoshop/static> #你把django项目路径改成你自己的
Require all granted
</Directory>
这样就配置好了apache了。
第四步,配置django项目
在wsgi.py文件中要有这四行
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoShop.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
其中djangoshop是我的项目名称,你要改成你自己的
然后进入settings.py 加上
ALLOWED_HOSTS = ['127.0.0.1:80']
也就是让apache访问你的网站
差不多就这样了,你输入localhost就可以看到你可爱的网站了。
上一篇: ES6——对象