nginx的安装
首先在官网上下载nginx安装包,我下载的是最新版本的nginx-1.17.2
然后对安装包进行解压缩
tar zxf nginx-1.17.1.tar.gz
解压之后进入到目录下查看它都有什么配置文件
auto 目录中:cc目录:编译,os目录:判断操作系统类型,lib和type目录:存放库文件,辅助编译
CHANGES 跟以前版本的对比
CHANGES.ru 俄罗斯版本的changes 作者是俄罗斯的
conf 存放配置文件,会copy到编译好的配置文件中
configure 编译完的运行脚本
contrib 提供语法检测的字体
html 默认发布目录,存放默认的正确的和错误的访问页面
LICENSE 版权声明
man 帮助文档
README 手册,指定了官网网址
src 源码目录 里面都是源码的东西
用configure检测系统环境
我们可以查看帮助,找到自己需要的然后复制到./configure后面进行检测
./configure --prefix=/usr/local/nginx --with-file-aio
之后ll查看会生成Makefile
安装gcc
GCC是一个用于linux系统下编程的编译器,gcc在开发工具包(Development Tools)里面,安装系统的时候一定要安装上,因为会经常被用到!否则,再安装会很麻烦!
之后make && make install 进行编译,安装
安装成功后我们对nginx配置文件进行修改
设置配置文件编译颜色
Nginx默认的配置文件是不会对其进行检测的,通俗的说就是配置文件和普通文件没区别,配置文件中的关键字不会变色,如果在配置过程中比如因为符号的问题出现错误但是不会显示为红色,因此需要对配置文件加入自动检测语句的错误,需要做如下操作:
关闭debug日志
为什么要关闭debug日志呢?
(因为会占用存储资源,特别当nginx做反向代理的时候,接收的请求很多,会产生很多日志,不便于查看还消耗存储空间,所以我们在编译之前注释掉)
vim auto/cc/gcc
我们可以比较以一下当注释掉了这一行和没有注释掉这一行nginx的大小
没有注释掉nginx有3.8M:
注释掉之后,nginx只有876k,缩小了很多:
注释掉nginx版本信息
vim src/core/nginx.h
取消里面的一行备注/usr/local/nginx/sbin/nginx -V查看会看到nginx版本,不取消只会看到ngnix,一般要注释掉,以防黑客攻击 NGINX_VERSION
关于nginx一些基本命令(-t,-v,-V..)
/usr/local/nginx/sbin/nginx -t 检测配置文件语法是否正确
/usr/local/nginx/sbin/nginx -v 查看nginx版本
/usr/local/nginx/sbin/nginx -V 查看nginx版本,gcc的版本以及编译内容
/usr/local/nginx/sbin/nginx 开启nginx服务
/usr/local/nginx/sbin/nginx -s stop 关闭nginx服务
/usr/local/nginx/sbin/nginx -s reload 重新加载nginx服务
为了安全性一般使用nginx用户来控制服务的worker进程,并且为了实验效果,可以配置2个worker进程,操作如下:
- 建立nginx用户来控制worker进程
useradd -s /sbin/nologin nginx
id nginx
uid=1000(nginx) gid=1000(nginx) groups=1000(nginx)
- 配置文件中修改worker的进程数和worker的控制用户和用户组并且重启服务。
[root@server1 nginx]# vim conf/nginx.conf
[root@server1 nginx]# ./sbin/nginx -s reload
[root@server1 nginx]# ps -ef | grep nginx
ps ax 查看nginx服务进程
测试本机
可以查看到我用的是nginx服务
在浏览器进行访问,可以访问到nginx欢迎界面
Nginx的升级部署
从官网上下载了nginx-1.16.0的压缩包,并对它进行了解压
(我们假设这个版本为最新版),我们要从1.17这个旧版本更新到1.16这个最新版。
关闭debug日志(具体操作详情请看上面nginx安装)
在编译前首先要删除,清理之前的编译文件
make clean 删除Makefile配置文件
然后配置环境变量(这里输入的和安装时候输入的一样),进行编译(这里不进行make install,因为版本升级不是重装,升级不改变原本的配置)
替换二进制文件
在新版本编译完成后,在其解压目录下的objs目录里面就有了新的nginx二进制系统文件,-f 强行替换原来的二进制系统文件。
Nginx的平滑升级
原理
在修改配置文件中的nginx.conf配置文件之后,重新生成新的worker进程,当然会以新的配置进行处理请求,而且新的请求都会交给新的worker进程,等把以前的请求处理完成之后kill掉旧的worker进程。
参数含义
-HUP 平滑启动,相当于reload
-USR2 平滑升级可执行程序,主要用在版本升级
-WINCH 从容关闭工作进程
-USR1 重新打开日志文件,主要用在日志切割,相当于reopen
步骤
(1)kill -USR2 旧版本master的进程号
会发现多了一组master进程和worker进程。
(2) kill -WINCH 旧版本的master进程号
会发现旧版本的nginx的worker进程号没有了,只留下了master进程号。
查看版本发现升级成功。
升级成功后的版本回退
步骤
-
(1)
kill -HUP 旧版本的master进程号
nginx在不重新加载配置文件恶情况下启动旧版本的worker进程 -
( 2 )
kill -USR2 新版本的master进程号
关闭新版本的master进程下的worker进程,会依次启动旧版本的master进程和新的工作进程,现在两个版本的nginx会同时运行,共同处理请求。 -
(3)
kill -WINCH 新版本的master进程号
关闭新版本的master的工作进程号 -
-
( 4 )
kill -9 新版本的master进程号
-
-
(5)将原来旧版本的已经备份过的二进制文件进行恢复。
-
( 6)查看版本号发现版本回退成功
-