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;
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过程中所有的步骤。