【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx

版本发布情况

在Nginx开源版官网点击右侧download可以看到各个版本的Nginx,其中Mainline是抢先的主干版本(版本号是奇数),Stable是稳定版(版本号是偶数)。

点击某个版本左侧的CHANGES可以查看CHANGES文件,其中Feature标注了新增的功能,Bugfix标注了修复的bug,Change标注了做了重构的部分。

选择哪种Nginx

没有特殊需求一般就用开源版Nginx,如果要开发API服务器或者Web防火墙可以考虑用OpenResty。商业版一般比开源版多的是技术支持。

开源版Nginx & 商业版Nginx Plus

网上既有开源的免费版的Nginx,也有非开源的商业版的Nginx Plus。

Tengine

另外阿里也推出了基于Nginx主干版本开发的Tengine,它在阿里的生态下经历了严苛的考验,它的很多特性领先于Nginx的官方版本。虽然也能用Nginx的一些第三方模块,但是没有办法跟着Nginx的官方版本同步升级,所以不推荐使用。

开源版OpenResty & 商业版OpenResty

因为Nginx的第三方模块开发难度比较大,OpenResty将Nginx的框架用Lua语言同步开发实现了,所以OpenResty兼具了高性能和高的开发效率。

开源版:http://openresty.org
商业版:https://openresty.com.cn

安装符合自己需求的Nginx

虽然可以用OS上自带的yum、apt-get等工具安装,但直接安装Nginx二进制文件会把模块编译进来,Nginx的官方模块并不是每一个都会默认开启的,如果想添加第三方的Nginx模块必须通过编译的方式来安装,这样才能把第三方的这样的强大生态圈的内容添加到Nginx中。

(1)下载Nginx源码安装包

到开源Nginx官网选择要下载的版本,复制其链接地址,用wget命令下载压缩包:

wget http://nginx.org/download/nginx-1.14.2.tar.gz

这里下载到/home/software/目录下。

将其解压并进入解压后的目录:

tar -xzf nginx-1.14.2.tar.gz
cd nginx-1.14.2

(2)源码目录结构解读

ll命令查看下Nginx的源码目录结构,可以看到:
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第1张图片

[1]auto目录

如下可见,auto/目录中有四个子目录,auto/cc/是用于编译的,auto/lib/是库目录,auto/os/是用于判断操作系统的,其它所有文件都是为了辅助config脚本执行时去判定Nginx支持哪些模块,当前的操作系统有什么样的特性可以供给Nginx使用。
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第2张图片

[2]CHANGES文件

这个文件在官网上也可以直接看到,就是看Nginx每个版本的FeatureBugfixChange

[3]CHANGES.ru文件

因为作者是俄罗斯人,所以会有个俄语版本的CHANGES文件。

[4]conf目录

这里存放的是一些示例文件,安装好Nginx后为了方便运维配置,会把conf/中的示例文件拷贝到安装目录。
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第3张图片

[5]configure脚本

这是用来生成中间文件的脚本,执行编译前的必备动作。

[6]contrib目录

这个目录中提供了pl脚本和vim配置。

如果直接使用vim打开Nginx配置文件:

vim conf/nginx.conf

会发现没有专门针对它的配色:
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第4张图片
而将contrib/vim/目录中的所有内容拷贝到自己用户的vim配置目录中去:

cp -r contrib/vim/* ~/.vim/

再打开刚刚的配置文件:

vim conf/nginx.conf

配色就有了:
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第5张图片

[7]html目录

这个目录中提供了50x.htmlindex.html两个标准的html文件,第一个是出现500(或者501,502,…)错误时重定向到该文件,第二个是默认的Nginx欢迎页面。

[8]man目录

这之中是用于Linux的man命令的帮助文件,例如man ./man/nginx.8就可以查看此文件中描述的帮助内容。

[9]src目录

这是Nginx的源码目录。

(3)configure脚本的参数解读

在编译前,可以看下configure脚本支持哪些参数:

./configure --help | more

这里主要看几类重要的参数。

[1]*-path系列

Nginx执行中会去找哪些目录下的文件作为辅助的文件,例如--modules-path指定动态模块位置,又如--lock-path指定nginx.lock放在哪里。

如果这些都没有特殊的需要的话,只需要指定--prefix安装目录就可以了,其它的文件位置会在其下建立相应的目录。
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第6张图片

[2]with-*_module和without-*_module系列

这些参数主要是为了确定使用哪些模块和不使用哪些模块,这里面有with-*的表示这个模块默认是不会被编译进Nginx中的,如果要就用它指定。

同理,这里面有without-*的表示这个模块默认会被编译进Nginx中,如果不要就用它指定。
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第7张图片

[3]特殊用途的参数

例如,指定编译时编译器的参数:
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第8张图片
打印debug日志:
在这里插入图片描述

(4)开始编译和安装

[1]configure过程

指定安装目录,生成用于编译的中间文件:

./configure --prefix=/home/software/nginx

*如果报错./configure: error: C compiler cc is not found.那么要先安装GCC等:

yum -y install gcc gcc-g++ autoconf automake make

*如果报错./configure: error: the HTTP rewrite module requires the PCRE library.那么要先安装PCRE:

yum -y install pcre-devel

*如果报错./configure: error: the HTTP gzip module requires the zlib library.那么要先安装zlib:

yum install -y zlib-devel

这一步运行成功后,Nginx特性和配置的各类目录都会显示在最后:
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第9张图片
这时,在解压后的Nginx目录下多出了一个objs/目录,这就是保存生成的中间文件的目录,该目录下的内容:
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第10张图片
这里有个ngx_modules.c,这个文件决定了接下来编译过程中,有哪些模块会被编译进Nginx。

[2]make过程

在解压后的目录下执行make命令即可开始编译,最终编译完成的样子:
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第11张图片
编译完成后,可以在objs/目录中看到生成了Nginx二进制文件:
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第12张图片

如果要做Nginx版本升级,不能直接make install,而要把这里编译出的二进制文件拷贝到Nginx安装目录中。

而在objs/src目录是刚刚编译生成的中间文件(C语言编译生成的中间文件都会放在src目录下):
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第13张图片
如果使用了动态模块,会生成so动态文件,也是放在objs/目录下。

[3]make install过程

首次安装时可以使用make install命令安装,安装完成的样子:
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第14张图片
在指定的安装目录中可以看到:
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第15张图片
Nginx的二进制文件在sbin/目录下,配置文件在conf/目录下,access.log(访问日志)和error.log(错误日志)在logs/目录下。

查看一下conf/目录:
【Nginx学习笔记】2:Nginx的版本发布情况,选择哪种Nginx,安装符合自己需求的Nginx_第16张图片
可以看到就是把编译前源文件目录中的conf/目录拷贝了过来。

你可能感兴趣的:(Nginx)