热部署的概念:当从老版本替换为新版本的nginx的时候,如果不热部署的话,会需要取消nginx服务并重启服务才能替换成功,这样的话会使正在访问的用户在断开连接,所以为了不影响用户的体验,且需要版本升级,就需要热部署来升级版本
版本回滚的概念:当新版本上线之后出现问题,需要回到老版本,这时候就需要做版本回滚,其实就是在你做版本升级的时候,将老版本备份以下,然后替换新版本,之后杀死新版本的进程便可以
实验步骤:1:先从官网上拷贝nginx-1.14.2版本的链接,且需要源码部署
2:解压在/opt/目录下
3:创建nginx的进程 useradd -u 998 -s /sbin/nologin nginx
4:cd /opt/nginx-1.14.2进行预编译和编译安装,编译的话需要先安装devlopment或者安装gcc,gcc-c++,yum -y groupinstall devlopment或者yum -y gcc gcc-c++前面时间需要久一点,后面快一写
5:预编译的命令是$./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
$make
$make install
6:用echo $?检查有没有安装成功,成功的话则在下面设置控制命令nginxctl
7:$vi /usr/bin/nginxctl
#!/usr/bin/env bash
case $1 in
stop)
/usr/local/nginx/sbin/nginx -s quit
;;
start)
/usr/local/nginx/sbin/nginx
;;
reload)
/usr/local/nginx/sbin/nginx -s reload
;; *)
echo "please input (start|stop|reload)"
;;
esac

~ 8:chmod a+x /usr/bin/nginxctl #设置文件的执行权限
9:nginxctl start #启动nginx服务
10:这时候从浏览器上输入ip地址,便会显示nginx访问首页
11:现在开始进行热部署,将版本升级到nginx-16.0.1,从官网上拷贝下载链接
12:跟之前安装一样,不过到make之后就不一样了,不需要make install
13:[root@web3 nginx-1.16.1]# mv /usr/local/nginx/sbin/{nginx,nginx.old}#备份一下nginx-14.0.2版本,防止版本需要回退
[root@web3 nginx-1.16.1]# ls
auto CHANGES.ru configure html Makefile objs src
CHANGES conf contrib LICENSE man README
[root@web3 nginx-1.16.1]# cd objs #新版本的nginx命令在objs里
nginx ngx_auto_config.h ngx_modules.c
nginx.8 ngx_auto_headers.h ngx_modules.o
[root@web3 nginx-1.16.1]# cp objs/nginx /usr/local/nginx/sbin/nginx #需要将新版本的nginx命令替换掉原先版本的
[root@web3 nginx-1.16.1]# ps aux|grep nginx #此时查看nginx进程,看到有nginx进程在运行,还是老版本的进程
root 51891 0.0 0.0 20544 600 ? Ss 21:49 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 51893 0.0 0.1 20988 1560 ? S 21:49 0:00 nginx: worker process
root 66744 0.0 0.0 112708 984 pts/0 R+ 22:06 0:00 grep --color=auto nginx
[root@web3 nginx-1.16.1]# kill -USR2 51891 #优雅的关闭老版本进程,热部署主要就是依靠这条命令,正在访问的用户依然访问老版本,新用户访问则会访问到新版本的nginx
[root@web3 nginx-1.16.1]# ps aux |grep nginx #这时候看进程发现有4个进程,新老版本都有
root 51891 0.0 0.0 20544 792 ? Ss 21:49 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 51893 0.0 0.1 20988 1560 ? S 21:49 0:00 nginx: worker process
root 67798 0.1 0.1 20552 1588 ? S 22:07 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 67799 0.0 0.1 21004 1328 ? S 22:07 0:00 nginx: worker process
root 68006 0.0 0.0 112708 984 pts/0 R+ 22:07 0:00 grep --color=auto nginx
[root@web3 nginx-1.16.1]# kill -WINCH 51891 #这条命令的意思是让老版本不要去检测新用户访问的响应
[root@web3 nginx-1.16.1]# ps aux|grep nginx
root 51891 0.0 0.0 20544 792 ? Ss 21:49 0:00 nginx: master process /usr/local/nginx/sbin/nginx
root 67798 0.0 0.1 20552 1588 ? S 22:07 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 67799 0.0 0.1 21004 1328 ? S 22:07 0:00 nginx: worker process
root 69592 0.0 0.0 112708 980 pts/0 R+ 22:09 0:00 grep --color=auto nginx
[root@web3 nginx-1.16.1]# /usr/local/nginx/sbin/nginx -v #这时候检测版本就是1.16.1
nginx version: nginx/1.16.1
2版本回滚:
版本回滚和之前差不多,只是有一个问题需要注意,因为新版本不行,所以直接用kill命令就好,如果再需要升级版本,再进行热部署一遍即可
[root@web3 nginx-1.16.1]# vi /usr/bin/nginxctl
[root@web3 nginx-1.16.1]# mv /usr/local/nginx/sbin/{nginx,nginx.old-1.16.1}
[root@web3 nginx-1.16.1]# ps aux |grep nginx
root 21161 0.0 0.0 112708 984 pts/0 R+ 23:37 0:00 grep --color=auto nginx
root 51891 0.0 0.0 20544 792 ? Ss 21:49 0:00 nginx: master process /usr/local/nginx/sbin/nginx
root 67798 0.0 0.1 20552 1588 ? S 22:07 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 67799 0.0 0.1 21004 1572 ? S 22:07 0:00 nginx: worker process
[root@web3 nginx-1.16.1]# mv /usr/local/nginx/sbin/{nginx.old,nginx}
[root@web3 nginx-1.16.1]# ps aux|grep nginx
root 22307 0.0 0.0 112708 984 pts/0 R+ 23:39 0:00 grep --color=auto nginx
root 51891 0.0 0.0 20544 792 ? Ss 21:49 0:00 nginx: master process /usr/local/nginx/sbin/nginx
root 67798 0.0 0.1 20552 1588 ? S 22:07 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 67799 0.0 0.1 21004 1572 ? S 22:07 0:00 nginx: worker process
[root@web3 nginx-1.16.1]# kill -USR2 51891
[root@web3 nginx-1.16.1]# kill -9 67799
[root@web3 nginx-1.16.1]# ps aux|grep nginx
nginx 23560 1.1 0.1 21004 1328 ? S 23:40 0:00 nginx: worker process
root 23638 0.0 0.0 112708 984 pts/0 R+ 23:41 0:00 grep --color=auto nginx
root 51891 0.0 0.0 20544 792 ? Ss 21:49 0:00 nginx: master process /usr/local/nginx/sbin/nginx
root 67798 0.0 0.1 20552 1588 ? S 22:07 0:00 nginx: master process /usr/local/nginx/sbin/nginx
[root@web3 nginx-1.16.1]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.14.2

nginx之热部署,以及版本回滚的更多相关文章

  1. 用Helm部署Kubernetes应用,支持多环境部署与版本回滚

    1 前言 Helm是优秀的基于Kubernetes的包管理器.利用Helm,可以快速安装常用的Kubernetes应用,可以针对同一个应用快速部署多套环境,还可以实现运维人员与开发人员的职责分离.现在 ...

  2. Nginx 版本回滚

    目录 参考信息 源码安装 nginx-1.14.2 版本升级 nginx-1.16.1 版本回滚 ①.对于软件的版本升级.添加官方模块.添加第三方模块,都需要用源码安装包重新生成(configure) ...

  3. nginx使用热部署添加新模块

    简介 当初次编译安装nginx时,http_ssl_module 模块默认是不编译进nginx的二进制文件当中,如果需要添加 ssl 证书.也就是使用 https协议.那么则需要添加 http_ssl ...

  4. TortoiseSVN 版本回滚

    尝试用TortoiseSVN进行版本回滚,回滚到的版本和实际的内容有出入,可能是点了太多次给点乱了,囧~ 不过发现一个比较靠谱的方法,如下: 右键点击文件TortoiseSVN->showlog ...

  5. svn 日志版本回滚

    [root@v01 online]# svn diff -r 9:8 Index: index.html =============================================== ...

  6. git---远程仓库版本回滚

    开发中,发现有错误版本提交带远程分支master,怎么处理? 1 简介 最近在使用git时遇到了远程分支需要版本回滚的情况,于是做了一下研究,写下这篇博客. 2 问题 如果提交了一个错误的版本,怎么回 ...

  7. SVN系列之—-SVN版本回滚的办法

    例:SVN版本为:TortoiseSVN 1.9.7 一.SVN简介 subversion(简称svn)是一种跨平台的集中式版本控制工具,支持linux和windows. 版本控制解决了:*代码管理混 ...

  8. SVN版本回滚实战

    天在使用SVN发布的时候不小心修改了一些不正确的东西,新增和编辑了一些错误的文件,由于文件数量比较多,并且目录复杂,不可能单个进行处理,所以想到了SVN版本回滚. 回滚本地工作目录: 1.右键工作目录 ...

  9. git版本回滚

    本地版本回滚 git reset --hard <版本号> (git log 可查看版本号,版本号不用写全) 远程仓库版本回滚 先在本地将版本回滚 ,然后git push -f 强制提交

随机推荐

  1. 大哥带我们的mysql注入 基于bool的盲注

    盲注 那么我们来了解一点盲注的语法 这里面是语法的介绍 https://blog.csdn.net/alex_seo/article/details/82148955 0X01第一步我们先判断当前数据 ...

  2. 说下Java堆空间结构,及常用的jvm内存分析命令和工具

    Java堆空间结构图:http://www.cnblogs.com/SaraMoring/p/5713732.html JVM内存状况查看方法和分析工具: http://blog.csdn.net/n ...

  3. phpstorm的下载激活及定制使用和设置

    1.下载地址: 链接:https://pan.baidu.com/s/19PbZnzq0x7grgBge-iHI3w&shfl=sharepset  提取码:dnte 2.激活码获取:http ...

  4. 01 MySQL入门了解

      MySql的前戏 在学习Mysql之前,我们先来想一下一开始做的登录注册案例,当时我们把用户的信息保存到一个文件中: #用户名 |密码root|123321 alex|123123 上面文件内容的 ...

  5. 深入理解php的输出缓冲区(output buffer)

    这篇文章是翻译自Julien Pauli的博客文章PHP output buffer in deep,Julien是PHP源码的资深开发和维护人员.这篇文章从多个方面讲解了PHP中的输出缓冲区以及怎么 ...

  6. linux测试某进程占用oi、cpu、内存的使用情况

    pidstat 概述 pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu.内存.线程.设备IO等系统资源的占用情况.pidstat首次运行时显示自系统启动开始的各项统计信息, ...

  7. 技术文档翻译-------glove readme(1)

    Package Contents To train your own GloVe vectors, first you tools. An example is included in demo.sh ...

  8. The file is inaccessible to Server.

    ArcGIS Unable to Start serviceserver安装后,启动服务失败,报错信息如下:Unable to Start service. Error (Server object  ...

  9. SELECT-OPTIONS对象

    1. SELECT-OPTIONS基本语法及定义 SELECT-OPTIONS通常用于参照一数据库字为建立数据输入域,其定义对象命名长度不能超过8位,其产生的屏幕对象最大输入长度为18位,语法如下: ...

  10. oracle expdp/impdp/可传输表空间

    oracle expdp/impdp/可传输表空间/及一些参数 Oracle data pump 导出操作能够将表.索引.约束.权限.PLSQL包.同义词等对象从数据库导出,并将它们保存在一种非文本格 ...