• 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
    

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

  • 相关阅读:
    双目对物体定位
    七个不变特征识别
    bmp和opencv格式转换
    职业规划
    input disp fprintf用法
    多线程
    访问权限
    机器人运动学仿真
    MOTOCOM32运动控制器编程
    回调函数以及钩子函数的概念
  • 原文地址:https://www.cnblogs.com/welan/p/10888496.html
Copyright © 2020-2023  润新知