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

问题解决,项目所作相关修改正常显示。

相关文章
相关标签/搜索