十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
今天准备想把django配置到apache 服务器上,那个糟心。。看了几个博客 要么就是草草一笔,要么就是不带版本号,搞得 晕头转向 最后我还是自己看官方文档弄明白了,这里写一个稍微详细一点的总结,适合不太懂的小白,因为我就是。。。。。- -!
专注于为中小企业提供网站建设、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业建平免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
再次声明我现在的版本:
Django 1.7.1 +mod_wsgi 4.4.7(非daemon) +Apache/2.2.26 mac 我没升级 Yosomite 新系统,所以版本号是 10.9.5
apache不用我帮你安装了吧,貌似mac已经原装了(如果说错了别拍我。。此步骤跳过,后期会讲到配置apache)
mac 第一件事 就是去装xcode, 装xcode干嘛呢 是为了安装一个叫Commandline tool的工具,
在哪? xcode -》 prefrence-> download 你看到没有?
啥?没看到? 那你在命令行里面输入
xcode-select --install
会自动弹出来个方框让你安装刚才我说的那个tool,好了吧,等他安装完!
第二步: 安装 homebrew
我写文章这个时间 已经不像是之前几个博客里面的安装方法
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
用这个,直接下载安装
第三部:安装 mod_wsgi,这回就用到刚才安装的brew了,
brew install homebrew/apache/mod_wsgi
可见 为了仅仅安装一个 mod_wsgi 绕了多大一个弯,嘿嘿不用去追究他的原理,只要咱们安装成功了,供咱们使用完成自己的任务就可以了,简单来说这玩意就是用来 在配置完了Apache之后可以使用python写的第三方web application成功运行在Apache的一个middleware,所以说可以当做是一个application 和Apache的一个桥梁,后期配置文件路径啥的都靠他了。
第四步:
现在该有的都有了,该去配置文件了
apache2 中的 httpd.conf 这个是apache的很重要的一个配置文件,我的路径在
/etc/apache2/httpd.conf
怎么去?我就不告诉你是打开Finder然后Command+Shift + G
该写点啥呢,你说现在咱们桥梁也有了 两边的django 和Apache也有了剩下的就是把桥放在两者之间,没错,搭桥!
一方面搭刚才安装的 mod_wsgi 一方面搭我们的django
先来mod_wsgi ,打开上面那个 httpd.conf文件,在最后面,加上怎么一行先
LoadModule wsgi_module /usr/local/Cellar/mod_wsgi/4.4.7/libexec/mod_wsgi.so
哦!可以理解成为这个让Apache把刚才下载的mod_wsgi 文件加载进来吧,没错!
至于说为什么是
/usr/local
这个路径呢?你安装的适合人家就放在那了你能怎么的吧,引过来就好了!
然后!!再加入一行
WSGIPythonPath /Library/WebServer/Documents/my2site
可以看出来 后面的
/Library/WebServer/Documents/my2site
这个就是你用startproject时候创建的根目录了,也就是整个站点的根目录了找出来直接贴在后面,这个的用处可以理解为 可以让Apache找到你的django的根目录,怎么样,桥搭上了吧?对!
但是还缺少东西,一个最关键的文件 wsgi.py ,创建django工程项目的时候已经自动创建了这个文件,我们只需要像上面那样给他引进来,例如我的是
WSGIScriptAlias / /Library/WebServer/Documents/my2site/my2site/wsgi.py
这里发现 最中间有个 / 这个是干嘛的。 他是你的的根目录!也就是说的首页地址,像是这样的话我的主业就是 127.0.0.1 如果我把这个 / 换成 /app 那我的首页是什么?? 你答对了。。
紧接着要写这样一句话
Allow from all Order deny,allow
他的作用就是让Apache 可以读取你刚才引入的wsgi.py,所以他俩是成双成对哒!
注意:因为的的apache的版本是 2.2.26 是小于2.4版本的,所以我用了这两行
Allow from all Order deny,allow
如果你是高于2.4版本的Apache, 你要把这两行替换成一行
Require all granted
OK!
这样就算把桥搭好了,
去看看首页应该会显示了,,但是你会发现我们很多的静态文件已经显示不出来了,这是因为django已经不负责关联你的static文件路径了,需要Apache来配置,怎么配置?联想到刚才咱们都引入了wsgi.py文件的经验 我们一样的引入static的根目录,
就是关键字不太一样 这次我们用Alias
Alias /static/ /Library/WebServer/Documents/my2site/polls/statics_file/
static就是 settings里面的 STATIC_URL 后面那个就是他的真实目录拉!
别忘记要给Apache访问文件的权利哦!
Allow from all Order deny,allow
还是注意Apache版本问题,对,他们也是一对的,
这样再回过头来看看我们的主页,是不是跟之前的一模一样了