Nginx学习笔记之编译出适合自己的Nginx

编译出适合自己的Nginx

编译Nginx(环境 CentOS8)

  • 下载Nginx

  • 选择版本,右键复制链接地址

  • 在Linux中wget上一步复制的链接地址:
wget http://nginx.org/download/nginx-1.18.0.tar.gz

  • 解压安装包,然后进入解压后的源码版本:
tar -xzf nginx-1.18.0.tar.gz

  • 介绍各目录

  • anto目录(有4个子目录)
    • CC:用于编译
    • lib
    • OS:对所有操作系统的判断
    • types
    • 其他所有的文件是为了辅助configure脚本执行的时候去判定我们的Nginx支持哪些模块,当前的操作系统有什么样的特性可以供给nginx使用

  • CHANGES文件:
    • Nginx每一个版本中提供了哪些特性和bugfix
    • CHANGES.ru:俄罗斯语言版本的CHANGES文件

  • conf目录:
    • 是一个示例文件,我们把nginx安装好以后,为了方便运维去配置,会把configure里面的示例文件拷贝到安装目录

  • configure脚本:
    • 是一个用来生成中间文件,执行编译前的一个必备动作
  • contrib目录:
    • 提供了两个脚本和vim的工具,比如我们在没有使用vim打开Nginx配置文件,会发现它的色彩没什么变化

  • 需要将contrib目录中的vim文件拷贝到我们自己的vim文件中(没有.vim就自己mkdir .vim)
cp -r contrib/vim/* ~/.vim/
  • 再次查看nginx.conf文件,颜色发现改变

  • html目录:
    • 这里面提供了两个标准的html文件
      • 50x.html:发现500错误的时候,可以重定向到这个文件
      • index.html:默认的nginx欢迎界面

  • man目录:
    • linux对nginx的帮助文件
    • 例如
man ./nginx.8

  • src目录:
    • nginx源代码

  • Configure

    • 编译前查看configure支持哪些参数
./configure --help | more

  • 这里主要分为几个大类:
    • 第一类就是我们确定Nginx在执行中,它会去找哪些目录下的文件作为它的辅助的一些文件。
      • 比如我们用动态模块,modules-path就会产生作用,还有lock-path来确定我们nginx.log文件放在哪里。
      • 如果没有变动的话,我们只需要指定prefix就可以了,所有其他的文件绘制prefix目录下建相应的文件夹
    • 第二类参数主要是确定使用哪些模块,不使用哪些模块,它的前缀通常是with或者without。
      • 通常需要我们主动加with模块的时候,这个模块通常是不会编译进nginx的
      • 前面加without的模块默认会编译进nginx中。换句话说,在编译时不加这个参数,是编译进nginx的,加了这个参数是移除默认的nginx模块中。
    • 第三类参数nginx编译中需要的特殊的参数
      • 比如说用gcc编译的时候,要加一些什么样的优化参数
      • 或者说打印debug级别的日志
      • 以及需要加一些第三方的模块。

  • 用默认参数进行编译
./configure --prefix=/home/nginx/nginx  
  • 指定nginx安装目录(此处若缺少PCRE库,参考文章:CentOS8安装库文件)
    • 所有nginx配置的特性以及nginx运行时的目录都列在下方

  • configure完成以后生成一些中间文件 ,中间文件会放在objs文件中

  • 中间文件介绍

  • 最重要的是生成了ngx_modues.c
    • 它决定了接下来我们编译时有哪些模块会被编译进nginx。

  • 所有被编译进nginx的模块都会被列举在这里,最后形成一个nginx_module_t类型的数组

  • 编译

    • 在主目录下执行编译
make
  • 编译时没出现错误,发现生成大量中间文件以及最终运行的nginx二进制文件(在objs目录下)。
  • 如果我们做nginx版本升级,这时我们不能执行make install ,从objs目录下把nginx二进制文件拷贝到 安装目录中
  • c语言编译时生成的所有的中间文件都会放在src目录
  • 如果我们使用了动态模块,会生成.so动态文件,也会放在objs目录下

  • 安装

    • 首次安装时可以使用make install
make install

  • 安装完后,去prefix指定安装的目录

  • 最主要的nginx二进制文件在sbin目录下
  • 决定nginx功能的配置文件在conf目录下
  • access.log error.log 在logs目录下
  • conf目录下所有的文件正是源代码中conf拷贝了一份过来,其中的内容也是完全相同的

猜你喜欢

转载自blog.csdn.net/baidu_41388533/article/details/106816226