nginx初探(1)--nginx安装过程详解、configure执行过程

本文详细介绍了nginx的configure脚本在安装过程中的作用,包括参数解析、环境检测、目录与Makefile生成等步骤。configure会根据参数调整安装路径、配置文件路径,并创建必要的编译文件,如objs目录下的ngx_modules.c,它定义了nginx运行时的模块数组。此外,configure还会检查编译器、操作系统支持、第三方库等,确保顺利编译和安装。
摘要由CSDN通过智能技术生成

安装 :

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

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||mkdirp 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 NGXPLATFORMNGXSYSTEM= 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值