nginx初探(1)--nginx安装过程详解、configure执行过程
来源:互联网 发布:微信朋友圈封面知乎 编辑:程序博客网 时间:2024/06/14 21:48
安装 :
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
开始准备建立ngx_auto_headers、autoconf.err等必要的编译文件
echo >
向/nginx/objs/ngx_auto_config.h写入宏
echo “#define NGX_CONFIGURE \”
判断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
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 “.
have=NGX_PREFIX value=”\”$NGX_PREFIX/\”” . auto/define
;;
.!) NGX_PREFIX=;;*) have=NGX_PREFIX value="\"$NGX_PREFIX/\"" . auto/define;;
esac
处理nginx安装后conf文件的路径
if [ “.
fi
处理nginx安装后,二进制文件、pid、lock等其他文件的路径可参见configure参数中路径类选项的说明。
have=NGX_SBIN_PATH value=”\”
have=NGX_PID_PATH value=”\”
have=NGX_ERROR_LOG_PATH value=”\”$NGX_ERROR_LOG_PATH\”” . auto/define
have=NGX_HTTP_LOG_PATH value=”\”
. auto/define
have=NGX_HTTP_PROXY_TEMP_PATH value=”\”
. auto/define
have=NGX_HTTP_UWSGI_TEMP_PATH value=”\”
. auto/define
创建编译时使用的objs、Makefile文件
. auto/make
为objs、Makefile加入需要连接的静态库和第三方库等
. auto/lib/make
为objs/Makefile加入install功能,用于执行make install时将编译生成的必要文件复制到安装路径。
. auto/install
在ngx_auto_config.h文件中加入NGX_SUPPRESS_WARN宏、NGX_SMP宏
STUB
. auto/stubs
在ngx_auto_config.h文件中加入NGX_USER、NGX_GROUP宏
have=NGX_USER value=”\”
if [ “.
fi
显示configure执行结果,若失败给出原因。
. auto/summary
./auto目录安放的都是nginx在安装时所需要的检测脚本
2.configure生成的文件
configure执行成功之后会生成一个objs目录,在该目录下会生成如下文件:
* src目录存放编译时产生的目标文件
* ngx_modules.c是一个很重要的文件,是用来定义ngx_modules数组的。这个数组用于指明每个模块在nginx中的优先级,越靠前优先级越高,当一个请求同时符合多个模块的处理规则的时候,就按照ngx_modules数组的顺序来选择最靠前的一个。所以说,ngx_modules数组的先后顺序很重要,不正确的顺序会导致nginx错误。
* autoconf.err保存的是configure的执行结果。
* Makefile文件用于编译nginx工程以及在加入install参数后安装nginx
总结起来就是说nginx在安装的时候做了许多幕后工作,包括检测操作系统环境,优化操作系统环境以及安装各种依赖文件等,所以说nginx的高效性在这里也得到了体现。
- nginx初探(1)--nginx安装过程详解、configure执行过程
- MongoDB+Nginx+Nginx-Gridfs的安装配置过程详解
- nginx的安装过程
- 安装nginx的过程
- nginx事件模块执行过程
- nginx中configure详解
- 整理Centos6.5安装nginx的过程(笔记1)
- 安装Nginx过程全解析
- 安装Nginx过程全解析
- nginx编译安装过程优化
- nginx 编译安装过程优化
- linux安装nginx个过程
- Centos 安装 Nginx 详细过程
- Nginx使用configure安装
- Nginx安装 ./configure: error
- nginx 获取配置的宏执行过程1
- Nginx初探之安装
- Nginx初探之安装
- easy传递对象
- oracle数据备份及恢复
- Android使用libjpeg实现图片压缩
- 只要是点击editText以外部分就让软键盘收起来
- Android中的消息机制
- nginx初探(1)--nginx安装过程详解、configure执行过程
- 强制不换行
- Win10下VS2013配置OpenCV2.4.10
- 搭建jenkins环境流程及所需工具
- SQL——DataReader
- Spinner 设置默认值
- Android封装Toast工具类
- get请求 与post请求的区别
- 如何显示调用堆栈