python框架django專案部署相關知識詳解
這篇文章主要介紹了python框架django專案部署相關知識詳解,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
一:專案部署的框架
nginx和uWSGI在生產伺服器上進行的部署
二:什麼是nginx?
nginx是一個web伺服器。
什麼是web伺服器?
web伺服器則主要是讓客戶可以通過瀏覽器進行訪問,處理HTML檔案,css檔案,js檔案,圖片等資源。web伺服器一般要處理靜態檔案。對接伺服器。
什麼是靜態檔案?
css,js,html,圖片等不需要後臺進行邏輯處理的檔案。
特點:一般將靜態檔案放在web伺服器裡面。如nginx伺服器中,做到動態靜態分離的處理。
什麼是動態檔案?
除了靜態檔案之外,一般都是動態檔案。
特點:動態檔案一般web伺服器不直接進行處理,例如ngnix會將動態資源轉發給應用伺服器(反向代理),讓應用伺服器進行處理,並將處理結果,返給nginx,nginx在將結果返回瀏覽器。
什麼是應用伺服器?
應用伺服器直接面對的是我們寫的程式。
特點:對接程式函式,處理業務邏輯。
uWSGI是一個應用伺服器。
三:uWSGI和nginx之間通訊的簡單過程。
uWSGI接到請求後,將請求包進行處理,處理成wsgi(一種通訊協議)可以接受的格式,併發送給wsgi,wsgi根據請求,呼叫應用程式中的某個檔案中的某個函式,進行處理,處理完成後,將返回值,再次交給wsgi,wsgi將返回值進行打包,打包成uWSGI接受的格式,然後uWSGI將結果轉發給nginx,ngnix最終將返回值給瀏覽器。
四:為什麼分成靜態伺服器和應用伺服器進行部署?
實現了動和靜分離。提高訪問靜態檔案的速度。降低對後臺的訪問。提高了網站的吞吐量。
實現動靜分離的方式:
1. 頁面靜態化,頁面靜態化後的頁面是放在哪裡,硬碟還是快取中。
2. 靜態檔案例如:圖片還有html,css檔案時放在web伺服器上,還是web伺服器的快取裡面?
五:setting.py中的debug=True
我們希望本機訪問的時候,開啟除錯模式,錯誤了給錯誤資訊的詳細頁面,其他機器訪問的時候,關閉除錯模式,錯誤了給他們404頁面。
socket.gethostname() 返回的是主機名
# setting.py中改變DEBUG=True import socket if socket.gethostname() == "xxx": DEBUG =True else: DEBUG = False
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。