源码编译NGINX

Posted axiao-47

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了源码编译NGINX相关的知识,希望对你有一定的参考价值。

 

一、下载nginx
[root@Alen ~]# cd /opt/ && ls
[root@Alen /opt/]# wget http://nginx.org/download/nginx-1.16.1.tar.gz
--2020-02-09 15:13:30--  http://nginx.org/download/nginx-1.16.1.tar.gz
正在解析主机 nginx.org (nginx.org)... 62.210.92.35, 95.211.80.227, 2001:1af8:4060:a004:21::e3
正在连接 nginx.org (nginx.org)|62.210.92.35|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1032630 (1008K) [application/octet-stream]
正在保存至: “nginx-1.16.1.tar.gz”

100%[=============================================================>] 1,032,630   2.78KB/s 用时 9m 23s 

2020-02-09 15:22:54 (1.79 KB/s) - 已保存 “nginx-1.16.1.tar.gz” [1032630/1032630])
[root@Alen opt]# ls
nginx-1.16.1.tar.gz
二、安装依赖包
[root@Alen opt]# yum -y install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel
******

完毕!
三、解压
[root@Alen opt]# tar -xzf nginx-1.16.1.tar.gz 
[root@Alen opt]# ls
nginx-1.16.1  nginx-1.16.1.tar.gz
[root@Alen opt]# cd nginx-1.16.1/
[root@Alen nginx-1.16.1]# ll
总用量 756
drwxr-xr-x. 6 1001 1001   4096 2月   9 15:28 auto    # 提供了4个子目录
-rw-r--r--. 1 1001 1001 296463 8月  13 20:51 CHANGES    # 对nginx版本中有哪些特性和bugfix进行说明
-rw-r--r--. 1 1001 1001 452171 8月  13 20:51 CHANGES.ru    # 俄罗斯语言版本的CHANGES
drwxr-xr-x. 2 1001 1001   4096 2月   9 15:28 conf    # 示例文件,安装好之后会将此目录中的示例文件拷贝到安装目录以方便配置
-rwxr-xr-x. 1 1001 1001   2502 8月  13 20:51 configure    # 用来生成中间文件,执行编译前的一个必备动作
drwxr-xr-x. 4 1001 1001     68 2月   9 15:28 contrib    # 提供了两个pa脚本,和vim的工具
drwxr-xr-x. 2 1001 1001     38 2月   9 15:28 html    # 提供了两个标准的html文件
-rw-r--r--. 1 1001 1001   1397 8月  13 20:51 LICENSE    
drwxr-xr-x. 2 1001 1001     20 2月   9 15:28 man    # Linux对nginx的帮助文件,这里可以看到nginx的基本帮助和配置
-rw-r--r--. 1 1001 1001     49 8月  13 20:51 README
drwxr-xr-x. 9 1001 1001     84 2月   9 15:28 src    # 框架都在此目录的代码中
四、配置,使vim打开nginx配置文件时语法高亮
[root@Alen nginx-1.16.1]# mkdir /root/.vim
[root@Alen nginx-1.16.1]# cp -r contrib/vim/* /root/.vim/
五、查看NGINX的html目录结构
[root@Alen nginx-1.16.1]# tree html/
html/
├── 50x.html    # 发生50X错误时,可以重定向到此文件
└── index.html    # 默认的NGINX欢迎界面

0 directories, 2 files
六、查看configure支持哪些参数,使用more分页查看,空格翻页,q退出
[root@Alen nginx-1.16.1]# ./configure --help | more
七、配置:使用默认参数指定nginx的安装目录,配置成功后,nginx的配置特性以及nginx的执行木等信息都会列在最下方
[root@Alen nginx-1.16.1]# mkdir /opt/nginx
[root@Alen nginx-1.16.1]# ./configure --prefix=/opt/nginx
八、执行完configure命令后nginx-1.16.1目录下会多出以下两个内容
-rw-r--r-- 1 root root   356 2月 9 16:06 Makefile
drwxr-xr-x 3 root root    174 2月 9 16:06 objs    # 生成的中间文件
[root@Alen nginx-1.16.1]# cd objs/
[root@Alen objs]# ll
总用量 80
-rw-r--r--. 1 root root 17628 2月 9 16:07 autoconf.err
-rw-r--r--. 1 root root 39886 2月 9 16:07 Makefile
-rw-r--r--. 1 root root 6791 2月 9 16:07 ngx_auto_config.h
-rw-r--r--. 1 root root 657 2月 9 16:07 ngx_auto_headers.h
-rw-r--r--. 1 root root 5856 2月 9 16:07 ngx_modules.c  # 决定了接下来编译时,有哪些模块会被编译进nginx
drwxr-xr-x. 9 root root 84 2月 9 16:07 src  # C语言编译时生成的中间文件都会放在此目录
九、编译
[root@Alen objs]# cd ..
[root@Alen nginx-1.16.1]# make
# 编译完成后,objs目录下会生成大量中间文件,主要为以下三部分
# 如果需要对nginx进行版本升级,则需要从objs中将nginx执行文件拷贝到nginx的安装目录中
# 如果使用了动态模块,那么动态模块编译会生成so动态文件,届时也会放在objs目录下
-rwxr-xr-x. 1 root root 3825645 2月 9 16:25 nginx
-rw-r--r--. 1 root root 5317 2月 9 16:25 nginx.8
-rw-r--r--. 1 root root 32312 2月 9 16:25 ngx_modules.o
十、make install 安装,只有首次安装时可使用此命令
# 安装完成后,前往prefix指定的目录可以看到以下结构
[root@Alen nginx-1.16.1]# cd ../nginx
[root@Alen nginx]# ll
总用量 4
drwxr-xr-x. 2 root root 4096 2月   9 16:42 conf  # 决定nginx功能的配置文件在conf下
drwxr-xr-x. 2 root root   38 2月   9 16:42 html
drwxr-xr-x. 2 root root    6 2月   9 16:42 logs  # access.log和error.log在logs下
drwxr-xr-x. 2 root root   18 2月   9 16:42 sbin  # 最主要的nginx二进制文件在sbin下

 

以上是关于源码编译NGINX的主要内容,如果未能解决你的问题,请参考以下文章

编译nginx源码包

编译安装——什么是开放源代码编译器与可执行文件——编译安装nginx

Nginx重新编译添加模块

Nginx重新编译添加模块

nginx重新编译添加新模块

Linux源码安装nginx并配置