广告位

django部署静态文件访问

您现在的位置是:主页 > 编程 >

2021年9月25日 11:20编程 > 263人已围观

简介 技术环境: 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 # 重载配置并重启


Tags: django  部署 

广告位
    广告位
    广告位

站点信息

  • 文章统计112篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们