欢迎您, 来到 宁时修博客.^_^

Nginx系列---3、Nginx编译安装

2019/07/23 言则行 Nginx 492
Nginx系列

Nginx下载地址:http://nginx.org/en/download.html

编译过程: 这只是简单的示例

[root@lynn ~]# cd /usr/local/src/
[root@lynn src]# wget http://nginx.org/download/nginx-1.16.0.tar.gz
[root@lynn src]# tar xf nginx-1.16.0.tar.gz 
[root@lynn src]# cd nginx-1.16.0/
[root@lynn nginx-1.16.0]# ll
total 780
drwxr-xr-x 6 1001 1001   4096 Jul 23 14:36 auto
-rw-r--r-- 1 1001 1001 296223 Apr 23 21:13 CHANGES
-rw-r--r-- 1 1001 1001 451813 Apr 23 21:13 CHANGES.ru
drwxr-xr-x 2 1001 1001   4096 Jul 23 14:36 conf
-rwxr-xr-x 1 1001 1001   2502 Apr 23 21:12 configure
drwxr-xr-x 4 1001 1001   4096 Jul 23 14:36 contrib
drwxr-xr-x 2 1001 1001   4096 Jul 23 14:36 html
-rw-r--r-- 1 1001 1001   1397 Apr 23 21:12 LICENSE
drwxr-xr-x 2 1001 1001   4096 Jul 23 14:36 man
-rw-r--r-- 1 1001 1001     49 Apr 23 21:12 README
drwxr-xr-x 9 1001 1001   4096 Jul 23 14:36 src
[root@lynn nginx-1.16.0]# ./configure --prefix=/usr/local/nginx-1.16.0
checking for OS
 + Linux 3.10.0-514.21.1.el7.x86_64 x86_64
checking for C compiler ... not found

./configure: error: C compiler cc is not found
# 缺少C编译器 CC
[root@lynn nginx-1.16.0]# yum install gcc gcc-c++ -y
[root@lynn nginx-1.16.0]# ./configure --prefix=/usr/local/nginx-1.16.0
.....................
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
# HTTP rewrite模块需要PCRE库
[root@lynn nginx-1.16.0]# ls auto/lib/pcre/
conf           make           makefile.bcc   makefile.msvc  makefile.owc   
[root@lynn nginx-1.16.0]# ./configure --prefix=/usr/local/nginx-1.16.0 --with-pcre=./auto/lib/pcre
..................
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.
# HTTP gzip模块需要zlib库
[root@lynn nginx-1.16.0]# ls auto/lib/zlib/
conf  make  makefile.bcc  makefile.msvc  makefile.owc
[root@lynn nginx-1.16.0]# ./configure --prefix=/usr/local/nginx-1.16.0 --with-pcre=./auto/lib/pcre --with-zlib=./auto/lib/zlib
........................出现以下代表 configure成功
Configuration summary
  + using PCRE library: ./auto/lib/pcre
  + OpenSSL library is not used
  + using zlib library: ./auto/lib/zlib

  nginx path prefix: "/usr/local/nginx-1.16.0"
  nginx binary file: "/usr/local/nginx-1.16.0/sbin/nginx"
  nginx modules path: "/usr/local/nginx-1.16.0/modules"
  nginx configuration prefix: "/usr/local/nginx-1.16.0/conf"
  nginx configuration file: "/usr/local/nginx-1.16.0/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx-1.16.0/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx-1.16.0/logs/error.log"
  nginx http access log file: "/usr/local/nginx-1.16.0/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

# Nginx configure成功后会生成一些中间文件,在objs目录下
[root@lynn nginx-1.16.0]# ll
total 788
drwxr-xr-x 6 1001 1001   4096 Jul 23 14:36 auto
-rw-r--r-- 1 1001 1001 296223 Apr 23 21:13 CHANGES
-rw-r--r-- 1 1001 1001 451813 Apr 23 21:13 CHANGES.ru
drwxr-xr-x 2 1001 1001   4096 Jul 23 15:13 conf
-rwxr-xr-x 1 1001 1001   2502 Apr 23 21:12 configure
drwxr-xr-x 4 1001 1001   4096 Jul 23 14:36 contrib
drwxr-xr-x 2 1001 1001   4096 Jul 23 14:36 html
-rw-r--r-- 1 1001 1001   1397 Apr 23 21:12 LICENSE
-rw-r--r-- 1 root root    404 Jul 23 15:58 Makefile
drwxr-xr-x 2 1001 1001   4096 Jul 23 14:36 man
drwxr-xr-x 3 root root   4096 Jul 23 15:58 objs
-rw-r--r-- 1 1001 1001     49 Apr 23 21:12 README
drwxr-xr-x 9 1001 1001   4096 Jul 23 14:36 src


# objs目录下的ngx_modules.c文件决定了接下来编译Nginx会有哪些模块编译进Nginx。

[root@lynn nginx-1.16.0]# make
make -f objs/Makefile
make[1]: Entering directory `/usr/local/src/nginx-1.16.0'
cd ./auto/lib/pcre \
&& if [ -f Makefile ]; then make distclean; fi \
&& CC="cc" CFLAGS="-O2 -fomit-frame-pointer -pipe " \
./configure --disable-shared 
/bin/sh: line 2: ./configure: No such file or directory
make[1]: *** [auto/lib/pcre/Makefile] Error 127
make[1]: Leaving directory `/usr/local/src/nginx-1.16.0'
make: *** [build] Error 2

# --with-pcre=DIR是设置pcre的源码目录,而不是pcre的安装目录
# 需要重新修改Nginx编译参数
# 安装pcre和zlib库到系统中,或者下载pcre和zlib库的源码包,然后使用--with-pcre=DIR --with-zlib=DIR 指定源码路径。
[root@lynn nginx-1.16.0]# yum install pcre-devel zlib-devel -y
[root@lynn nginx-1.16.0]# ./configure --prefix=/usr/local/nginx-1.16.0 --with-pcre
.................出现如下表示make成功
objs/ngx_modules.o \
-ldl -lpthread -lcrypt -lpcre -lz \
-Wl,-E
sed -e "s|%%PREFIX%%|/usr/local/nginx-1.16.0|" \
  -e "s|%%PID_PATH%%|/usr/local/nginx-1.16.0/logs/nginx.pid|" \
  -e "s|%%CONF_PATH%%|/usr/local/nginx-1.16.0/conf/nginx.conf|" \
  -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx-1.16.0/logs/error.log|" \
  < man/nginx.8 > objs/nginx.8
make[1]: Leaving directory `/usr/local/src/nginx-1.16.0'

# 看到生成大量的中间文件和nginx最终运行的nginx二进制文件,这些文件可以在objs目录下看到。

[root@lynn nginx-1.16.0]# cd objs/
[root@lynn objs]# ll
total 3864
-rw-r--r-- 1 root root   17763 Jul 23 16:10 autoconf.err
-rw-r--r-- 1 root root   40445 Jul 23 16:10 Makefile
-rwxr-xr-x 1 root root 3825504 Jul 23 16:11 nginx
-rw-r--r-- 1 root root    5369 Jul 23 16:11 nginx.8
-rw-r--r-- 1 root root    6830 Jul 23 16:10 ngx_auto_config.h
-rw-r--r-- 1 root root     657 Jul 23 16:10 ngx_auto_headers.h
-rw-r--r-- 1 root root    5856 Jul 23 16:10 ngx_modules.c
-rw-r--r-- 1 root root   32320 Jul 23 16:11 ngx_modules.o
drwxr-xr-x 9 root root    4096 Jul 23 15:58 src

# src目录下是C语言编译生成的所有中间文件

[root@lynn objs]# cd src/
[root@lynn src]# ll
total 28
drwxr-xr-x 2 root root 4096 Jul 23 16:11 core
drwxr-xr-x 3 root root 4096 Jul 23 16:11 event
drwxr-xr-x 4 root root 4096 Jul 23 16:11 http
drwxr-xr-x 2 root root 4096 Jul 23 15:58 mail
drwxr-xr-x 2 root root 4096 Jul 23 15:58 misc
drwxr-xr-x 4 root root 4096 Jul 23 15:58 os
drwxr-xr-x 2 root root 4096 Jul 23 15:58 stream


[root@lynn nginx-1.16.0]# make install
[root@lynn nginx-1.16.0]# ll /usr/local/nginx-1.16.0/
total 16
drwxr-xr-x 2 root root 4096 Jul 23 16:16 conf
drwxr-xr-x 2 root root 4096 Jul 23 16:16 html
drwxr-xr-x 2 root root 4096 Jul 23 16:16 logs
drwxr-xr-x 2 root root 4096 Jul 23 16:16 sbin


点赞
说说你的看法

所有评论: (0)

# 加入组织

1、用手机QQ扫左侧二维码

2、搜Q群:1058582137

3、点击 宁时修博客交流群