以前使用php开发,在服务器上用phpstudy快速配置;然后喜欢上了python,然后就想着把爬虫和web整合起来,然后就用Django框架。
但是,我想在服务器上使用php的情况下,也能用Django框架,同样,Django也能在Apache环境下部署。
网上有很多Django在Apache环境下部署的教程,我把我读过的文章并把整合自己经历的坑,写了这篇blog。
运行环境:
系统:Windows Server 2012 R2 (阿里云学生服务器)
服务:Apache 2.4.29(64位)(整合在phpstudy中)
语言:Python 3.6 (64位)+Django 2.0.2框架
(这边Apache和Python必须是一样的位制,不然后面可能报错哦)
准备工作:
Apache:Apache官方网站:http://httpd.apache.org/(根据自己需要下载相应版本)
mod_wsgi模块: http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi (根据自己需要下载相应版本)
1、安装Apache:
本人使用的phpstudy整合的Apache,但是默认都是32位的,所以,我需要先把默认32位的Apache改为64位的。
解压下载好的64位Apache,然后替换phpstudy中的Apache文件夹(如果你没有使用phpstudy,直接解压出来就可以了),然后修改conf文件夹下httpd.conf文件:
具体要修改的几项:
ServerRoot:改为Apache目录地址(eg:"C:/phpstudy/Apache")
ServerName:改为localhost(去掉#)
DocumentRoot:修改为你的网站根目录地址(也可以改为phpstudy的WWW文件夹)(eg:"C:\phpstudy\WWW")
ScriptAlias:改为Apache下cgi-bin文件夹的地址(eg:"C:/phpstudy/Apache/cgi-bin")
有两个
PS:(当然也可以参考phpstudy中以前默认Apache的配置文件改),(可能讲的不是很详细,比如安装VC库之类的,我这就不介绍了,可以单独百度),(phpstudy用户,改了Apache后出现服务冲突之类的问题,不妨重新安装一下phpstudy,记得备份)
2、安装mod_wsgi模块:
定位到存放下好的mod_wsgi模块的目录,然后pip install就可以了。
定位到python安装目录下的Scripts目录:
使用命令:
mod_wsgi-express module-config
首先,将得到的三行内容复制出来,在Apache的httpd.conf同目录下新建一个conf文件,可以以自己Django项目的名字命名(每一个项目都有一个属于自己的conf文件),在conf文件中将上面命令得到的三行内容粘贴进去。(在httpd.conf或者项目的conf文件中都可以)
LoadFile "c:/program files/python36/python36.dll"
LoadModule wsgi_module "c:/program files/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "c:/program files/python36"
接着,在conf文件下面写一些其他配置信息:
#mod_wsgi设置
LoadFile "c:/program files/python36/python36.dll"
LoadModule wsgi_module "c:/program files/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "c:/program files/python36"
#指定website的wsgi.py配置文件路径
WSGIScriptAlias / D:/allFile/Python_Project/Web/Movie/Movie/wsgi.py
#指定项目路径
WSGIPythonPath D:/allFile/Python_Project/Web/Movie
Require all granted
最后,在httpd.conf文件中加入如下命令将项目的conf文件包含进去:
Include conf/project_movie.conf
闲谈:
其实小网站还是php比较好,Django的优势在于python。
仔细一想,其实算是瞎折腾,感觉好像屏蔽掉了php,有没有phpstudy都一样,但是有了phpstudy直接就有了mysql,还能一键启动,还是蛮实用的。
还有很多没有深入了解,比如如何在Django和php中切换,如何在多个Django项目中切换。