configure脚本作为nginx配置的整体入口,在最先开始以此作为起点进行了初步的讲解。这里在我们完成了所有其他依赖脚本的分析之后,我们再对此脚本进行一个详细的分析。
脚本内容如下:
1) 初始化工作
这里,
-
NGX_OBJS
: 在auto/options中被初始化为objs;
-
NGX_AUTO_HEADERS_H
: 在auto/init中被初始化为objs/ngx_auto_headers.h;
-
NGX_AUTOCONF_ERR
: 在auto/init中被初始化为objs/autoconf.err;
-
NGX_CONFIGURE
: 被设置为
#define NGX_CONFIGURE " --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre-8.40 --with-zlib=../zlib-1.2.11"
NGX_DEBUG
: 在auto/options中被初始化为NO
.
2) 获得当前Nginx运行平台
当前平台信息如下:
# uname -s
Linux
# uname -r
4.10.0-35-generic
# uname -m
i686
# NGX_SYSTEM=`uname -s 2>/dev/null`
# NGX_RELEASE=`uname -r 2>/dev/null`
# NGX_MACHINE=`uname -m 2>/dev/null`
# echo " + $NGX_SYSTEM $NGX_RELEASE $NGX_MACHINE"
+ Linux 4.10.0-35-generic i686
# NGX_PLATFORM="$NGX_SYSTEM:$NGX_RELEASE:$NGX_MACHINE"
# echo $NGX_PLATFORM
Linux:4.10.0-35-generic:i686
3) 执行相关配置脚本
4) 处理路径相关
这里我们并未设置NGX_PREFIX
,因此会设置默认值/usr/local/nginx; 然后会想objs/ngx_auto_config.h头文件定义如下宏:
#ifndef NGX_PREFIX
#define NGX_PREFIX "/usr/local/nginx/"
#endif
#ifndef NGX_CONF_PREFIX
#define NGX_CONF_PREFIX "/usr/local/nginx/"
#endif
#ifndef NGX_SBIN_PATH
#define NGX_SBIN_PATH "/usr/local/nginx/nginx"
#endif
#ifndef NGX_CONF_PATH
#define NGX_CONF_PATH "/usr/local/nginx/nginx.conf"
#endif
#ifndef NGX_PID_PATH
#define NGX_PID_PATH "/usr/local/nginx/nginx.pid"
#endif
#ifndef NGX_LOCK_PATH
#define NGX_LOCK_PATH "logs/nginx.lock"
#endif
#ifndef NGX_ERROR_LOG_PATH
#define NGX_ERROR_LOG_PATH "logs/error.log"
#endif
#ifndef NGX_HTTP_LOG_PATH
#define NGX_HTTP_LOG_PATH "logs/access.log"
#endif
#ifndef NGX_HTTP_CLIENT_TEMP_PATH
#define NGX_HTTP_CLIENT_TEMP_PATH "client_body_temp"
#endif
#ifndef NGX_HTTP_PROXY_TEMP_PATH
#define NGX_HTTP_PROXY_TEMP_PATH "proxy_temp"
#endif
#ifndef NGX_HTTP_FASTCGI_TEMP_PATH
#define NGX_HTTP_FASTCGI_TEMP_PATH "fastcgi_temp"
#endif
#ifndef NGX_HTTP_UWSGI_TEMP_PATH
#define NGX_HTTP_UWSGI_TEMP_PATH "uwsgi_temp"
#endif
#ifndef NGX_HTTP_SCGI_TEMP_PATH
#define NGX_HTTP_SCGI_TEMP_PATH "scgi_temp"
#endif
5) 其他
这里NGX_USER
会在auto/unix脚本中设置为nobody; NGX_GROUP
会在auto/unix脚本中设置为nogroup; NGX_BUILD
值为空。