CentOS 7.2 编译安装 Nginx-1.14.2

摘要:Nginx-1.14.2 编译安装,系统版本centos linux release 7.2,Nginx 版本 1.14.2。

安装前言

nginx 编译安装,平时 nginx 只是用或看看文档之类的,并没有系统的学习下,今天想安装一个 nginx 然后再实际动手的系统学习和实践下,因为看始终是不行的,实践才是真理。安装过程中会有一些问题,每次一个报错或者一个依赖都要查询下为什么?一边安装一边查询和翻文档然后弄清楚为什么?不是说随便找一篇文档,然后卡卡的一顿操作有报错,然后把报错卡卡再一顿百度解决,然后这有什么用呢?并没有弄清楚中间的过程和为什么,路漫漫其修远兮,吾将上下而求索!

本次安装用的系统是 centos 7.2,nginx-1.14.2,系统是刚装的系统,所以缺少很多工具和库文件,安装过程中碰到的问题也都会解决,所以如果你们编译安装的时候如果没有碰到的本文章中 wanning 或 error 直接跳过就好。

nginx 各版本下载地址:http://nginx.org/en/download.html


安装步骤

1、安装 gcc-c++ 编译工具

[root@localhost ~]# yum install gcc-c++


2、下载 nginx 源码包 && 解压

[root@localhost ~]# wget http://nginx.org/download/nginx-1.14.2.tar.gz
[root@localhost ~]# tar zxf nginx-1.14.2.tar.gz

下载完成,然后解压源码包。我这里下载的当前官网 1.14.2 稳定版本,大家可以根据实际需求来下载。我们使用 configure 命令编译配置构建。它定义了系统的各个方面,包括允许nginx用于连接处理的方法,最后它创建了一个 Makefile 文件。

nginx 官网有 ./configure 编译时的各项的各项参数如下:http://nginx.org/en/docs/configure.html


3、开始编译

[root@localhost ~]# cd nginx-1.14.2/
[root@localhost nginx-1.14.2]# ./configure --prefix=/usr/local/nginx
.
.
.
./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.

编译失败,有 error 报错,先看看报错:http 重写模块需要 pcre 库,如果要使用 pcre 模块,请使用 --with-pcre=<path> 设置 pcre 库源的路径,如果不想使用此模块,可以使用 --without-http_rewrite_module 禁用此模块。

经过查询和了解,原来 pcre 是让 nginx 支持 rewrite 功能,这个功能还是蛮重要的,像平时网站的的一些什么伪静态、重定向都用的到,为了以后的方便那就加上此模块,接下来下载 pcre 库源。

pcre 下载地址:https://sourceforge.net/projects/pcre/files/pcre/


4、下载 PCRE 库源 && 解压

[root@localhost ~]# wget https://sourceforge.net/projects/pcre/files/pcre/8.42/pcre-8.42.tar.gz
[root@localhost ~]# tar zxf pcre-8.42.tar.gz

我这里下载的 pcre-8.41 最新版的,然后返回到nginx目录,再次进行编译,这次编译使用--with-pcre=<path>指定pcre库源后再次进行编译。


5、配置 pcre 模块后再次编译

[root@localhost ~]# cd nginx-1.14.2
[root@localhost nginx-1.14.2]# ./configure  --prefix=/usr/local/nginx --with-pcre=~/pcre-8.42/
.
.
.

./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.

编译失败,有 error 报错,先看看报错:http 重写模块需要 zlib 库,如果要使用 zlib 模块,请使用 --with-zlib=<path> 设置 zlib 库源的路径,如果不想使用此模块,可以使用 --without-http_gzip_module 禁用此模块。

因为 ngx_http_gzip_module 需要使用此模块,会压缩传输比,可以将传输的数据压缩至一半甚至更多,那我这里也使用此模块,接下来下载 zlib 库源。

下载地址:http://zlib.net/


6、下载 zlib 库源 && 解压

[root@localhost ~]# wget http://zlib.net/zlib-1.2.11.tar.gz
[root@localhost ~]# tar zxf zlib-1.2.11.tar.gz

我这里下载的 zlib-1.2.11 版本,然后返回到 nginx 目录,再次进行编译,这次编译再加上 --with-zlib=<path> 指定 zlib 库源后再次进行编译。


7、配置 zlib 模块后再次编译

[root@localhost nginx-1.14.2]# ./configure --prefix=/usr/local/nginx --with-pcre=~/pcre-8.42/ --with-zlib=~/zlib-1.2.11/
.
.
.
Configuration summary
  + using PCRE library: ~/pcre-8.42/
  + OpenSSL library is not used
  + using zlib library: ~/zlib-1.2.11/

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/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

编译完成,查看编译结果,可以看出,我们使用了 pcre 库,路径是 ~/pcre-8.42/,使用了 zlib 库,路径是 ~/zlib-1.2.11/。没有使用 openssl 库,因为我们暂且用不到 https 协议。因为编译时候我们没有选择路径,所以默认帮我们装在了 /usr/local/nginx 目录下,如果想更换路径编译时加上 --prefix= 自定义路径即可。


8、make && make && install

[root@localhost nginx-1.14.2]# make && make install
.
.
.
make[1]: Leaving directory `/home/download/nginx-1.14.2`

安装成功,安装好的 nginx 目录如下:

[root@localhostnginx-1.14.2]# cd /usr/local/nginx/
[root@localhostnginx]# tree
.
├── conf
│   ├── fastcgi.conf
│   ├── fastcgi.conf.default
│   ├── fastcgi_params
│   ├── fastcgi_params.default
│   ├── koi-utf
│   ├── koi-win
│   ├── mime.types
│   ├── mime.types.default
│   ├── nginx.conf
│   ├── nginx.conf.default
│   ├── scgi_params
│   ├── scgi_params.default
│   ├── uwsgi_params
│   ├── uwsgi_params.default
│   └── win-utf
├── html
│   ├── 50x.html
│   └── index.html
├── logs
└── sbin
    └── nginx

其中 conf 是 nginx 的配置文件,html 是默认站点目录,logs 是默认日志目录,sbin 是 nginx 命令目录,如启动命令 nginx。具体可以到 nginx 官网查看下官方文档。接下来就可以启动 nginx 了,记得打开 80 端口,因为 nginx 默认是 80。


9、打开 80 端口

[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success

--permanent 永久生效,没有此参数重启后失效。


10、启动 nginx

[root@localhost nginx]# /usr/local/nginx/sbin/nginx

浏览器输入你的你的服务器ip或者域名回车,如果没有什么问题那期待许久的页面就出现了。

20190118134000.png

成功访问,一个简单的编译安装到这里基本就结束了。


设置 Nginx 软连接

[root@localhost bin]# ln -s /usr/local/nginx/sbin/nginx /usr/bin/

这样就不用每次都使用 /usr/local/nginx/sbin/nginx 来操作了,直接可以再任意地方 nginx 操作,如果后续需要设置 service 服务启动就设置,不过也不用设置了,因为通过 nginx 这样直接操作也很方便。


编译好的 Nginx 增加模块

[root@localhost ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
configure arguments: --prefix=/usr/local/nginx --with-pcre=./pcre-8.42 --with-zlib=./zlib-1.2.11

nginx 编译安装完成后,随后工作中想增加模块,可以直接获取当时编译 nginx 的命令,然后原命令加上新的模块从新编译一下,直接 make 安装,但是不要 make install 就可以了。


奉上一份淘宝官方的 Tengine 中文文档:

Tengine 中文文档

结束语:感谢您对本网站文章的浏览,欢迎您的分享和转载,但转载请说明文章出处。
Top