Django線上部署代碼修改失效問題


記一次django項目的線上部署維護問題,django+nginx
關於nginx反向代理服務器的介紹這里有一篇博客介紹的比較好:nginx的相關介紹
以及當一次客戶端請求發出后,uwsig以及uWSGI,Nginx之間的大致流程:uWSGI、WSGI和uwsgi

一、問題描述

在將django項目部署到阿里雲(nginx作為web服務器)上之后,使用寶塔控制面板修改項目源碼,或者使用直接在終端修改,修改之后重啟uwsgi和nginx無效。

二、問題分析

1、本地環境

在本地環境的時候,是使用Django為提供的輕量級的專門為開發用的Web服務器。默認情況下,服務器運行在IP地址127.0.0.1的8000端口上。

python manage.py runserver

如果要自定義服務器端口和地址,可以顯式地傳遞一個IP地址和端口號給它。

python manage.py runserver 127.0.0.1:8080

注:manage.py是每個Django項目中自動生成的一個用於管理項目的腳本文件,需要通過python命令執行。manage.py接受的是Django提供的內置命令。
常用的內置命令有:

  • runserver:開啟本地web服務器
  • makemigrations:對models.py的所有改動,並且將這個改動遷移到migrations(默認全局)
  • migrate:migrations里面新改動的遷移文件更新數據庫(默認全局)
  • startapp:創建app
  • startproject:創建項目
  • createsuperuser:創建超級用戶

在本地的時候,直接修改,然后重啟runserver就可以效果,比較方便,但是到服務器上就出問題了。

2、問題所在

  • 一方面:如果直接在服務器中修改源代碼,由於Python本身對縮進的嚴格要求,會造成異常出錯。
  • 另一方面:在本地時候,使用 python manage.py runserver 來運行服務器。這只適用測試環境中使用。不用考慮uwsgi服務器,以及wsgi接口之間的問題,但是到真正的生產環境下,真正工作的是他們。
    也就是說每次修改源代碼,就需要重啟服務器。

三、問題解決

在修改源碼上傳服務器之后,進入服務器項目目錄,查看uwsgi進程

ps -ef|grep uwsgi 

然后殺死所有進程

killall -9 uwsgi

再重新啟動uwsgi

uwsgi -x projectname(項目名).xml

然后再寶塔或者直接命令重啟Nginx

/usr/local/nginx/sbin/nginx -s reload

問題解決,項目所做相關修改正常顯示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM