广告位 |
django部署静态文件访问
2021年9月25日 11:20编程 > 1528人已围观
简介 技术环境: python3.8 + centos7 +Django3 + gunicorn + nginx 1、settings.py配置:静态文件访问和存放目录...
技术环境: python3.8 + centos7 +Django3 + gunicorn + nginx
1、settings.py配置:静态文件访问和存放目录
STATIC_URL = '/static/'
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.1/howto/static-files/
# 静态文件设置
STATIC_ROOT = BASE_DIR / 'static' # collectstatic为部署而收集的静态文件的目录的绝对路径。
# 生产环境 执行 manage.py collectstatic 后搜索配置的静态文件列表,存储至STATIC_ROOT目录下
# 可以用来存储公用资源,如: JQuery, bootstrap等
# 配置文件存储目录
MEDIA_ROOT = BASE_DIR / 'media'
# 配置浏览器访问文件的地址:/media/...
MEDIA_URL = '/media/'
# 以上表示浏览器传来的url以media开头的,django统一到MEDIA_ROOT配置的目录下去找
2、urls.py配置:
from django.contrib import admin
from django.conf import settings
from django.urls import include, path
from django.views.static import serve as serve_static # 处理静态/媒体文件
# from django.contrib.staticfiles.views import serve
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
# 手动添加对外开放的后端服务器资源
path('media/<path:path>', serve_static, {'document_root': settings.MEDIA_ROOT}), # 处理媒体文件
path(r'static/<path:path>', serve_static, {'document_root': settings.STATIC_ROOT},), # 处理静态文件
]
""" 5个path转化器: from django.url import register_converter 中查看
1.str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
2.int,匹配正整数,包含0。
3.slug,匹配字母、数字以及横杠、下划线组成的字符串。
4.uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
5.path,匹配任何非空字符串,包含了路径分隔符。
"""
3、使用 gunicorn + nginx部署服务时:
3.1 、gunicorn的安装及配置
pip install gunicorn# 安装gunicorn
项目目录下配置gunicorn.py文件,如下:
import logging
import logging.handlers
from logging.handlers import WatchedFileHandler
import multiprocessing
access_log_path = "/var/log/xm_access.log"
error_log_path = "/var/log/xm_error.log"
# 设置进程/线程数量
workers = multiprocessing.cpu_count() * 2 + 1 # 进程数
threads = 2 # 指定每个进程开启的线程数
# 最大挂起的连接数 --backlog
# 即等待服务的客户的数量。必须是正整数,一般设定在64~2048的范围内,一般设置为2048,超过这个数字将导致客户端在尝试连接时错误
backlog = 512 # 监听队列
# 切换到指定的工作目录 --chdir
chdir = '/home/admin/project_name' # gunicorn 要切换到的目的工作目录
bind = '0.0.0.0:8182' # 绑定ip和端口号
# daemon = True # 守护进程,默认False
timeout = 90 # 超时s
worker_class = 'gevent' # 使用gevent模式,还可以使用sync 模式,默认的是sync模式
# 工作进程类型包括:
# sync(default)、eventlet、gevent、tornado、gthread、gaiohttp
# 设置日志
loglevel = 'info' # 日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
accesslog = access_log_path # 访问日志文件
errorlog = error_log_path # 错误日志文件
# 代码更新时将重启工作,默认为False。此设置用于开发,每当应用程序发生更改时,都会导致工作重新启动。
# reload = True # 开发时使用配置
# 通过配置文件启动django服务: gunicorn project_name.wsgi -c gunicorn.py
使用gunicorn启动Django服务:
# 生产部署时,将静态文件收集至 STATIC_ROOT目录下
python manage.py collectstatic
gunicorn project_name.wsgi -c gunicorn.py
3.2、nginx配置
1、反向代理配置:
server {
listen 80;
root /home/admin/project_name; # 项目工作目录
server_name jumpym.xyz; # 配置的域名
location / {
proxy_set_header x-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://192.168.6.31:8182/; # gunicorn绑定的端口号
}
# 配置static的静态文件:
location ~ /static/.*$ {
proxy_pass http://192.168.124.31:8182; # 反向代理的服务端口
#root /var/www/static;
}
}
检查nginx配置并重启服务:
nginx -t # nginx配置语法检查
/etc/init.d/nginx restart # 重启服务,(stop、start)
/etc/init.d/nginx reload # 重载配置并重启
上一篇: django无限分类
下一篇: thinkphp数据模型修改器
广告位 |
相关文章
随机图文
-
当微信的大门已打开,抖音的电商外链何时开?
近日,各大互联网平台纷纷上演一场“拆墙”行动,其中微信已经对淘宝和抖音敞开了大门。 腾讯在9月17日公布《微信外部链接内容管理规范》调整的声明,称将分阶段分步骤实施外链管理措施,第一阶段从9月17日起开始执行。具体做法包含用户可在一对一聊天场景中访问外部链接;提供自主个性化选择;设立外链投诉入口等。... -
苹果iPhone 13系列等新品正式迎来发售
苹果iPhone 13系列、新款iPad和iPad mini等新品正式迎来发售。由于时差原因,全球部分地区用户已“提前”拿到iPhone 13系列新品。 目前,部分iPhone 13 预购用户已可在 Apple Store 应用看到订单状态更改为“准备取货”。天猫、京东等电商平台购买的手机已经陆续发货,预计在明后两天就能收到。... -
django如何给上传的图片重命名
django如何给上传的图片重命名(给上传文件重命名) 1、先在你项目中添加一个文件夹如:system 在文件夹下添加__init__.py 和storage.py文件,并在storage.py中添加如下代码:... -
生活是根绳子,总是牵着我们的鼻子走。
一、 太多的选择,等于没有选择;什么都想要,等于什么都不想要。人只有懂得取舍,才可以让自己活到正确的位置上。 二、 生活是根绳子,总是牵着我们的鼻子走。为了生活,我们忍让、退缩、扭曲甚至出卖自己。无...