写点什么

Centos7 编译安装 Nginx

用户头像
Kevin Liao
关注
发布于: 2020 年 05 月 05 日

本文介绍是用二进制包的方式编译安装Nginx

内容版权声明:本文内容来自作者拜读 陶辉老师 著 《深入理解Nginx》模块开发与架构解析 一书中,如有侵犯权益请联系本人。



准备篇-使用Nginx的必备软件

GCC编译器

GCC(GNU Compiler Collection)可用来编译C语言程序。

yum install -y gcc
yum install -y gcc-c++

PCRE库

PCRE(Perl Compatible Regular Expressions,Prel兼容正则表达式)是由Philip Hazel开发的函数库,目前为很多软件所使用,该库支持正则表达式。它由RegEx演化而来,实际上,Perl正则表达式也是源自于Henry Spencer写的RegEx.



yum install -y pcre pcre-devel

zlib库

zlib库用于对HTTP包的内容做gzip压缩,在nginx.conf配置文件中看到gzip on,并指定对某些类型(content-type)的HTTP响应使用gzip压缩以减少网络传输量,那么在编译就必须要把zlib编译进Nginx。



yum install -y zlib zlib-devel

OpenSSL开发库

假设我们的服务器不只是要支持HTTP,还需要只要更安全的SSL协议上传输HTTP,那么就需要拥有OpenSSL。另外,如果想使用MD5、SHA1等散列函数,也是需要同理的相应进行安装。



yum install -y openssl openssl-devel



以上的4个库仅是完成Web服务器最基本功能。

安装篇-Nginx获取&安装

获取Nginx

http://nginx.org

解压

tar -zxvf nginx-1.0.14.tar.gz

编译安装

安装Nginx最简单的方式是,进入nginx-1.0.14目录后执行一下3行命令



./configure
make
make install

1.configure命令做了大量“幕后”工作,包括检测操作系统内核和已经安装软件,参数的解析,中间目录的生成以及根据各种参数生成一些C源码文件、Makefile文件等。

2.make命令根据configure命令生成的Makefile文件编译Nginx工程,并且目标文件、最终的二进制文件。

3.make install命令根据configure执行时的参数将部署到指定的安装目录,包括相关目录的建立和二进制文件、配置文件的复制。

使用篇-常用命令

(1)默认方式启动

直接执行Nginx二进制程序

/usr/local/nginx/sbin/nginx



这时是读取默认路径下的配置文件:/usr/local/nginx/conf/nginx.conf

(2)另行指定配置文件方式启动

使用-c参数指定配置文件

/usr/local/nginx/sbin/nginx -c /tmp/nginx.conf

(3)另行指定安装目录启动方式

使用-p参数指定Nginx的安装目录

/usr/local/nginx/sbin/nginx -p /usr/local/nginx/

(4)另行指定全局配置项启动方式

使用-g参数临时指定一些全局配置项,以使新的配置项生效

/usr/local/nginx/sbin/nginx -g "pid/var/nginx/test.pid;"

(5)测试配置信息是否有错误

在不启动Nginx的情况下,使用-t参数仅测试配置文件是否有错误

/usr/local/nginx/sbin/nginx -t

(6)在测试配置节点不输出信息

测试配置选项时,使用-q参数可以不把error级别以下的信息输出到屏幕

/usr/local/nginx/sbin/nginx -t -q

(7)显示版本信息

使用-v参数显示Nginx版本信息

/usr/local/nginx/sbin/nginx -v

(8)显示编译阶段参数(维护nginx服务器非常实用的命令

使用-V参数除了可以显示Nginx版本信息外,还可以显示配置编译阶段的信息,如GCC编译器的版本、操作系统的版本、执行configure时的参数等等

/usr/local/nginx/sbin/nginx -V

(9)快速停止服务

使用-s stop可以强制停止Nginx服务。-s参数其实是告诉Nginx程序向正在运行的Nginx服务发送信号量,Nginx程序通过nginx.pid文件得到master进程的进程Id,再向运行中的master进程发送TERM信号来快速地关闭Nginx服务。

/usr/local/nginx/sbin/nginx -s -stop

如果读者对Linux有基本使用基础,那么我如下地操作你肯定能看懂,实际做了什么:

[root@iZwz99qi8t0tvdcmsgzll4Z ~]# ps -ef|grep nginx
root 884 1 0 Jan30 ? 00:00:00 nginx: master process /usr/sbin/nginx
nginx 17275 884 0 Feb20 ? 00:00:01 nginx: worker process




kill -s SIGTERM 884
或者
kill -s SIGINT 884

以上两个命令的效果于执行/usr/local/nginx/sbin/nginx -s stop效果完全一致。



(10)“优雅”地停止服务

如果你希望Nginx服务可以正常地处理完当前所有请求再停止服务,可以使用-s quit参数来停止服务

/usr/local/nginx/sbin/nginx -s quit

1.该命令与快速停止Nginx服务器是有区别的。当快速停止服务时,worker进程与master进程再收到信号后会立刻跳出循环,退出进程。而“优雅”地停止服务时,首先会关闭监听端口,停止接收新的连接,然后把当前正在处理地连接全部处理完,最后再退出进程。

2.与快速停止服务相似,可以直接发送QUIT信号给master进程来停止服务,其效果与执行-s quit命令是一样。如下命令:



1.停止master主进程

kill -s SIGQUIT <nginx master pid>

2.停止worker工作线程

kill -s SIGWINCH <nginx worker pid>

(11)使运行中的Nginx重读配置项并生效

使用-s reload参数可以使云中的Nginx服务重新加载nginx.conf文件

/usr/local/nginx/sbin/nginx -s reload



实际上,Nginx会先检查新的配置项是否有误,如果全部正确就以“优雅”的方式关闭,再重新启动Nginx来实现这个目的



(12)日志文件回滚

使用-s reopen参数可以重新打开日志文件,这样可以先把当前日志文件改名或转移到其他目录中进行备份,再重新打开就会生成新的日志文件。

/usr/local/nginx/sbin/nginx -s reopen



(13)平滑升级Nginx(待编写)

。。。。。



configure编译配置篇(待编写)

。。。。。。

nginx.conf配置篇(待编写)

。。。。。。



发布于: 2020 年 05 月 05 日阅读数: 139
用户头像

Kevin Liao

关注

大家好,我是Kevin 2019.02.15 加入

Java程序员,分别服务行业:电信、跨境电商、政企.... 爱好:看书、撸代码、打个篮球、旅个游。 技术特长:Java后端、Spring全家桶、微服务、网络、服务器 等等啥之类。

评论

发布
暂无评论
Centos7 编译安装Nginx