auto/install脚本主要处理在编译完成之后,进行安装的相关事宜。
1. auto/install脚本
脚本内容如下:
下面简要分析一下脚本:
1) 检测是否安装perl modules
这里我们当前环境USE_PERL
为NO
,因此里面脚本并不执行。
2) 处理相关路径
在configure脚本执行时我们通过:
--sbin-path=/usr/local/nginx/nginx
指定了NGX_SBIN_PATH
,匹配./*
。
对于NGX_MODULES_PATH
,在auto/options脚本中默认值为空,同时在该脚本中检测到为空时会被设置为modules
; NGX_PREFIX
在auto/options中被设置为空,因此在configure脚本中会设置成默认值:/usr/local/nginx
;此处NGX_MODULES_PATH
值为:
NGX_MODULES_PATH=/usr/local/nginx/modules
NGX_CONF_PATH
在configure脚本执行时我们通过:
--conf-path=/usr/local/nginx/nginx.conf
进行了设置。
NGX_PID_PATH
在configure脚本执行时我们通过:
--pid-path=/usr/local/nginx/nginx.pid
进行了设置。
NGX_ERROR_LOG_PATH
在auto/options脚本中默认值为空,同时在该脚本中检测到为空时会被设置为logs/error.log
;然后通过如下脚本:
会被设置为/usr/local/nginx/logs/error.log
。
NGX_HTTP_LOG_PATH
在auto/options脚本中默认值为空,同时在该脚本中检测到为空时会被设置为logs/access.log
;然后通过如下脚本:
会被设置为/usr/local/nginx/logs/access.log
。
3) 帮助文档相关路径
由于在nginx-1.10.3主目录下存在man/nginx.8
文件,因此这里会将NGX_MAN
设置为:
NGX_MAN=man/nginx.8
同时在nginx-1.10.3主目录下也存在html
目录,因此这里会将NGX_HTML
设置为:
NGX_HTML=html
4) 生成安装脚本
这里:
将$NGX_MAN
文件中的%%PREFIX
等替换为$NGX_PREFIX
,然后将替换后的结果写入到$NGX_OBJS/nginx.8
文件中。
NGX_MAKEFILE
为objs/Makefile。
其他相对容易理解,这里给出生成的对应Makefile脚本作为参考:
5) 生成Error Log相关Makefile脚本
执行结果如下:
test -d '$(DESTDIR)/usr/local/nginx/logs' \
|| mkdir -p '$(DESTDIR)/usr/local/nginx/logs'
6) 生成Dynamic modules相关Makefile脚本
这里我们并未添加任何DYNAMIC_MODULES
,因此脚本并不会得到执行。
7) 生成主控Makefile文件
在nginx-1.10.3主目录下生成Makefile文件,在该Makefile文件中执行$NGX_MAKEFILE
文件(即objs/Makefile)。
NOTE
:
默认情况下,nginx会被安装在/usr/local/nginx目录下,并且在该目录下会创建conf,sbin,logs,modules等文件夹。
conf文件夹下存放配置文件;sbin文件夹下存放nginx可执行文件;logs文件夹下存放日志文件、pid文件、lock文件;
modules文件夹下存放dynamic modules的动态链接库文件。