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
随机推荐
- Java集合之LinkedHashSet源码分析
1.简介 我们知道Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false.根据源码实现中的注释我们可以知道LinkedHashSet是具有可预知迭代顺序的Set接 ...
- bash元字符(上)
元字符 行动 样例 回车换行 结束一个命令 空格 切割命令行中的元素 ls /etc Tab 命令自己主动补全 # 開始一行凝视 #This is a comment line " 引用多个 ...
- TodoList开发笔记 – Part Ⅳ
跌跌撞撞总算是把客户端开发好了,后台的代码因为不复杂,就写了些单元测试跑一跑就算通过了,大部分时间都是在调整脚本. 这一节开始部署TodoList项目. 一.了解IIS(Internet Infoma ...
- myeclipse搭建svn插件
在网上查了一下,安装的方法有几种,这里给大家推荐一种快速安装的方法. //第一步 : 下载 site-1.6.5.zip //===================================== ...
- .NET MVC学习之模型绑定
ASP.NET MVC学习之模型绑定(2) 继ASP.NET MVC学习之模型绑定继续 3.手工调用模型绑定 很多情况下我们都是通过形参的方式接收来自http流中的数据,这看似是完美的,但是缺少了 ...
- MFC圆角背景移动边角底色毛刺解决方案
CRect rc; Graphics graphics(pDC->m_hDC); GetClientRect(&rc); CRgn m_rgn; if (m_pBgImage) { gr ...
- C#中另辟蹊径解决JSON / XML互转的问题
C#中另辟蹊径解决JSON / XML互转的问题 最近在一个POC的项目中要用到JSON和XML的相互转换, 虽然我知道很多类库如JSON.NET具备这种功能, 但是我还是另辟蹊径的使用Spider ...
- 有关sort函数的用法
最近碰到这个sort函数,网上查了一些资料,感觉还是直接扔给我代码比较好理解些 要是像我一样的童鞋,建议看这里:http://www.cplusplus.me/265.html 个人认为很好理解..这 ...
- SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY
SCOPE_IDENTITY.IDENT_CURRENT 和 @@IDENTITY SQL Server 2000中,有三个比较类似的功能:他们分别是:SCOPE_IDENTITY.IDENT_CUR ...
- Linux环境进程间通信(三):消息队列
linux下进程间通信的几种主要手段: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允 ...