nginx配置和热部署实践

目录

一、nginx配置文件

1.配置文件

2.nginx配置文件语法

3.include

二、nginx.conf参数

1.user参数

2.nginx.conf重要的指令块

3.nginx命令行

三、nginx热部署功能实践

1.热部署的特点

2.大致流程

3.环境准备

4.备份旧nginx二进制文件

5.下载编译安装新的nginx

6.检查一下新版的nginx信息

7.检查当前nginx状态

8.发送user2信号

9.此时再次检查新的nginx进程状态

10.发送WINCH信号


一、nginx配置文件

1.配置文件

cd /var/nginx_1.17/conf/

给配置文件语句加高光

mkdir -p ~/.vim

cp -r /root/nginx-1.17.10/contrib/* ~/.vim/

vim nginx.conf

nginx配置和热部署实践_第1张图片

2.nginx配置文件语法

  • nginx.conf是由指令和指令块组成
  • 每行语句都得有分号结束,指令和参数之间都是有空格分隔的
  • 指令快可以由大括号{},组织多条语句
  • nginx.conf使用#表示注释符号
  • nginx支持用$变量名
  • nginx支持include语句
  • nginx部分指令支持正则表达式,如rewrite重写

3.include

建立文件夹,每个站点一个conf文件

/var/nginx_1.17/conf
mkdir extra
cd extra/
touch index1.conf
cd .. 
vim nginx.conf

加上

include extra/*.conf;

nginx配置和热部署实践_第2张图片

cd extra/
touch www.conf
touch blog.conf
touch bbs.conf


二、nginx.conf参数

nginx配置和热部署实践_第3张图片

1.user参数

ps -ef | grep nginx

工作进程的用户是nobody

vim /var/nginx_1.17/conf/nginx.conf

nginx配置和热部署实践_第4张图片

useradd www
passwd www
nginx -s reload

查看下

ps -ef | grep nginx

nginx配置和热部署实践_第5张图片

nginx配置和热部署实践_第6张图片

nginx配置和热部署实践_第7张图片

nginx配置和热部署实践_第8张图片

2.nginx.conf重要的指令块

核心功能都在http{}指令块里面,http{}块还包含了以下指令

  • server{}指令快,对应一个站点配置,反向代理,静态资源站点
  • location{},对应一个url
  • upstream{},定义上游服务,负载均衡池

3.nginx命令行

nginx启停指令,-s参数,指的是给nginx进程发送某种信号
nginx #初次启动,直接输入nginx,如启动后再执行该命令,就会提示端口冲突
nginx -s stop #停止nginx进程
nginx -s reload #平滑重启,利用reload可以在不重启nginx进程的情况下,重新读取配置文件

nginx配置和热部署实践_第9张图片

4.nginx-master信号传递

nginx配置和热部署实践_第10张图片

  • master主进程是不处理请求的,而是分配请求发给worker进程,主进程负责重启,热加载,热部署等等
  • master是根据nginx.conf中,worker_process定义启动时创建的工作进程数
  • 当worker运行后,master就处于一个等待的状态,等待用户的请求来临,或者系统信号
  • 系统管理员可以发送kill指令,或者nginx -s 信号,这样的形式操控nginx

nginx配置和热部署实践_第11张图片


三、nginx热部署功能实践

1.热部署的特点

nginx作为一个优秀的web服务器,优秀的反向代理服务器,并且nginx也支持高可用的特性,nginx还支持热部署的特点。

热部署的特点:再不重启或者关闭进程的情况下,新的应用直接替换旧的应用

比如:更换nginx的二进制版本

2.大致流程

  • 备份旧的程序:二进制文件 备份nginx命令
  • 覆盖旧的二进制文件
  • 发送USER2信号发给旧的master进程
  • 发送WINCH信号给旧的master进程
  • 发送QUIT信号给旧的master进程

3.环境准备

nginx程序版本

nginx -v

准备一个新的nginx版本

wget http://tengine.taobao.org/download/tengine-2.2.0.tar.gz

nginx配置和热部署实践_第12张图片

nginx工作模式是master-work

刚才所说的nginx支持reload重载,仅仅是nginx的master进程,在检查配置文件正确之后,则更新,错误则会返回异常,正确的情况下也不会更改已经建立的worker,只会等待worker处理完毕请求之后,杀死旧的worker,然后再从新的配置文件中,运行出新的worker(一旦更换了配置文件,reload master主进程,那么手下的worker也就会被换一批了)

nginx还提供了热部署功能,特点是:在不影响用户体验的情况下,进行软件的版本升级,也就是不主动杀死worker,更换软件的二进制命令

4.备份旧nginx二进制文件

cd /var/nginx_1.17/sbin/

mv nginx nginx_1.1.7

5.下载编译安装新的nginx

cd ~
tar -zxvf tengine-2.2.0.tar.gz
cd tengine-2.2.0
./configure --prefix=/var/nginx_1.17 --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-threads --with-file-aio
make && make install

6.检查一下新版的nginx信息

cd /var/nginx_1.17/sbin/

ls

我们有两个版本的nginx了

[root@localhost sbin]# nginx -v
Tengine version: Tengine/2.2.0 (nginx/1.8.1)
[root@localhost sbin]# nginx_1.1.7 -v
nginx version: nginx/1.17.10

nginx配置和热部署实践_第13张图片

7.检查当前nginx状态

ps -ef | grep nginx

8.发送user2信号

此时发送user2信号给旧的master process,租用是使得nginx旧的版本停止接收用户请求,并且切换为新的nginx版本

kill -USR2 8290

9.此时再次检查新的nginx进程状态

ps -ef | grep nginx

10.发送WINCH信号

此时发送WINCH信号,给旧的master进程,让旧的master进程优雅的退出

kill -WINCH ` cat /var/nginx_1.17/logs/nginx.pid.oldbin `

你可能感兴趣的:(Linux服务器方向,服务器运维,nginx,运维,linux,服务器)