Python   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Django+uwsgi+vue部署(不使用nginx)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

背景

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

部署流程

Vue打包@H_772_9@
  • 不熟悉VUE,按照给的步骤进行
  1. 执行npm run lint-fix
  2. 执行npm run build
  3. 将生成的包放到Django项目根目录的static目录下

Django配置@H_772_9@

静态文件目录

-- 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

大佬总结

以上是大佬教程为你收集整理的Django+uwsgi+vue部署(不使用nginx)全部内容,希望文章能够帮你解决Django+uwsgi+vue部署(不使用nginx)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: