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

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

1、問題描述

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

2、問題分析

一、本地環境

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

python manage.py runserver

若是要自定義服務器端口和地址,能夠顯式地傳遞一個IP地址和端口號給它。web

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就能夠效果,比較方便,可是到服務器上就出問題了。django

二、問題所在

  • 一方面:若是直接在服務器中修改源代碼,因爲Python自己對縮進的嚴格要求,會形成異常出錯。
  • 另外一方面:在本地時候,使用 python manage.py runserver 來運行服務器。這隻適用測試環境中使用。不用考慮uwsgi服務器,以及wsgi接口之間的問題,可是到真正的生產環境下,真正工做的是他們。
    也就是說每次修改源代碼,就須要重啓服務器。

3、問題解決

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

ps -ef|grep uwsgi

而後殺死全部進程app

killall -9 uwsgi

再從新啓動uwsgi測試

uwsgi -x projectname(項目名).xml

而後再寶塔或者直接命令重啓Nginx阿里雲

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

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

相關文章
相關標籤/搜索