8 编译出适合自己的nginx

1.编译nginx由两种方法:

1、直接编译nginx

2、使用操作系统上自带的一些工具(比如说yum、apt get)直接去安装nginx的binary(二进制)文件

(1)直接安装nginx的二进制文件有个问题,nginx的二进制文件是把模块都编译进来的的文件,但是nginx的官方模块并不是每一个都会被编译进来。

(2)采用直接编译nginx的方式可以把需要的第三方模块编辑进nginx

2、编译nginx

 编译nginx主要分为以下六个部分:

1、下载Nginx;

2、介绍个目录;

3、Configure;

4、中间文件介绍;

5、编译;

6、安装;

1、下载Nginx

(1)再nginx的官网(nginx.org)选择稳定版的nginx,复制nginx的下载链接;

(2)linux系统中下载nginx(当前目录为/home/geek)。命令:wget 复制的下载地址;

出现上图说明已下载完成;

(3)下载完nginx的压缩包以后,解压压缩包;

2、介绍各个目录

解压完下载的nginx的压缩包后,进入nginx的源码目录中;

(1)auto目录:进入auto目录,查看auto目录的结构:

auto目录中有四个子目录:cc用于编译的;lib库;对所有的操作系统的判断都在os目录;其他目录我呢见按都是为了复制configure脚本文件执行的时候,nginx支持哪些模块,当前那的操作系统有什么样的特性可以提供给nginx使用;

(2)CHANGES文件就是每一个版本中提供了哪些特性和bugfix(可以浏览查看);

(3)CHANGES.ru:俄罗斯版本语言的CHANGES文件(因为作者是俄罗斯人);

(4)conf文件是一个示例文件,就是当我们把nginx安装好以后,方便运维去配置,就会把conf中的示例文件拷贝到安装目录;

(5)configure脚本:用来生成中间文件,执行编译前的的一个必备动作;

(6)contrib目录:提供两个脚本和vim的工具(比如我们在没有使用vim的工具时,用vim打开配置文件,就会发现它的色彩没有什么变化);

(7)html目录中,提供了两个标准的html目录(一个是发现500错误的时候可以重定向的文件50x.html,另外是一个默认的nginx的欢迎界面index.html);

(8)man文件:linux对nginx的帮助文件;

(9)src目录:nginx的源代码目录;

也就是说nginx的框架都在这些源代码中;

3、Configure

当前目录为/home/geek/nginx的源代码目录;

编译可以看一下有哪些参数:./configure --help | more

这里主要分为几个大块:

第一个大块就是nginx在执行中会去找哪些目录下的的文件作为它辅组的一些文件:

如果这些目录都没有变东的话,就只需要指定--prefix这个参数就可以了,所有的其他的这些文件就会在prefix目录下面建相应的文件夹。

第二类参数主要是确定使用哪些模块和不使用哪些模块(前缀通常是--with和--without):

通常需要住到加--with模块的时候,以为和这个模块默认是不会被编译进nginx的。

而模块中显示--without表示模块是默认编译进nginx中,如果加了这个参数就是把它移除默认的nginx中。

第三类参数:指定了nginx编译中需要的一些特殊的参数。

(1)编译nginx(当前目录为/home/geek/nginx的源代码目录),使用它的默认参数;

这里指定了nginx的安装目录是在/home/geek/nginx目录下

如果该命令执行过程中么有任何报错,那么nginx就已经编译成功过了,这个时候所有nginx的配置的特性以及nginx运行时的目录都会列到最下方:

(2)在configure执行完后,它会生成一些中间文件,中间文件会放在objs文件夹下,查看nginx的源码目录:

查看objs目录下的文件:

这里最重要的是生成一个的ngx-modules.c,它决定了接下我们执行编译的时候有哪些模块会被编译进nginx,这里可以浏览一下所有的nginx module,所有 的被编译进nginx的module都会被列在这这里;

5、编译

当前目录为/home/geek/nginx的源代码目录。

(1)执行make编译:

编译完成后如果没有任何错误,这个时候就会看到就生产了大量中间文件以及最终的nginx运行的二进制文件(可以在objs目录中看到);

(2)查看nginx的objs目录(nginx的目标文件nginx文件是放在这里的)

如果要做nginx的版本升级,这个给时候不能执行make install,而是需要从这里把目标文件nginx拷贝到安装目录中。c语言编译时生成的所有的中间文件都会放在objs的src目录。如果使用的动态模块,动态模块编译时生产的so文件也同意会放在objs的src目录下。

6、安装

(1)最后在/home/geek/nginx的源代码目录进行make install,首次安装时可以使用这个命令。

(2)安装完成以后,到安装时--prefix指定的nginx的安装目录/home/geek/nginx中,可以看到以下目录,这里最主要的nginx的二进制文件就在sbin目录下,决定nginx的功能配置文件在conf目录下,access.log和error.log在logs目录下。

(3)可以看到在在conf目录下所有的文件正是在源代码中conf目录中copy了一份过来,其中内容也是完全下相同的

以上就是在编译nginx过程中所有的步骤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值