Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

nginx服务器如何处理请求? 
1 多进程机制 
2 每个工作进程采用异步非阻塞方式 
3 采用epoll事件驱动模型

(1)特点
一个轻量级、高性能、稳定性高、并发性好的HTTP和反向代理服务器。也是由于其的特性,其应用非常广
(2)主要功能
反向代理
是用来代理服务器的,代理我们要访问的目标服务器。代理服务器接受请求,然后将请求转发给内部网络的服务器(集群化),并将从服务器上得到的结果返回给客户端,此时代理服务器对外就表现为一个服务器
负载均衡
多在高并发情况下需要使用。其原理就是将数据流量分摊到多个服务器执行,减轻每台服务器的压力,多台服务器(集群)共同完成工作任务,从而提高了数据的吞吐量。可使用的负载均衡策略有:轮询(默认)、权重、ip_hash、url_hash(第三方)、fair(第三方)
动静分离
指把动态请求和静态请求分离开,合适的服务器处理相应的请求,使整个服务器系统的性能、效率更高;根据配置对不同的请求做不同转发,这是动态分离的基础。静态请求对应的静态资源可以直接放在Nginx上做缓冲,更好的做法是放在相应的缓冲服务器上。动态请求由相应的后端服务器处理。

一 Nginx的编译 安装

1.1官网下载nginx压缩包

可以从官网进行下载:www.nginx.org —>download
本博文使用该版本进行: nginx-1.17.1.tar.gz

1.2解压

tar zxf nginx-1.17.1.tar.gz

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第1张图片

1.3修改配置文件。关闭debug模式进行编译安装

关闭该模式之后,编译安装的nginx目录会比较小,便于移动使用

vim auto/cc/gcc
171 # debug
172 #CFLAGS="$CFLAGS -g"   # 将该行进行注释,关闭debug模式

1.4编译安装nginx

./configure --prefix=/usr/local/nginx --with-file-aio

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第2张图片

–prefix=/usr/local/nginx #安装路径

 

在nginx目录下生成了两个文件 Makefile
makefile 是告诉怎么编译 怎么运行
objs中间文件 ngx_modulrs.c 编译生成了哪些模块

1.5 make & make install 编译安装

第一次安装的时候才执行make install , 热部署  替换版本的时候,只执行make(生成objs 二进制目录)

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第3张图片

1.6启动nginx 查看进程及版本 编译模块

发现有两个nginx的进程一个是master进程,一个是worker进程,master是主进程,用来派生worker进程,worker进程是实际工作的进程。

ps -ef | grep nginx
/usr/local/nginx/sbin/nginx  -v  ##查看版本
/usr/local/nginx/sbin/nginx  -V  ##查看版本与编译模块

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第4张图片

1.7 添加nginx配置文件的语法提示

cd /usr/local/nginx/
mkdir ~/.vim
cp -r contrib/vim/* ~/.vim

添加前:

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第5张图片

添加后:

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第6张图片

1.8更改启动方式(两种方式选一种即可 推荐软链接方式)

利用绝对路径的方式启动nginx很不方便,接下来设置更方便的启动方式

1.8.1 软链接

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第7张图片

nginx  -t   # 检查nginx  检测语法 、配置是否正确
nginx -s reload   # 重新加载参数配置
nginx -s stop   # 关闭服务
nginx   # 开启服务

 1.8.2systemd启动方式设置

cp /usr/lib/systemd/system/httpd.service /etc/systemd/system/nginx.service

vim /etc/systemd/system/nginx.service

修改配置文件如下:

[Unit]
Description=The Nginx HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第8张图片

 systemctl start nginx #开启服务
 systemctl reload   nginx# 重新加载参数配置
 systemctl stop   nginx# 关闭服务

systemctl status   nginx# 查看服务状态

二 热部署(不关闭nginx服务 更改版本)

使用nginx1.16.1 替换1.17.1版本

2.1 下载1.16.0版本nginx

2.2 解压

tar zxf nginx-1.16.0.tar.gz

2.3进入1.16.0目录中编译

cd nginx-1.16.0

./configure --prefix=/usr/local/nginx --with-file-aio

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第9张图片

2.4 重新编译make

(不能make install 否则会全部清除全部Nginx配置)

查看重新编译的信息

cd /nginx-16.0/objs   ls 可以看到有一个nginx文件(./nginx -V 查看具体编译信息)

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第10张图片

2.5 将16版本的nginx复制到/usr/local/nginx/sbin/nginx目录中

 cp -f nginx /usr/local/nginx/sbin/nginx

查看原来版本的进程ps -ef | grep nginx

kill -USR2 2109

ps -ef | grep nginx

kill -WINCH 2109

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第11张图片

查看版本号:nginx -V

热部署成功

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第12张图片

三 热部署失败后,版本回退

3.1恢复二进制文件

(1)cd /usr/local/nginx/sbin

cp nginx17 nginx -f

3.2恢复1.17版本进程

 kill -HUP  2109

3.3断开16版本的worker连接

kill -WINCH  (旧版本 进程 id)

3.4查看版本 回退成功

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第13张图片

四 配置文件修改

4.1版本隐藏

在企业中,为了安全性通常要把nginx版本隐藏

cd ~/nginx-1.17.1/

vim src/core/nginx.h

去掉14行  后面的  NGINX_VERSION

本博文为了方便实验,暂不做版本隐藏

4.2用户修改

为了安全性 一般使用nginx用户来控制nginx服务的worker进程

添加用户:useradd -s /sbin/nologin nginx

修改配置文件:vim /usr/local/nginx/conf/nginx.conf

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第14张图片

修改worker的用户及用户组为nginx

worker启动进程数为2

重新加载

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第15张图片

4.3 发布页面修改

nginx默认发布页面

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第16张图片

修改发布页面

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第17张图片

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第18张图片Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第19张图片

Nginx详细讲解(一)----编译安装Nginx 、热部署(平滑升级)、 版本回退_第20张图片

 

你可能感兴趣的:(Linux企业项目,nginx热部署,nginx平滑升级,nginx编译安装,nginx)