Nginx安装部署和常用基本命令介绍。介绍平滑重启、平滑升级等操作。

前言

本文主要记录nginx的学习笔记,方便自己和他人使用时查阅~

Nginx安装部署

下载Nginx源代码

根据系统类型从官网下载对应版本的Nginx点我下载。Window版本的Nginx服务器在效率上比Linux差一些,并且通常Nginx在实际生产环境中都是基于Linux/Unix系统,所以本文使用Linux系统,Nginx版本为1.10.1。下载Nginx后解压,主要的目录描述如下:

  • conf 目录中存放的nginx的配置文件,主要的nginx.cnf文件就在此目录
  • man 目录存放的nginx服务器的文档资料,包含nginx服务器的LICENSE、OpenSSL的LICENSE等,以及Nginx等帮助文档和readme。
  • logs 目录存放的nginx服务器的运行日志文件。
  • html 目录存放两个.html后缀结尾的默认文件。
  • sbin 目录存放nginx的运行程序
  • src 目录存放Nginx所有的源代码
  • auto 目录中存放大量的自动脚本
  • configure 文件是Nginx软件的自动脚本程序

Linux下编译和安装Nginx

一般Nginx有两种安装方式,yum安装和源码包安装
这里先说明下 yum源码包 安装的 区别:

  1. yum 安装是在线安装,好处是:安装方式简单,不易出错;直接使用命令 yum -y install nginx 安装即可
  2. 源码包 安装是先将 nginx 的源码下载下来,自己编译生成可执行文件,然后执行,好处是:因为是在自己的系统上编译的,更符合自己系统的性能,也就是说在自己的系统上执行 nginx 服务性能效率更好。

所以下文主要介绍用源码包安装方式Nginx,源代码的编译需要使用configure自动脚本生产Makefile文件。在生成makefile文件之前,需要先了解configure脚本支持的几个常用选项。(图片来源:Nginx高性能web服务器详解)

图片来源“Nginx高性能web服务器详解”
图片来源“Nginx高性能web服务器详解”
图片来源“Nginx高性能web服务器详解”
图片来源“Nginx高性能web服务器详解”
图片来源“Nginx高性能web服务器详解”

了解了configure的常用选项后,就可以按照你的具体需求生成Makefile文件了。一般使用最多的就是--prefix啦,用于指定Nginx的安装目录,默认为/usr/local/nginx,其他参数一般都默认。
这里将使用以下命令将Nginx编译在/data/nginx目录。

1
./configure --prefix=/data/nginx

这时会输出一堆日志,基本上没报错就ok,这里会根据您系统的性能编译nginx,生成Makefile文件。
使用make && make install 编译安装Nginx。

1
make && make install

输入/data/nginx/sbin/nginx -v 查看nginx版本号即安装成功。

Nginx服务的启动和停止

安装完Nginx后,下面接着就可以启动了,启动的方式有很多。如果你使用yum安装的话,会安装成server,使用service nginx start即可启动。本文介绍使用源码方式安装,启动方式为:/data/nginx/sbin nginx启动没报错就ok了。这里需要注意的是,如果你是非root用户启动,可能会出现这个问题:

1521557771276
nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
这是因为非root用户无权限监听80端口。解决办法有两种:

  1. 通过sudo启动sudo /data/nginx/sbin nginx
  2. 修改nginx.conf配置文件中监听的端口为1024以上。

通过/data/nginx/sbin nginx -h可以查看到nginx的相关用法;
1521557524987

关于nginx的停止,我觉得有必要强调一下。
停止Nginx的方法有两种:一种是快速停止,一种是平缓停止。快速停止是指立即停止当前所有网络请求(包含正在处理中的)。平缓停止允许Nginx将处理完当前所有请求,但是不再接受新请求,之后再关闭连接。
/data/nginx/sbin nginx -g TERM | INT | QUIT
TERMINT是快速停止,QUIT是用于平缓停止

Nginx nginx.conf配置文件详解

nginx.conf文件的结构

  • 全局块
    顾名思义全局块是在全局范围生效的,通常包含的配置有nginx访问用户,pid存放目录,日志存放目录,允许生成的work process数量等。
  • events块
    events块通常配置nginx服务器的用户、生成的worker process数量、日志及PID存放的目录等等。
  • http块
    http块主要配置文件引入、MIME-Type定义,日志格式定义、超时设置、最大请求数等等。
  • server块
    定义localhost结构为:localhost [ = | ~ | ~ | ^~ ] uri ( … )
    uri为待匹配的字符串,可以包含有正则表达式的字符串,成为正则uri,不包含正则表达式的uri为标准uri。
    方括号里面为可选项,用来确定uri的匹配方式。主要含义是:
    =:用于标准uri,表示对uri进行严格匹配,如果匹配成功,就停止继续向下搜索。
    ~:用于正则uri,表示uri中包含正则表达式,并且区分大小写 ~*:用于正则uri,表示uri中包含正则表达式,并且区分大小写
    *^~:用于标准uri前,表示Nginx服务器找到标识uri和请求字符串匹配度最高的localhost后,立即使用此localhost处理请求,不在继续向下搜索

    注意,如果uri中有正则表达式,必须使用~或~*标识

下图nginx.conf文件示例:

1522420074494

参考文档:Nginx高性能web服务器详解