nginx 学习笔记(一)nginx 编译安装
2017-06-12 21:26
633 查看
准备工作
操作系统我这里使用的CentOS release 6.5
Linux version 2.6.32
(1) GCC编译器
由于接下来要使用源码安装nginx,所以GCC编译器是必备的
可以通过
gcc -v
查看是否安装了gcc,如果没有安装,可以使用
yum install gcc
来安装
(2)PCRE库
如果在nginx.conf里使用了正则表达式,那么编译Nginx的时候就需要把PCRE库一起编译进Nginx,如果不需要的话可以不用安装
yum install pcre pcre-devel
(3)zlib库
zlib库用于Nginx将HTTP包的内容进行gzip格式压缩使用,如果在nginx.conf里配置了
gzip on
那么就必须安装zlib库
(4)OpenSSL开发库
如果需要支持SSL协议或者需要使用MD5、SHA1等散列函数,就需要安装OpenSSL库
yum install openssl openssl-devel
获取源代码
可以到 http://nginx.org/en/download.html 下载最新版或稳定版的Nginx目前我这里稳定版是nginx-1.12.0,下载下来然后解压并进入到目录中
wget http://nginx.org/download/nginx-1.12.0.tar.gz && tar -zxvf nginx-1.12.0.tar.gz && cd nginx-1.12.0
编译安装
此时最简单安装方法是./configure make make install
默认安装目录是/usr/local/nginx/,执行/usr/local/nginx/sbin/nginx即可启动Nginx,然后访问主机即可看到Nginx的欢迎界面
configure做了什么
可以看到可以执行configure来检测环境、生成Makefile等文件,进而使我们可以编译安装Nginx,configure支持的参数可以使用./configure --help
查看,官方也提供了更具体的文档http://nginx.org/en/docs/configure.html
那么configure脚本具体做了些什么,可以通过打开configure文件来查看,我对configure脚本简单的分析注释了一下
#!/bin/sh # Copyright (C) Igor Sysoev # Copyright (C) Nginx, Inc. # 设置语言 LC_ALL=C export LC_ALL # 解析./configure时的参数命令并且设置一些变量 . auto/options # 生成Makefile、ngx_modules.c等文件 . auto/init # 分析src/中的源文件 . auto/sources # 创建objs目录, ngx_modules.c等文件都在这里 test -d $NGX_OBJS || mkdir -p $NGX_OBJS # 准备建立ngx_auto_headers.h和autoconf.err等文件 echo > $NGX_AUTO_HEADERS_H echo > $NGX_AUTOCONF_ERR # 写入命令行参数 echo "#define NGX_CONFIGURE \"$NGX_CONFIGURE\"" > $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 $NGX_PLATFORM" NGX_SYSTEM=$NGX_PLATFORM fi # 检查编译器相关 . auto/cc/conf # 对非windows系统定义相关头文件 if [ "$NGX_PLATFORM" != win32 ]; then . auto/headers fi # 检查操作系统和机器类型并定义一些特定方法 . auto/os/conf # 对于非windows类unix系统,定义一些特定系统调用 if [ "$NGX_PLATFORM" != win32 ]; then . auto/unix fi # 检查是否开启了--with-thread参数,并定义相关变量,windows不支持--with=thread . auto/threads # 生成ngx_modules.c文件 . auto/modules # 检查第三方库,比如OpenSSL、zlib等 . auto/lib/conf # 处理一些路径相关的变量 case ".$NGX_PREFIX" in .) NGX_PREFIX=${NGX_PREFIX:-/usr/local/nginx} have=NGX_PREFIX value="\"$NGX_PREFIX/\"" . auto/define ;; .!) NGX_PREFIX= ;; *) have=NGX_PREFIX value="\"$NGX_PREFIX/\"" . auto/define ;; esac if [ ".$NGX_CONF_PREFIX" != "." ]; then have=NGX_CONF_PREFIX value="\"$NGX_CONF_PREFIX/\"" . auto/define fi have=NGX_SBIN_PATH value="\"$NGX_SBIN_PATH\"" . auto/define have=NGX_CONF_PATH value="\"$NGX_CONF_PATH\"" . auto/define have=NGX_PID_PATH value="\"$NGX_PID_PATH\"" . auto/define have=NGX_LOCK_PATH value="\"$NGX_LOCK_PATH\"" . auto/define have=NGX_ERROR_LOG_PATH value="\"$NGX_ERROR_LOG_PATH\"" . auto/define have=NGX_HTTP_LOG_PATH value="\"$NGX_HTTP_LOG_PATH\"" . auto/define have=NGX_HTTP_CLIENT_TEMP_PATH value="\"$NGX_HTTP_CLIENT_TEMP_PATH\"" . auto/define have=NGX_HTTP_PROXY_TEMP_PATH value="\"$NGX_HTTP_PROXY_TEMP_PATH\"" . auto/define have=NGX_HTTP_FASTCGI_TEMP_PATH value="\"$NGX_HTTP_FASTCGI_TEMP_PATH\"" . auto/define have=NGX_HTTP_UWSGI_TEMP_PATH value="\"$NGX_HTTP_UWSGI_TEMP_PATH\"" . auto/define have=NGX_HTTP_SCGI_TEMP_PATH value="\"$NGX_HTTP_SCGI_TEMP_PATH\"" . auto/define # 生成Makefile文件 . auto/make # 加入第三方库 . auto/lib/make # 加入make install . auto/install # STUB,增加两个宏,NGX_SUPERESS_WARN和NGX_SMP . auto/stubs # 设置nginx运行时的用户和用户组 have=NGX_USER value="\"$NGX_USER\"" . auto/define have=NGX_GROUP value="\"$NGX_GROUP\"" . auto/define # NGX_BUILD在auto/options中由--build参数设置,但具体没有被使用,应该是 a802 预留的内容吧 if [ ".$NGX_BUILD" != "." ]; then have=NGX_BUILD value="\"$NGX_BUILD\"" . auto/define fi # 打印结果 . auto/summary
可以看到,configure在幕后做了很多事情才生成了objs这个目录,所以我们只要进入objs目录make及make install即可方便的安装Nginx
objs/
├── autoconf.err
├── Makefile
├── ngx_auto_config.h
├── ngx_auto_headers.h
├── ngx_modules.c
└── src
├── core
├── event
│ └── modules
├── http
│ ├── modules
│ │ └── perl
│ └── v2
├── misc
├── os
│ ├── unix
│ └── win32
└── stream
nginx控制
nginx支持许多命令行控制,默认情况下我们可以使用/usr/local/nginx/sbin/nginx -h
来查看,并且在官方文档中也会有更详细的介绍
http://nginx.org/en/docs/control.html
http://nginx.org/en/docs/events.html
参考文献
《深入理解Nginx:模块开发与架构解析》 陶辉 著http://nginx.org/en/docs/configure.html
http://nginx.org/en/docs/control.html
http://nginx.org/en/docs/events.html
相关文章推荐
- nginx 学习笔记(一)nginx 编译安装
- nginx 学习笔记(一)nginx 编译安装
- nginx 学习笔记(一)nginx 编译安装
- nginx 学习笔记(一)nginx 编译安装
- nginx 学习笔记(一)nginx 编译安装
- nginx 学习笔记(一)nginx 编译安装
- nginx 学习笔记(一)nginx 编译安装
- nginx 学习笔记(一)nginx 编译安装
- nginx 学习笔记(一)nginx 编译安装
- nginx 学习笔记(一)nginx 编译安装
- nginx 学习笔记(一)nginx 编译安装
- nginx 学习笔记(一)nginx 编译安装
- nginx 学习笔记(一)nginx 编译安装
- nginx 学习笔记(一)nginx 编译安装
- nginx 学习笔记(一)nginx 编译安装
- nginx学习笔记之一:nginx介绍及其编译安装
- nginx 学习笔记(一)nginx 编译安装
- 树莓派学习笔记——交叉编译练习之SQLite3安装
- 【Cmake学习笔记】编译安装
- Nginx源码学习之编译、构建与安装(cygwin环境)