安装 :
tar -zxvf nginx-1.10.2.tar.gz
./configure
make
make install
nginx的./configure脚本做了很多工作,例如环境检测、参数解析、目录生成、Makefile文件的生成等。
一、nginx的configure
1.configure的命令参数
运行./configure –help 可以看到大量的参数显示。
configure的参数分为四大类:1.路径相关2.编译相关3.依赖软件相关4.模块相关
例如:
参数很多,不一一列出,摘取一些常用的贴下来:
–prefix
指定部署根目录,默认是/usr/local/nginx.此设置会更改其他配置目录的相对路径
–sbin-path
可执行文件的路径,默认为/sbin/nginx
–conf-path
配置文件的路径,默认为/conf/nginx.conf
–pid-path
pid文件的存放路径,默认存放在/logs/nginx.pid,是一个存放nginx的master进程ID的纯文本文件,刚安装的时候不会生成,nginx启动的时候会自动生成。
–http-log-path
access日志存放位置,每个http的请求在结束的时候都会访问的日志。
–with-ld-opt
加入第三方链接时需要的参数。编译之后nginx最终的可执行二进制文件是由编译后的目标文件和一些第三方的库链接生成的。如果想要将某个库链接到nginx中,就需要指定–with-ld-opt=目标库名-目标库路径
–with-debug
将nginx需要打印debug调试级别日志的代码编译进nginx,这样才可以通过修改配置文件将调试日志打印出来,便于定位服务问题
2.configure的执行流程
configure是一个shell脚本,参照configure的脚本内容就能看出其作用。
!/bin/sh
Copyright (C) Igor Sysoev
Copyright (C) Nginx, Inc.
LC_ALL=C
export LC_ALL
auto/options脚本处理的是configure命令的参数,定义了后续会使用到的变量
. auto/options
auto/init脚本初始化之后将产生的文本路径。
. auto/init
auto/sources脚本用于分析nginx的源码结构,用于构造后续的makefile文件等。
. auto/sources
编译过程中所有的目标文件由–buildder=DIR参数指定,默认情况下为/objs,用于创建此目录
test -d NGXOBJS||mkdir−p NGX_OBJS
开始准备建立ngx_auto_headers、autoconf.err等必要的编译文件
echo > NGXAUTOHEADERSHecho> NGX_AUTOCONF_ERR
向/nginx/objs/ngx_auto_config.h写入宏
echo “#define NGX_CONFIGURE \” NGXCONFIGURE\""> NGX_AUTO_CONFIG_H
判断DEBUG标志,如果有的话,向/nginx/objs/ngx_auto_config.h写入DEBUG宏
if [ $NGX_DEBUG = YES ]; then
have=NGX_DEBUG . auto/have
fi
检查操作系统的参数是否支持后续编译
if test -z “$NGX_PLATFORM”; then
echo “checking for OS”
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"
NGX_PLATFORM="$NGX_SYSTEM:$NGX_RELEASE:$NGX_MACHINE";
case "$NGX_SYSTEM" in
MINGW32_*)
NGX_PLATFORM=win32
;;
esac
else
echo “building for NGXPLATFORM”NGXSYSTEM= NGX_PLATFORM
fi
检查并设置编译器,如,gcc是否安装,是否支持编译nginx
. auto/cc/conf
对于非windows操作系统的定义了一些必要的头文件,并检查其是否存在。
if [ “$NGX_PLATFORM” != win32 ]; then
. auto/headers
fi
定义一些对于当前操作系统的相关方法并检查当前环境是否支持
. auto/os/conf
定义类unix操作系统中通用的头文件和系统调用等,并检查当前环境是否支持。
if [ “$NGX_PLATFORM” != win32 ]; then
. auto/unix
fi
. auto/threads
最核心的构造运行期间modules的脚本,会生成ngx_modules.c文件,定义了Ngx_modules数组,这个数组用于指明nginx运行期间会有哪些模块参与到nginx的请求处理中。
. auto/modules
conf脚本用于检查nginx在连接器件需要连接的第三方静态库、动态库或是目标文件是否存在。
. auto/lib/conf
处理nginx安装后的路径
case “. NGXPREFI