第七讲:编译出适合自己的Nginx

:安装Nginx有两种方式

(1) :手动编译安装

(2) :使用操作系统的工具比如yumapt-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 //安装gccc++编译器以及内核文件

 

安装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 (首次安装时候可以使用这个命令)

 

posted @ 2020-02-25 14:12  痞子胥  阅读(280)  评论(0)    收藏  举报