背景
- 專案在內網部署,本來想使用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.uj5u.com/houduan/417047.html
標籤:Python
