跟php类似,要想使Apache能够处理python脚本(实际上Apache是不能处理脚本的,只是利用别的扩展模块处理相应脚本),就要给Apache安装相应的扩展模块。
Apache起初的python扩展是mod_python.so这个模块,但后来由于不在更新维护,所以大多使用mod_wsgi.so这个模块了。
另:wsgi是python专有的,定义了服务器与python解释器之间交流沟通的方式的协议。
部署第一步:给Apache安装mod_wsgi模块拓展
sudo apt-get install libapache2-mod-wsgi
安装完成后,会自动帮你把apache必要的软连接什么的都设置好。(即无需在手动写一个LoadModule mod_wsgi之类的东西了)
(libapache2有n多的模块,应该都可以这么安装,不用一个个手动网上下载了)
部署第二步:给apache一个配置文件,指定根目录,并说明请求交给谁处理:
第一行WSGIScriptAlias 指明:只要是访问网站根目录 / ,都交给 /home/lisong/lisongsite/django.wsgi 处理。(另外说明:我的项目在/home/lisong/lisongsite)
第二行至以后,就是普通的apache赋予目录访问权限的事儿了。
部署第三步:给Django一个请求接收文件,接收从apache给过来的请求,并分发给相应的URL去处理。
此脚本大体分两部分:
第一部分,把项目路径、项目下的应用路径添加到path中。其实第一部分和第二部分都是一个目的,为了让django能找到相应的项目路径、脚本等等。
第二部分,指明DJANGO_SETTING_MODULE的路径,这样可以使请求进来之后,根据这个路径去寻找设置并做相应分发处理。项目所有的设置都在settings这个地方呢。
最后,重启apache,浏览器访问机器IP就可以了。
如果有问题,例如报500错什么的,可以看看apache错误日志,挺好用的。/var/log/apache2/error.log