apache2部署django以及静态文件
2024-10-13 17:19:56
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了
最新文章
- ASP.NET MVC Controller的激活
- PHPer不能不看的50个细节!
- nrf51822裸机教程-硬件timer
- ArcEngine 通过SpatialRelDescription删除不相交要素
- StringBuffer 和 StringBuilder
- Java多线程练习:ticket卖票程序
- JAVAEE学习
- Eclipse 常用快捷键 (动画讲解)(转载)
- MySQL语句相关经验总结
- bootstrap-table 怎么自定义搜索按钮实现点击按钮进行查询
- 游走[HNOI2013]
- poj 1011--Sticks(搜索)
- Hibernate学习(五)lazy属性学习(true和extra区别)
- Detours HOOK 库 过滤LoadLibraryExW
- Docker: Jenkins里的pipeline编写基本技巧
- char,wchar_t 长度
- mysql 原理 ~ 事务隔离机制
- Asp.Net T4模板生成三层架构
- scu 4439 Vertex Cover
- js保留两位小数点
热门文章
- Windows环境搭建Web自动化测试框架Watir
- ubuntu12.04 内核编译 记录
- 自己动手实现Expression翻译器 – Part Ⅲ
- MVC Bootstrap极速开发框架
- ios中mvc的FormsAuthentication.SetAuthCookie(cookieUserName, false)失败
- Vijos:P1001谁拿了最多奖学金
- Unkown2
- 使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享
- javascript闭包1
- 应用程序入口 WSGIHandler