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

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

原文地址:https://www.cnblogs.com/welan/p/10888496.html

时间: 2024-10-02 19:22:48

Django线上部署代码修改失效问题的相关文章

Django线上部署系统环搭建

Django线上部署系统环搭建 本文大致分为:系统环境准备.Python3安装配置.Virtualenv基本使用 .git基本使用 四部分. ps: 也可使用virtualenvwrapper代替Virtualenv 系统环境准备: CentOS6.5 自带Python2.6.6,我们需要编译安装Python3(本文档安装的是Python3.6.1) 建议将yum源配置成阿里的yum源,参考链接:http://blog.csdn.net/chavo0/article/details/519393

Django线上部署样式加载不出来

当我们线上部署时,需要将debug 模式调成 False,但是后台样式就会失效,原因是 django不支持 线上 静态文件, 增加下面这行即可解决. OK 原文地址:https://www.cnblogs.com/wujf-myblog/p/10939414.html

分享下使用 svn,测试服务器代码自动更新、线上服务器代码手动更新的配置经验

分享下使用 svn,测试服务器代码自动更新.线上服务器代码手动更新的配置经验 利用SVN的POST-COMMIT钩子自动部署代码 Linux SVN 命令详解 Linux SVN 命令详解2

vue-router+webpack线上部署时单页项目路由,刷新页面出现404问题

使用vue项目,线上部署的时候,访问首页以及通过路由打开二级页面没有问题,但是一刷新就出现404现象 因为刷新页面时访问的资源在服务端找不到,因为vue-router设置的路由不是真实存在的路径. 解决办法是:在nginx.conf配置修改如下: location / { root html; try_files $uri $uri/ @router; index index.html index.htm; } location @router { rewrite ^.*$ /index.htm

1-1 用本地代码调试线上环境代码

方法1:fillder             第一步:抓包抓取线上代码, 第二步:将远程代码拖到AutoResponder面板 第三步:浏览本地文件 第四步:修改你的文件刷新浏览器,成功,哈哈. 来自为知笔记(Wiz)

Fiddler调试线上JS代码

强力推荐一款js调试神器,Fiddler 大家平时肯定都用过火狐的Firebug或者谷歌的调试工具来调试JS,但遗憾的是我们不能像编辑html,css那样来直接新增或者删除JS代码. 虽然可以通过调试工具的控制台来动态执行JS代码,但有时候却远远不够用. 特别是当产线环境不能随意修改文件情况下,用线上环境来调试本地代码更是迫切的需求. (往往本地测试通过,上线后却是各种bug.) 今天分享一下如何用Fiddler来修改并调试线上的JS代码. 以博客园首页为例子,用我本地的一个js文件来替换它的一

如何利用docker 构建golang线上部署环境

公司最近开发了一个项目是用golang 写的,现在要部署到线上环境去,又不想在服务器上装单独的golang,决定用docker 封装下,直接打到镜像里面,然后就直接在hub.docker.com上面搜了下golang的镜像,直接就docker pull golang 最新的是1.9的版本 然后参考官方的文档弄了下Dockerfile大概是这样: FROM golang MAINTAINER jackluo #指定工作目录 WORKDIR /go/src/ActivitApi COPY . . C

Node+mongodb线上部署到阿里云

部署使用的主要工具是pm2+nginx,使用码云的私有仓库,自动部署到服务器,私有仓库和服务器要事先设置好免密码登录.使用DNSPOD进行域名解析.事先准备好阿里云服务器,域名,一个网站.阿里云已经安装好mongodb数据库,node,pm2,git等.将本地网站所用的数据库备份一份,上传到服务器上. 1.先在dbspod添加一条A记录 2.码云上建立私有仓库 3.在项目中添加ecosystem.json 4.在服务器/www目录下创建文件夹 5.上传代码到私人仓库和服务器 一键部署到服务器 p

线上部署链路聚合bonding

线上做链路聚合bonding 服务器:联想 x3650 M4    (两台) 链路聚合可以将两块或者多块网卡结合成单一接口,从而增加网络吞吐量.带宽和冗余.如果一块网卡down或者拔出,其他网卡将保持网络通信,增加冗余.容错和负载均衡. 配置时首先做好规划,以服务器联想 x3650 M4为例说明.服务器有2个网络模块,每个模块各有2块网卡,一共4块网卡.为了提高冗余,分别选取物理网卡1和物理网卡3做bonding,对应系统显示网卡为eth0,eth2. 如果安装了图形界面,需要停止Network