Nginx安装及其热部署

nginx
Apachew为prefork模型,同步多进程,至有完成某块内存的服务才会释放该块内存的资源,不然该块内存无法使用,适合峰值型业务(比较稳定,少bug)
nginx为worker模型,异步多进程,多个进程共占一块内存,适合做代理(不稳定,多并发时,一个服务down掉会导致其余服务也down掉)
nginx的使用
从nginx官网获取压缩包后解压

在这里插入图片描述

tar cxf nginx-1.17.1.tar.gz##解压并拆解文件
[root@server1 ~]# cd nginx-1.17.1/##进入目录
You have mail in /var/spool/mail/root
配置文件的自检功能(添加后会高亮显示)
[root@server1 nginx-1.17.1]# mkdir ~/.vim##在家目录下建立目录存放配置文件
[root@server1 nginx-1.17.1]# cp -r contrib/vim/* ~/.vim##移动文件至家目录下的新建目录,我们就可以通过颜色来判断是否有关键字出错
[root@server1 nginx-1.17.1]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README
[root@server1 nginx-1.17.1]# vim auto/cc/gcc##修改编译配置文件

使得编译时不产生日志
在这里插入图片描述

[root@server1 nginx]# useradd -s /sbin/nologin nginx
[root@server1 nginx-1.17.1]# vim conf/nginx.conf

添加用户nginx,使得输入该文件的进程的用户和组都输入nginx用户

在这里插入图片描述

[root@server1 nginx-1.17.1]# ./configure --prefix=/usr/local/nginx --with-file-aio ##编译
[root@server1 nginx-1.17.1]# make && make install##安装,只有第一次安装时执行make install命令,之后只需要执行make命令将新生成的配置文件复制至编译目录下即可,不然新的文件会将编译目录中的所有配置文件覆盖

[root@server1 ~]# cd /usr/local/nginx/##跳转至编译目录
[root@server1 nginx]# ls
conf  html  logs  sbin
[root@server1 nginx]# ./sbin/nginx ##启动进程
[root@server1 nginx]# ps -ef | grep nginx##查看进程

在这里插入图片描述
nginx的热部署(版本更新与回退)
首先选择另一个版本的nginx拆包后编译

[root@server1 ~]# tar zxf nginx-1.16.0.tar.gz 
[root@server1 ~]# cd nginx-1.16.0/
[root@server1 nginx-1.16.0]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README
[root@server1 nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --with-file-aio
[root@server1 nginx-1.16.0]# make##只需要执行make命令,不需要执行make install命令,不然会替代之前的配置文件

复制该版本的配置文件至编译目录下

[root@server1 objs]# cp -f nginx /usr/local/nginx/sbin/nginx 
cp: overwrite ‘/usr/local/nginx/sbin/nginx’? y
[root@server1 objs]# ps -ef | grep nginx ##出现新的master9567
root      6978     1  0 10:35 ?        00:00:00 nginx: master process ./sbin/nginx
nginx     6979  6978  0 10:35 ?        00:00:00 nginx: worker process
nginx     6980  6978  0 10:35 ?        00:00:00 nginx: worker process
root      9567  1045  0 10:43 pts/0    00:00:00 grep --color=auto nginx

[root@server1 objs]# ./nginx -V ##此时的版本已经变为了1.16.0
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)

-USR2 平滑升级可执行程序,主要用于 版本升级
-WINGH 从容关闭工作进程
-HUP 平滑启动

[root@server1 objs]# kill -USR2 6978(旧版本号)##使得master6978处理完以有线程后不再接收服务,master9571来接收新线程
Nginx安装及其热部署_第1张图片

[root@server1 objs]# kill -WINCH 6978(旧版本号)##master6978来接收服务,停用master9571的worker进程

[root@server1 objs]# ps -ef | grep nginx
root 6978 1 0 10:35 ? 00:00:00 nginx: master process ./sbin/nginx
root 9571 6978 0 10:46 ? 00:00:00 nginx: master process ./sbin/nginx
nginx 9572 9571 0 10:46 ? 00:00:00 nginx: worker process
nginx 9573 9571 0 10:46 ? 00:00:00 nginx: worker process
root 9578 1045 0 10:47 pts/0 00:00:00 grep --color=auto nginx

[root@server1 objs]# kill -HUP 6978(旧版本号) ##唤醒6978的worker进程
Nginx安装及其热部署_第2张图片
[root@server1 objs]# kill -WINCH 9571 (新版本号)##停用9571master的worker服务
在这里插入图片描述

[root@server1 objs]# cd
[root@server1 ~]# cd nginx-1.17.1/
[root@server1 nginx-1.17.1]# cd objs
[root@server1 objs]# cp -f nginx /usr/local/nginx/sbin/nginx  ##将1.17.1版本复制到编译目录
cp: overwrite ‘/usr/local/nginx/sbin/nginx’? y
[root@server1 objs]# /usr/local/nginx/sbin/nginx -v ##新发布的就变为了1.17.1版本,1.16.0版本就被撤回了
nginx version: nginx/1.17.1

你可能感兴趣的:(nginx)