Nginx的管理以及升级操作

Posted Liang_GaRy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx的管理以及升级操作相关的知识,希望对你有一定的参考价值。

nginx的管理以及升级操作

如果Nginx启动了,可以使用nginx的命令来进行管理

  • 查看进程:ps -ef | grep nginx
  • 平滑启动:nginx -s reload–>不停止nginx的情况下,无痕重启;
    • 或者是:kill -HUP 单引号(cat /var/run/nginx.pid)
    • nginx.pid就是nginx启动的进程号;
    • 这个pid的位置取决于你源码安装指定的位置,yum安装默认就是那;
    • 平滑启动的意思是在不停止nginx的情况下,重启nginx,重新加载配置文件,启动新的工作线程,完美停止旧的工作线程。
  • 完美停止nginx
    • kill -QUIT 单引号(cat /var/run/nginx.pid)
  • 如果是想快速停止nginx
    • kill -TERM 单引号(cat /var/run/nginx.pid)
    • kill -INT 单引号(cat /var/run/nginx.pid)
  • 如果想要完美停止工作进程–>这个主要用于平滑升级
    • kill -WINCH nginx.pid
  • 强行停止nginx
    • pkill -9 nginx
  • 检查nginx的配置文件是否正确:
    • nginx -t
  • 停止nginx:
    • nginx -s stop
    • pkill nginx
  • 查看nginx的配置信息
    • nginx -V
#查看nginx进程
[root@Test0 ~]# ps -elf |grep nginx
1 S root       9482      1  0  80   0 - 11492 sigsus 12:12 ?        00:00:00 nginx: master process nginx
5 S nginx      9483   9482  0  80   0 - 11606 ep_pol 12:12 ?        00:00:00 nginx: worker process
.........

#平滑启动nginx
	#注意这个9482是上面的命令提示出来的nginx的pid号
[root@Test0 ~]# kill -HUP 9482
	#或者直接nginx -s reload
[root@Test0 ~]# nginx -s reload

#停止nginx
[root@Test0 ~]# nginx  -s stop
	#或者使用
[root@Test0 ~]# kill -TERM 9616
	#或者
[root@Test0 ~]# kill -INT 9623
	#强制停止nginx
[root@Test0 ~]# pkill -9 nginx

#查看nginx的信息
[root@Test0 ~]# nginx  -V
nginx version: LJW/nginx
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
.........

#检查nginx的配置文件语法-->显示ok代表没有问题
[root@Test0 ~]# nginx -t
nginx: the configuration file /usr/local/nginx//conf/nginx.conf syntax is ok

Nginx的升/降级操作

  • nginx运行了一段时间,有可能需要把版本升级或者是降级操作;那么我们现场也得需要掌握如何升级/降级nginx
  • nginx的升级和降级都可以分为四个步骤
    • 软件准备
    • 预编译
    • 编译、
    • 配置

–>准备工作如下:

#首先确定一下nginx的版本-->由于一开始的时候我们修改过源代码;导致没能看到nginx的版本-->但是我开始的时候我记得就是nginx-1.16版本
[root@Test0 ~]# nginx -V
nginx version: LJW/nginx
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
................

#首先我们准备一下nginx的1.17版本
[root@Test0 ~]# cd /usr/local/src/
[root@Test0 src]# ls nginx-1.17.10.tar.gz 
nginx-1.17.10.tar.gz

#再看一下nginx是在启动状态
[root@Test0 src]#  ps -ef | grep nginx

–>预编译、编译

#解压nginx-1.17的源码包-->记住要进入到nginx的源码包目录-->预编译需要哦
[root@Test0 src]# tar -xf nginx-1.17.10.tar.gz 
[root@Test0 src]# cd nginx-1.17.10

#预编译-->因为是升级操作-->原来我们是怎么编译的,后面也得怎么编译
	#先看看原来编译的参数
[root@Test0 nginx-1.17.10]# nginx -V
...............
configure arguments: --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
	#确认好了之后就开始预编译
[root@Test0 nginx-1.17.10]# ./configure --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module

#编译-->注意千万别安装
[root@Test0 nginx-1.17.10]# make 

#到这里位置基本完成

–>最后是执行升级/降级操作

  • 备份就版本的nginx执行文件
  • 替换新版本的nginx执行文件
  • 测试一段时间后退出旧版本
#备份旧版本的nginx可执行文件
[root@Test0 nginx-1.17.10]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

#替换新的nginx执行文件
[root@Test0 nginx-1.17.10]# cp  objs/nginx /usr/local/nginx/sbin/

#测试一下是否正常
[root@Test0 nginx-1.17.10]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx//conf/nginx.conf syntax is ok
	#启动nginx
[root@Test0 nginx-1.17.10]# nginx  -s reload

#查一下nginx信息
[root@Test0 nginx-1.17.10]# nginx  -V
nginx version: nginx/1.17.10 #-->这里已经看到升级成功
............

nginx 源码安装以及后续升级https

事情的来源是,公司要将网站从http升级到https,由于历史遗留原因,才发现现有的nginx是通过源码安装的,并没有安装ssl模块,需要现安装sll模块,这个nginx是整个公司最前端的一个代理,涉及到很多部门,因为之前没有操作过,还是小心点为妙,下面是在虚拟机上演示的。

1,先安装后面所需的一些包

yum install gcc-c++
yum install pcre pcre-devel  
yum install zlib zlib-devel  
yum install openssl openssl--devel  

2,下载nginx源码

wget -c https://nginx.org/download/nginx-1.11.4.tar.gz 

3,解压,编译,安装

tar -zxvf nginx-1.11.4.tar.gz
cd nginx-1.11.4
./configure
make
make install

4,安装成功后,就可以在浏览器中访问了,默认安装在/usr/local/nginx 下面

技术分享图片

5,由于用的是默认安装,我们通过命令查看nginx包含的模块,并没有ssl模块

/usr/local/nginx/sbin/nginx -V

技术分享图片

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

6,下面就是怎么在这种情况发生之后,怎么后续安装一些模块,比如ssl模块

7,进入源码包,重新执行 之前的模块,注意一定不要执行 make install,否则就覆盖了

cd nginx-1.11.4
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make

8,安装模块,编译之后,先备份之前的nginx ,以备不时之需,然后替换编译好的nginx

cp /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/bak/nginx
cp ./objs/nginx /usr/local/nginx/sbin/

9,现在再查看nginx已经安装的模块

技术分享图片

成功,Over,如果是通过rpm包安装的,好像默认是包含这些模块的,如果通过源码安装,而且忘了安装一些模块的话,就只能后续安装这些模块了,如果你有更好的方式,希望批评指正。

以上是关于Nginx的管理以及升级操作的主要内容,如果未能解决你的问题,请参考以下文章

运维实战 Nginx配置优化

阿里P8整理出Nginx笔记:Nginx应用与运维实战核心篇

2-2-运维必备核心技能-nginx基础入门

Nginx服务介绍

服务管理--Nginx

Nginx在线服务状态下平滑升级或新增模块的详细操作