zoukankan      html  css  js  c++  java
  • 被解放的姜戈07 马不停蹄

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 

     

    前面的文章研究了Django最主要的几个方面:数据库,模板,动态生成页面等。但都是使用python manage.py runserver来运行服务器。这是一个实验性的web服务器,不适用于正常的站点运行。我们需要一个可以稳定而持续的服务器。这个服务器负责监听http端口,将收到的请求交给Django处理,将Django的回复发还给客户端。

    这样的持续性服务器可以有很多选择,比如apache, Nginx, lighttpd等。这里将使用最常见的apache服务器。服务器和Django之间通过Python的web服务接口WSGI连接,因此我们同样需要apache下的mod_wsgi模块。

    下面的配置和说明,是在Ubuntu 13.10下进行的。在其它系统下将有所差别。

    姜戈大喝一声,掉转马头狂奔。 

    安装

    首先需要安装apache2和mod_wsgi。在ubuntu下,我们可以使用apt-get安装:

    sudo apt-get install apache2
    sudo apt-get install libapache2-mod-wsgi

     mod_wsgi也可以在google code下载,自行编译安装。

     

    在apache的配置文件/etc/apache2/apache2.conf中增加下面的配置: 

    # Django
    WSGIScriptAlias / /home/vamei/mysite/mysite/wsgi.py
    WSGIPythonPath /home/vamei/mysite
    
    <Directory /home/vamei/mysite/mysite>
    <Files wsgi.py>
      Order deny,allow
      Require all granted
    </Files>
    </Directory>

    上面的配置中/home/ubuntu/mysite是Django项目所在的位置。而/home/ubuntu/mysite/mysite/wsgi.py是Django项目中z自动创建的文件。

    可以看到,利用WSGIScriptAlias,我们实际上将URL /对应了wsgi接口程序。这样,当我们访问根URL时,访问请求会经由WSGI接口,传递给Django项目mysite。

    配置好后,重启apache2

    sudo /etc/init.d/apache2 restart

    使用浏览器,可以检查效果:

    想起逝去的德国人,姜戈心中一痛。

    静态文件

    Django的主要功能是动态的生成HTTP回复。很多媒体文件是静态存储的,如.js文件,.css文件和图片文件。这些文件变动的频率较小。我们希望静态的提供这些文件,而不是动态的生成。这样既可以减小服务器的负担,也便于在浏览器缓存,提高用户体验。

    我们可以在apache2.conf中添加如下配置:

    Alias /media/ /home/vamei/media/
    Alias /static/ /home/vamei/static/
    
    <Directory /home/vamei/static/>
    Order deny,allow
    Require all granted
    </Directory>
    
    <Directory /home/vamei/media/>
    Order deny,allow
    Require all granted
    </Directory>
    
    # Django
    WSGIScriptAlias / /home/vamei/mysite/mysite/wsgi.py
    WSGIPythonPath /home/vamei/mysite
    
    <Directory /home/vamei/mysite/mysite/ >
    <Files wsgi.py>
        Order deny,allow
        Require all granted
    </Files>
    </Directory>

    这样,/static/和/media/这两个URL的访问将引导向存有静态文件的/home/vamei/static/和/home/vamei/media/,apache将直接向客户提供这两个文件夹中的静态文件。而剩下的URL访问,将导向WSGI接口,由Django动态处理。

     

    在/home/vamei/static/中放入文件revenge.jpg,访问http://localhost/static/revenge:

    姜戈想到爱人身陷囹圄,忧伤顿时化为愤怒。 

     

    其它

    云平台或者服务器的部署是一个大的课题,这里无法深入到所有的细节。幸运的是,在网上有丰富的资料。你可以根据自己的平台和问题,搜索相应的资料。

    在Django的debug模式下,我们可以在app文件夹中建立static目录,放入静态文件。Django将自动搜索到其中的静态文件。但这一方法有很大的安全隐患,只适用于开发。

    马蹄声疾,电光火石之间,姜戈已经把护园家丁撂倒在地。

    总结

    apache + mod_wsgi

    静态文件

     

    “你在外面等我,我要跟他们算总帐”,姜戈对爱人说。

  • 相关阅读:
    trackr: An AngularJS app with a Java 8 backend – Part III
    trackr: An AngularJS app with a Java 8 backend – Part II
    21. Wireless tools (无线工具 5个)
    20. Web proxies (网页代理 4个)
    19. Rootkit detectors (隐形工具包检测器 5个)
    18. Fuzzers (模糊测试器 4个)
    16. Antimalware (反病毒 3个)
    17. Debuggers (调试器 5个)
    15. Password auditing (密码审核 12个)
    14. Encryption tools (加密工具 8个)
  • 原文地址:https://www.cnblogs.com/vamei/p/3578718.html
Copyright © 2011-2022 走看看