nginx-1.14.2编译安装

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

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

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

nginx官方文档:http://nginx.org/,nginx下载地址:http://nginx.org/en/download.html

安装编译工具

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

安装之前检测下,如果有就不要安装了。

下载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文件。

./configure编译时的各项参数:http://nginx.org/en/docs/configure.html

开始编译

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

下载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库源后再次进行编译。

 再次编译

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

下载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库源后再次进行编译。

再次编译

[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=自定义路径即可。

安装

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

如果这时候没有报错就是成功了。我们先看看安装后的nginx目录是什么样子的。

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。

打开80端口

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

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

启动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.conf配置文件的正确性

[root@localhost logs]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

其它

[root@localhost logs]# /usr/local/nginx/sbin/nginx -v #查看nginx版本
nginx version: nginx/1.14.2
[root@localhost logs]# /usr/local/nginx/sbin/nginx -s reload #重新载入nginx配置
[root@localhost logs]# /usr/local/nginx/sbin/nginx -s stop   #停止nginx
[root@localhost logs]# /usr/local/nginx/sbin/nginx -s reopen #重启nginx

强制关闭nginx

[root@localhost nginx]# ps -ef | grep nginx #查看nginx进程
[root@localhost nginx]# kill -s QUIT 9236 #强制杀死进程
结束语:感谢您对本网站文章的浏览,欢迎您的分享和转载,但转载请说明文章出处。
Top