一個繪圖分析數據的模塊,django搭建,需要新繪制兩張圖,完成之后在測試環境下完美運行,然后部署到了自己本地的nginx服務器中,奇怪的是瀏覽器訪問的頁面中找不到圖片,於是回到項目目錄中查看,發現圖片目錄是存在的,於是查看了nginx的配置文件(因為Django的debug模式一旦關閉,django就不再負責靜態文件的訪問,這時候靜態文件的處理就得靠nginx,而且nginx在這方面表現更好),發現之前自己重新clone了項目,項目位置發生了變化,但卻忘記修改nginx中設置的靜態文件訪問路徑,修改之后再次訪問,圖片正常顯示,但是卻沒有新繪制的兩張圖,打開瀏覽器的控制台,驚訝的發現這個頁面居然是之前沒有新繪圖時的頁面,稍作鎮定后開始思考,是不是緩存的問題?於是各種清除緩存,先清了瀏覽器的,然后清了nginx(最可怕的是打開/var/cache/,發現根本就沒有nginx的緩存文件),但結果依然是沒變,依舊訪問之前的頁面。
浪費了一天時間也沒有解決問題,於是請教了前輩。前輩調試過程如下:
繪圖程序沒有問題頁面卻顯示原來的網頁,那么視圖函數根本沒有執行,為了確認,將urls.py文件中連接到繪圖的視圖函數的url隨意修改,然后在瀏覽器中用未修改的url訪問發現仍然能夠訪問且是原來的頁面,說明該項目中的視圖函數確實沒有執行,但頁面卻可以訪問,就說明該頁面其實訪問了別的項目的視圖函數,問題便定位到了uwsgi上,uwsgi是django與nginx的銜接,其中的chdir指定了django項目的運行目錄,果然,打開.ini文件后發現之前修改項目位置后這里的chdir也沒有修改,將目錄重新指定為當前項目目錄后完美運行。
第二個問題其實在我遇到第一問題后就應該可以自行解決的,包括視圖函數沒有執行我也想到了,只是自己對uwsgi的了解太少,沒有想到這一層,把自己困在了緩存的問題里沒完沒了的糾結,實在是太蠢了。