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 ,则将第二行替换为改行
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以及静态文件的更多相关文章
- apache上部署django的静态文件
一直在优化自己博客的代码, 昨天把css样式表分离出来, 用作静态 文件, 但是自己还没学django怎么使用静态文件, 经过一番google 终于解决了. django 使用静态文件有两种方法, 一 ...
- nginx,uwsgi,部署django,静态文件不生效问题
打开浏览器,然后访问服务器,如果能够正常访问,并且页面链接可以跳转,但是页面却是乱的,那一定是nginx.conf里面的静态文件配置不正确, location /static/ {#expires 3 ...
- django处理静态文件
静态文件指的是js css 还有图片这些,配置方法如下 1. 在设置文件(settings.py)中,installed_apps中添加 django.contrib.staticfiles 然后设置 ...
- gunicorn启动django时静态文件的加载
目前在用nginx+gunicorn对django进行部署 当我用gunicorn -w 4 -b 127.0.0.1:8080 myproject.wsig:application启动django时 ...
- [Django基础] gunicorn启动django时静态文件的加载
目前在用nginx+gunicorn对django进行部署 当我用gunicorn -w 4 -b 127.0.0.1:8080 myproject.wsig:application启动django时 ...
- [django]windows下用Django,静态文件请求失败,出现UnicodeDecodeError
问题:windows下用Django,静态文件请求失败,出现UnicodeDecodeError:'utf-8' codec can't decode byte 0xb0 in position 1: ...
- Django中静态文件引用优化
静态文件引用优化 在html文件中是用django的静态文件路径时,一般会这么写: <script type="text/javascript" src="/sta ...
- django的静态文件的引入
django的静态文件的引入 1.路径配置 在templates文件夹的同级目录下新建static文件夹 在setting里面写上STATICFILES_DIRS = [os.path.join(BA ...
- django配置静态文件
django配置静态文件 参考文章链接:http://blog.csdn.net/hireboy/article/details/8806098
随机推荐
- C# File类的操作
原文:C# File类的操作 File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和打开一个文件.File类方法的参 ...
- NFTS数据流
NFTS数据流 NTFS交换数据流(alternate data streams,简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每一个文件都能够存在多个数据流,就是说除了主文件流之外 ...
- 【SSRS】入门篇(三) -- 为报表定义数据集
原文:[SSRS]入门篇(三) -- 为报表定义数据集 通过前两篇文件 [SSRS]入门篇(一) -- 创建SSRS项目 和 [SSRS]入门篇(二) -- 建立数据源 后, 我们建立了一个SSRS项 ...
- 熔断器C#实现
关键词1:保险丝.电闸跳闸.输入密码错误3次则在指定的时间之内禁止登录 关键词2:保护性架构.防御性代码.软件可靠性 实现:https://github.com/fecktty/Circuit_Bre ...
- windows下mysql备份、还原,使用mysqldump
直接备份 mysqldump -u用户名 -p密码 -h 192.168.1.15 -c --default-character-set=utf8 数据库名>xxx.sql 使用gz ...
- NServiceBus 入门2
NServiceBus官方文档翻译(二)NServiceBus 入门 在这篇教程中我们将学习如何创建一个非常简单的由客户端向服务端发送消息的订单系统.该系统包括三个项目:Client.Server ...
- 【转载】如何让Chrome浏览器允许本地环境支持Ajax
转载自:http://www.bewxx.com/news/news_89.html 对于网站前端人员来说,我们在本地开发程序的时候如果用到Ajax的话,通常会使用Firefox来测试,因为Firef ...
- 数据分析R语言1
数据分析R语言 无意中发现网上的一个数据分析R应用教程,看了几集感觉还不错,本文做一个学习笔记(知识点来源:视频内容+R实战+自己的理解),视频详细的信息请参考http://www.itao521.c ...
- MFC双缓冲和裁剪问题导致闪烁
问题描述: 应用场景:在对话框中,自定义一个MFC图形控件(为了描述方便,暂定为HSPaintControl),控件覆盖整个对话框的客户区,属于最底层的控件,在这之上放置了很多其他的小图形控件. 问题 ...
- FLOYD 求最小环
首先 先介绍一下 FLOYD算法的基本思想 设d[i,j,k]是在只允许经过结点1…k的情况下i到j的最短路长度则它有两种情况(想一想,为什么):最短路经过点k,d[i,j,k]=d[i,k,k- ...