百木园-与人分享,
就是让自己快乐。

Django+uwsgi+vue部署(不使用nginx)

背景

  • 项目在内网部署,本来想使用nginx部署,因为某些原因,所以采用了Django+uwsgi+vue部署的部署方式

部署流程

Vue打包

  • 不熟悉VUE,按照给的步骤进行
  • 执行npm run lint-fix
  • 执行npm run build
  • 将生成的包放到Django项目根目录的static目录下
  • Django配置

    静态文件目录

    -- project/
    .....
    manage.py
    -- static/
    ....
    dist/
    index.html
    .....

    setting.py配置

    TEMPLATES = [
    {
    \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',
    \'DIRS\': [os.path.join(BASE_DIR, \'static/\')], # 新增,vue打包生成的index的此目录下
    \'APP_DIRS\': True,
    \'OPTIONS\': {
    \'context_processors\': [
    \'django.template.context_processors.debug\',
    \'django.template.context_processors.request\',
    \'django.contrib.auth.context_processors.auth\',
    \'django.contrib.messages.context_processors.messages\',
    ],
    },
    },
    ]

    STATIC_SAN = os.path.join(BASE_DIR, \'static/dist\')

    路由配置urls.py

    urlpatterns = [

    path(r\'\', TemplateView.as_view(template_name=\'index.html\')),
    # 静态文件, 此配置是使用runserver,开发时的配置.生产时不需要(?会被uwsgi的路由覆盖)
    # 因为VUE引用的静态文件是此路由,所以这样配置.也可按照注释的配置进行
    url(r\'^dist/(?P<path>.*)$\', static.serve, {\'document_root\': settings.STATIC_SAN}, name=\'static\'),
    # url(r\'^static/(?P<path>.*)$\', static.serve, {\'document_root\': settings.STATIC_ROOT}, name=\'static\'),
    ]

    # 覆盖原有404
    handler404 = page_not_found

    重写handler404

    from django.http import HttpResponseNotFound
    from django.shortcuts import render

    def page_not_found(request, exception):
    return HttpResponseNotFound(render(request, \'index.html\'))

    uwsgi配置和说明 pro.ini

    [uwsgi]
    #项目目录
    chdir=/usr/local/pro/
    #项目启动模块
    ;module=pro/pro.wsgi
    wsgi-file = pro/wsgi.py
    master=True
    home = /usr/local/python/python38
    # 测试时配置与否不影响运行
    PYTHONHOME = /usr/local/python/python38/bin
    ;进程id存放文件
    pidfile=/run/pro/pro.pid
    vacuum=True
    ;最大请求数为10000设置每个工作进程处理请求的上限,达到上限时,将回收(重启)该进程。可以预防内存泄漏
    max-requests=10000
    ;日志文件目录,设置了此项可以让程序后台运行
    daemonize=/tmp/pro/pro.log
    ;监听9100端口,注意这里不是socket,当时困恼了几天
    http=:8021
    ;stats=:9001
    ;防止部分文件名特殊字符乱码
    env = LANG=en_US.UTF-8
    processes=2
    threads=4
    # 启用线程支持
    enable-threads = true
    # 在master而不是每个worker中加载应用
    lazy-apps = false
    # 向外提供静态文件,\'/static\'代表路由,第二个static代表项目静态文件目录,此项可配置多个
    # 因为与django配置的路由相同,请求先到达uwsgi服务器,所以不会执行django的路由
    static-map = /nis-console=static/nis-console
    # 日志切分 50MB,切分的会文件名为daemonize + 时间戳
    log-maxsize = 50000000
    # 默认打开
    ;log-truncate = true

    运行uwsgi

    uwsgi --ini /usr/local/pro/pro/pro.ini

    停止运行

    ps -ef |grep uwsgi|grep -v grep|awk \'{print $2}\'|xargs kill -9

    来源:https://www.cnblogs.com/tastepy/p/15823573.html
    图文来源于网络,如有侵权请联系删除。

    未经允许不得转载:百木园 » Django+uwsgi+vue部署(不使用nginx)

    相关推荐

    • 暂无文章