zoukankan      html  css  js  c++  java
  • Ubuntu1404+Django1.9+Apache2.4部署配置2配置文件设置

    转载注明出处,个人博客:http://www.cnblogs.com/wdfwolf3/
      Django首要的部署平台是WSGI,它是Python Web服务器和应用的标准。使用Apache和mod_wsgi部署Django是一个使Django投入到生产环境中成熟的方式,mod_wsgi是一个Apache模块,它可以host任何Python WSGI应用。其他知名的模块如mod_python和FastCGI,mod_python在Django1.5中被彻底删除,FastCGI也不被支持并且在Django1.9中被删除。下面我们开始进行配置。

    1.

    从路径/etc/apache2/下,打开文件apache2.conf,并加入下列代码。第一行的第一个路径为的基础URL路径,第二个路径为你项目wsgi.py文件的完全路径,这句话告诉Apache使用这个WSGI应用来响应这个URL下的任何请求。第二行为项目的路径,确保你的项目可以被正确导入,第三行为wsgi.py所在文件夹的路径,Directory部分是用来使Apache可以定位到wsgi.py文件。如果Apache版本低于2.4的话,将Require all granted替换为Allow from all并在它上面一行加入Order deny,allow。

    WSGIScriptAlias / "/home/wdf/mysite/mysite/wsgi.py"
    WSGIPythonPath /home/wdf/mysite
    
    <Directory /home/wdf/mysite/mysite>
    <Files wsgi.py>
    Require all granted
    </Files>
    </Directory>
    

    2.

    如果从调试环境变为生产环境的话,还需要将DEBUG从True变为False。此时无法像之前那样使用127.0.0.1打开网页,需要更改一下项目的settings文件,打开django项目中的settings.py文件,加入下面这行代码,

    ALLOWED_HOSTS = ['127.0.0.1']

    列表中再加入一项‘localhost'也可以用来调试。

    3.

    如果启动Apache(命令sudo service apache2 start)报错,

    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, 
    using 127.0.1.1. Set the
    'ServerName' directive globally to suppress this message

    那就在配置文件apache2.conf中加入下面这行代码,

    ServerName localhost

    默认端口80,可以不写。

    4.Apache错误日志error.log

    此时我打开网页依然不能访问到我django项目,Apache正常启动没问题,那就需要打开错误日志文件/var/log/apache2/error.log(如果路径不同通过http://www.cnblogs.com/wdfwolf3/p/5438379.html的方法寻找),发现了如下错误,

    [Wed Apr 27 11:30:42.632076 2016] [:error] [pid 10808:tid 140055750682368] [client ::1:60449] 
    SyntaxError: Non-ASCII character '\xe5' in file /home/wdf/code/mysite/mysite/wsgi.py on line 15,
    but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

    这个比较常见了,编码问题,我们回到wsgi.py文件中,文件开头加入代码即可解决。

    #-*- coding:ut-8 -*-

    5.配置静态文件static

    Django本身不能处理文件,它把这个工作交给了它使用的Web服务器,在这里我们就是用Apache来处理静态文件。网络上很多方法,但是版本比较靠前,也比较杂,我针对1.9的官方文档和自己的实践来简单实现显示静态图片,至于更深入的内容以后我实现了再继续更新。

    在apache2.conf中加入代码,同上面如果Apache版本低于2.4换成另外两行代码。

    Alias /abc/ /home/wdf/mysite/app/static/
    
    <Directory /home/wdf/mysite/app/static>
    Require all granted
    </Directory>

    在这里声明别名/abc/就是你存放静态文件的目录,之所以使用abc(正常设置成/static/就很好)这么没有意义的名字,是为了说明后面的东西,防止混淆。在html模板中图片的地址就可以使用这个别名,比如

    <img src="/abc/WDF.JPG" />

    当然在项目的settings.py文件中还要加一个定义,将static目录的路径赋给STATIC_URL

    STATIC_URL = os.path.join(BASE_DIR, '/app/static/')

      

  • 相关阅读:
    结对项目开始
    团队项目开始
    个人项目总结
    python面向对象
    OSI七层模型
    Django中的orm的惰性机制
    Python装饰器
    python运算符
    python元祖和列表
    Sencha Touch 1.x 快速入门 第三章 布局(2) Card布局
  • 原文地址:https://www.cnblogs.com/wdfwolf3/p/5436839.html
Copyright © 2011-2022 走看看