第七讲:编译出适合自己的Nginx
一:安装Nginx有两种方式
(1) :手动编译安装
(2) :使用操作系统的工具比如yum和apt-get
但是第二种方式存在一些问题,Nginx的二进制文件会把模块直接编译进来的,Nginx的官方模块并不是每个都会开启的,如果想要添加第三方的Nginx模块,必须通过编译Nginx才能把Nginx强大的生态圈的功能添加到我们的Nginx中;
编译Nginx主要分为以下6个部分
a:下载Nginx
b:介绍各目录
c:执行Configure
d:中间文件介绍
e:编译(编译的时候也会出现中间文件)
f:安装
复制Nginx官方链接地址http://nginx.org/


(1) yum -y install wget
(2) wget http://nginx.org/download/nginx-1.14.2.tar.gz
(3) tar -xzf nginx-1.14.2.tar.gz
一:Nginx目录结构如下

(1):auto目录:自动检测系统环境以及编译相关的脚本 auto目录下面有四个子目录

cc:关于编译器相关的编译选项的检测脚本
lib:nginx编译所需要的一些库的检测脚本
os:与平台相关的一些系统参数与系统调用相关的检测
types:与数据类型相关的一些辅助脚本
其他的所有文件都是辅助Configure脚本执行的时候,去判定我们的Nginx执行的时候支持哪些模块,当前的操作系统可以提供什么特性供给Nginx使用,
(2):CHANGES文件:Nginx每一个版本中,提供了那哪些特性和Bugfix
(3) :CHANGES.ru:Nginx作者是俄罗斯人,所以有个俄罗斯版本的CHANGES文件
(4) :conf:存放默认配置文件,是一个示例文件,把Nginx安装好以后,为了方便运维去配置,会把conf示例文件拷贝到安装目录中去
(5) :configure:是一个用来生成中间文件,执行编译前的一个必备动作,
(6) :contrib 存放一些实用工具,如geo配置生成工具(geo2nginx.pl),vim等;
比如我们在没有使用vim工具打开Nginx的配置文件,会发现它的色彩没有什么变化,Nginx的语法没有在Vim中;

我们把contrib中的所有vim文件拷贝到我们自己的目录中,


我们可以看到所有Nginx配置文件的语法带颜色了

(7) :html:这里面提供了两个标准的html文件
yum -y install tree 安装tree插件

(8) :man文件是Linux对Nginx的帮助文件

包含最基本的Nginxd的帮助和配置

(9) :Nginx的源代码在src目录
Nginx的框架都在以下目录的源代码中

接下来我们进行编译,编译前,我们可以先看看configure都支持那些参数

主要分为几个大块
第一个大块就是Nginx执行中它会去找哪些目录下的文件作为它的辅助文件
第二个模块带--with的
第三个模块带--without的
第四个模块带--with--Nginx编译中需要的特定参数和模块


源码安装准备工作:
安装gcc
命令:yum -y install gcc gcc-c++ kernel-devel //安装gcc、c++编译器以及内核文件
安装libxml2-devel
命令:yum install libxml2-devel
yum install openssl openssl-devel
下面我们来编译Nginx 首先用它的默认参数
./configure --prefix=/home/geek/nginx
如果没有报错则 说明Nginx已经编译成功了


这里最重要的是会生成一个ngx_modules.c文件,它决定了接下来我们执行编译的时候会有哪些模块会被编译进Nginx

打开这个文件查看

接下来我们执行make编译

会生成中间文件也在objs文件目录中

为什么我们要知道Nginx的目标文件要放到这里的尼?
因为如果要做Nginx版本的升级,这个时候我们不能直接 make install,还需要从这里把目标文件nginx拷贝到安装目录中,
C语言编译时候生成的所有中间文件,都会放在src目录中.
如果我们使用了动态模块.动态模块编译会生成so动态文件,也会放到objs文件下
接下来我们使用make install (首次安装时候可以使用这个命令)


浙公网安备 33010602011771号