• apache2部署django以及静态文件


    django中的runserver只是一个很简单的web服务器,在开发中是不建议使用的,django在官方中建议是使用apache2等web服务器来配置,并且django会把静态文件交由apache2等来处理,django认为这是一种高效的方法。其中最难理解的就是static files的配置,这里简单说一下。

    我是在阿里云上的配置的服务器,系统是ubuntu16。

    1 首先安装apache2

    sudo apt-get install apache2
     
    sudo apt-get install libapache2-mod-wsgi
     
    # 如果是Python 3,则将第二行替换为改行
    sudo apt-get install libapache2-mod-wsgi-py3

    2 然后执行命令

    sudo a2enmod wsgi

    (很多博客里都没说到这一步,导致在启动apache时,会提示Invalid Command WSGIScript)

    (ubuntu的apache的配置文件在/etc/apache2下面)

    3 这里我的工程是在/home/blog下面。首先新建一个配置文件

    sudo vi /etc/apache2/sites-available/blog.conf

    然后输入下面内容

    <VirtualHost *:80>
        ServerName www.wanghui.com
        ServerAlias wanghui.com
        ServerAdmin wzxwhd@126.com
      
        Alias /media/ /home/blog/media/
        Alias /static/ /home/blog/static/
      
        <Directory /home/blog/media>
            Require all granted
        </Directory>
      
        <Directory /home/blog/static>
            Require all granted
        </Directory>
      
        WSGIScriptAlias / /home/blog/blog/wsgi.py
      
        <Directory /home/blog/blog>
        <Files wsgi.py>
            Require all granted
        </Files>
        </Directory>
    </VirtualHost>

    (在这里就要注意了:静态文件的处理。在开发过程中,一般静态文件都是放在app下面的static里,当settings.py中的Debug=True时,此时django会自己处理静态文件,但是当在部署阶段时,你需要在settings.py中加入:

    STATIC_ROOT = os.path.join(BASE_DIR, 'static')

    然后执行

    sudo  python managy.py  collectstatic

    这样django会自动把你的静态文件拷贝到项目根目录下的static文件夹里,并且你也无需担心你的html路径问题。

    保存退出,然后

    sudo vim /etc/apach2/envars

    将文件中的APACHE_RUN_USER 和 APACHE_RUN_GROUP改为合适的用户名和组,这里不还,后面的静态文件会有权限问题的!!

    紧接着修改wsgi文件,/homg/blog/blog/wsig.py

    import os
    PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    import sys 
    sys.path.insert(0,PROJECT_DIR) 

    这一步主要是为了让apache知道你项目的位置。

    4 设置目录权限

    一般目录权限设置为 755,文件权限设置为 644 

    项目位置在 /home/blog 

    cd /home/
    sudo chmod -R 644 blog
    sudo find blog -type d -exec chmod 755 {} ;

    5 启动服务

    sudo a2ensite blog

    这样就ok了

  • 相关阅读:
    Android 开源框架 ( 十二 ) 图片加载框架---Fresco
    Android 开源框架 ( 十一 ) 图片加载框架---Glide
    Android 开源框架 ( 十 ) 图片加载框架---Picasso
    Android 开源框架 ( 九 ) 图片加载框架---ImageLoader
    Android 开源框架 ( 八 ) 注解框架---ButterKnife
    Android 开源框架 ( 七 ) 事件总线---EventBus
    Android 开源框架 ( 六 ) Volley --- Google的轻量级网络通信框架
    Android 开源框架 ( 五 ) xUtils --- Android 里的 ORM IOC聚合型框架
    Android 开源框架 ( 四 ) Afinal --- Android 里的 ORM IOC聚合型框架
    Android 开源框架 ( 三 ) 基于OkHttp进一步封装的OkHttpUtils介绍
  • 原文地址:https://www.cnblogs.com/wzxwhd/p/6290784.html
Copyright © 2020-2023  润新知