
Nginx学习笔记之编译出适合自己的Nginx
发布日期:2021-05-07 15:11:59
浏览次数:27
分类:精选文章
本文共 1892 字,大约阅读时间需要 6 分钟。
编译出适合自己的Nginx
编译Nginx(环境 CentOS8)
下载Nginx
- 进入官网:
- 点击download
- 选择版本,右键复制链接地址
- 在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库,参考文章:)
- 所有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拷贝了一份过来,其中的内容也是完全相同的
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月23日 19时17分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SNMP介绍及使用,超有用,建议收藏!
2021-05-09
SDUT2161:Simple Game(NIM博弈+巴什博弈)
2021-05-09
51nod 1596 搬货物(二进制处理)
2021-05-09
来自星星的祝福(容斥+排列组合)
2021-05-09
Hmz 的女装(递推)
2021-05-09
HDU5589:Tree(莫队+01字典树)
2021-05-09
不停机替换线上代码? 你没听错,Arthas它能做到
2021-05-09
sharding-jdbc 分库分表的 4种分片策略,还蛮简单的
2021-05-09
分库分表的 9种分布式主键ID 生成方案,挺全乎的
2021-05-09
MySQL不会丢失数据的秘密,就藏在它的 7种日志里
2021-05-09
Python开发之序列化与反序列化:pickle、json模块使用详解
2021-05-09
回顾-生成 vs 判别模型-和图
2021-05-09
采坑 - 字符串的 "" 与 pd.isnull()
2021-05-09
无序列表 - 链表
2021-05-09
SQL 查询强化 - 数据准备
2021-05-09
SQL 强化练习 (四)
2021-05-09
SQL 强化练习 (八)
2021-05-09
Excel 拼接为 SQL 并打包 exe
2021-05-09
Pandas数据分析从放弃到入门
2021-05-09