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 ,则将第二行替换为改行
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 *:>
ServerName www.wanghui.com
ServerAlias wanghui.com
ServerAdmin wzxwhd@.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(,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了

apache2部署django以及静态文件的更多相关文章

  1. apache上部署django的静态文件

    一直在优化自己博客的代码, 昨天把css样式表分离出来, 用作静态 文件, 但是自己还没学django怎么使用静态文件, 经过一番google 终于解决了. django 使用静态文件有两种方法, 一 ...

  2. nginx,uwsgi,部署django,静态文件不生效问题

    打开浏览器,然后访问服务器,如果能够正常访问,并且页面链接可以跳转,但是页面却是乱的,那一定是nginx.conf里面的静态文件配置不正确, location /static/ {#expires 3 ...

  3. django处理静态文件

    静态文件指的是js css 还有图片这些,配置方法如下 1. 在设置文件(settings.py)中,installed_apps中添加 django.contrib.staticfiles 然后设置 ...

  4. gunicorn启动django时静态文件的加载

    目前在用nginx+gunicorn对django进行部署 当我用gunicorn -w 4 -b 127.0.0.1:8080 myproject.wsig:application启动django时 ...

  5. [Django基础] gunicorn启动django时静态文件的加载

    目前在用nginx+gunicorn对django进行部署 当我用gunicorn -w 4 -b 127.0.0.1:8080 myproject.wsig:application启动django时 ...

  6. [django]windows下用Django,静态文件请求失败,出现UnicodeDecodeError

    问题:windows下用Django,静态文件请求失败,出现UnicodeDecodeError:'utf-8' codec can't decode byte 0xb0 in position 1: ...

  7. Django中静态文件引用优化

    静态文件引用优化 在html文件中是用django的静态文件路径时,一般会这么写: <script type="text/javascript" src="/sta ...

  8. django的静态文件的引入

    django的静态文件的引入 1.路径配置 在templates文件夹的同级目录下新建static文件夹 在setting里面写上STATICFILES_DIRS = [os.path.join(BA ...

  9. django配置静态文件

    django配置静态文件 参考文章链接:http://blog.csdn.net/hireboy/article/details/8806098

随机推荐

  1. leetcode[86] Scramble String

    将一个单词按照这种方式分: Below is one possible representation of s1 = "great": great / \ gr eat / \ / ...

  2. mysql支持的数据类型及其测试

    原文:mysql支持的数据类型及其测试 1.基础知识 1.1如何来查看mysql的帮助手册 ?int Help float; 1.2创建表的规则 CREATE TABLE [IF NOT EXISTS ...

  3. ORACLE抽象数据类型

    ORACLE抽象数据类型 *抽象数据类型*/1,抽象数据类型 概念包含一个或多个子类型的数据类型不局限于ORACLE的标准数据类型可以用于其他数据类型中 2,创建抽象数据类型 的语法(必须用NOT F ...

  4. dbcp的配置

    tomcat的 配置,进入conf->context.xml <Resource name="mysql"     auth="Container" ...

  5. Ali也开始玩了阿

    http://blog.alipay.com/ 查看源代码

  6. CodeRush配置Nunit使用

    Web:http://www.nunit.org/  配置和DevExpress的CodeRush Install-Package NUnit 下载Nunit后设置CodeRush目录,如下图: 下面 ...

  7. 排序算法学习,python实现

    原创博文,转载请注明出处 利用周六周末的时间把几种基本的排序方法用python实现了一下,废话少说,直接上代码. 本文不注重基础知识的讲解,只做大致的描述,大家如果不清楚概念,自行查找资料. 直接插入 ...

  8. C语言基础复习总结

    C语言基础复习总结 大一学的C++,不过后来一直没用,大多还给老师了,最近看传智李明杰老师的ios课程的C语言入门部分,用了一周,每晚上看大概两小时左右,效果真是顶一学期的课,也许是因为有开发经验吧, ...

  9. Struts2框架搭建

    使用Struts2版本为:struts-2.3.16.3 下载地址:http://struts.apache.org/ 一.向web项目中添加struts2依赖库 commons-fileupload ...

  10. Java 多线程系列

    要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的(Shared)和可变的(Mutable)状态的访问. Java中的主要同步机制是关键字synchronized,它提供了一种独 ...