Nginx介绍及安装
一、Nginx作用及发展史
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
二、Nginx版本及安装方式
在安装nginx之前,我们最好再来了解一下nginx都有哪些版本及安装方式。
首先,在官方的版本中,有两个大方向,一个是开源免费版的nginx,另一个是商业版的nginx plus,这两个版本分别有不同的官方网站,如下:
开源版官网:nginx.org
商业版官网:nginx.com
开源版在细分之下,还有三个小类:“主线版本”、“稳定版本”、“历史版本”。
那么这三类版本有什么不同呢?通常来说,三类版本的含义如下:
主线版本:“Mainline version”,也有人称之为主干版或者开发版,主线版本通常是最新的版本,主线版通常会加入一些最新的功能,这些功能可能没有经过太多的测试,所以相对可能不太稳定,在真正的生产环境中,通常不会使用主线版本。
稳定版本:“Stable version”,稳定版通常是由主线版发展而来的,稳定版通常是经过官方测试的,是官方认为相对稳定的版本,生产环境中通常会使用稳定版。
历史版本:“Legacy version”,当新的稳定版出现,那么原先的稳定版就会被归类到"历史版本"中去。
我们可以打开如下官网连接,查看上述各个版本的信息。
http://nginx.org/en/download.html
打开上述连接以后,可以看到如下信息,从下图可以看出,在当前时间下,nginx的最新版的版本号为1.19.4,这个版本就是当前时间段下的"主线版本",当前的"稳定版本"的版本号为1.18.0,下面还显示了之前的一些历史版本及版本号。
Nginx介绍及安装(一)
安装nginx通常会使用如下两种方法:
1、通过操作系统的包管理器进行安装。
2、通过官方网站下载源代码,编译安装。
通过上述了解了Nginx的安装方式及版本,接下来对两种安装方法进行介绍。
三、安装Nginx
1、通过操作系统的包管理器进行安装
通过官方yum源的配置过程,首先登陆http://nginx.org/en/linux_packages.html,打开后就可看到官方为各个系统准备的yum源,如下图:
Nginx介绍及安装(一)
我们选择RHEL/CentOS,打开后如下:

RHEL/CentOS
Install the prerequisites:

sudo yum install yum-utils
To set up the yum repository, create the file named /etc/yum.repos.d/nginx.repo with the following contents:
稳定版本:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/ r e l e a s e v e r / releasever/ releasever/basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
主线版本:
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/ r e l e a s e v e r / releasever/ releasever/basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

By default, the repository for stable nginx packages is used. If you would like to use mainline nginx packages, run the following command:

sudo yum-config-manager --enable nginx-mainline
To install nginx, run the following command:

sudo yum install nginx
When prompted to accept the GPG key, verify that the fingerprint matches 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62, and if so, accept it.
添加nginx官方yum源文件,此处创建的源文件为/etc/yum.repos.d/nginx.repo,文件内容如下
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/ r e l e a s e v e r / releasever/ releasever/basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
yum源配置完毕后,使用如下命令安装:
yum install -y nginx

2、通过官方网站下载源代码,编译安装
首先,从官网下载对应的源码包,访问官网的下载页面,连接如下:
http://nginx.org/en/download.html
Nginx介绍及安装(一)
从上述链接中找到要下载的nginx版本,此处下载历史版nginx-nginx-1.16.1,并将下载后的包解压
#tar -xf nginx-1.16.1.tar.gz
解压文件后,查看其内部的文件结构,如下
#cd nginx-1.16.1
#ll
total 748
drwxr-xr-x 6 1001 dba 326 Nov 24 15:05 auto
-rw-r–r-- 1 1001 dba 296463 Aug 13 2019 CHANGES
-rw-r–r-- 1 1001 dba 452171 Aug 13 2019 CHANGES.ru
drwxr-xr-x 2 1001 dba 168 Nov 24 15:05 conf
-rwxr-xr-x 1 1001 dba 2502 Aug 13 2019 configure
drwxr-xr-x 4 1001 dba 72 Nov 24 15:05 contrib
drwxr-xr-x 2 1001 dba 40 Nov 24 15:05 html
-rw-r–r-- 1 1001 dba 1397 Aug 13 2019 LICENSE
drwxr-xr-x 2 1001 dba 21 Nov 24 15:05 man
-rw-r–r-- 1 1001 dba 49 Aug 13 2019 README
drwxr-xr-x 9 1001 dba 91 Nov 24 15:05 src
与编译其他软件一样,此目录中的configure脚本文件,进行一些编译安装的相关设置,如果想要看看当前版本的nginx都修复了哪些bug、做了哪些变更、新增了哪些功能,则可以查看CHANGES文件,CHANGES.ru文件是CHANGES文件的俄文版,conf目录中的文件是一些nginx配置文件的模板文件,编译安装时这些文件最终会被拷贝到安装目录中,html目录中的文件是一些静态页面的模板文件,src目录是源代码目录,man目录是帮助文档的目录,contrib目录中的vim目录中的文件可以帮助我们在使用vim编辑nginx配置文件时提供语法高亮功能。
接下来看看configure脚本中都支持哪些参数,执行如下命令:
#./configure --help
执行"./configure --help"命令后,可以看到很多选项信息,最常用的莫过于–prefix选项了,使用–prefix选项可以指定nginx编译安装的目录,除了一些常见的目录设置选项,你应该还会看到好多类似"–with-XXX_module “或” --without-XXX_module"的选项,这些选项是什么意思呢?说到这些选项,又要提到我们刚才介绍的概念了,那就是"模块"的概念,我们已经知道,nginx是高度模块化的,每个模块就代表一个功能,而且刚才也提到过,只有编译安装的方式才能指定安装哪些模块,不安装哪些模块,其实,你可以这样理解,"–with-XXX_module “选项表示指明安装对应的模块,” --without-XXX_module"选项表示指明不安装对应的模块。
换句话说就是:
如果你没有明确使用"–with-AXX_module “选项,那么默认情况下是不会安装"AXX模块"的。
如果你没有明确使用” --without-BXX_module"选项,那么默认情况下是会安装"BXX模块"的。
使用"–with-XXX_module “选项添加默认未加入的模块,使用” --without-XXX_module"选项排除默认会加入的模块。
能够使用"–with-XXX_module"和" --without-XXX_module"控制的模块都是"可选模块",也就是说我们可以选择是否安装它们,除了这些"可选模块",还有一些"标准模块"是默认安装到nginx中的,我们无法选择是否安装这些"标准模块"。
概念介绍完了,下面我们开始编译安装。
首先安装依赖包:
#yum install -y gc gcc gcc-c++
#yum install -y pcre-devel zlib-devel openssl-devel libxslt-devel GeoIP-devel perl-ExtUtils-Embed
确定Nginx安装目录,这里我们安装在/usr/local/nginx目录下,首先创建目录。
#mkdir -p /usr/local/nginx
进入到刚才解压的目录中
#nginx-1.16.1
执行configure 脚本,并且启用一些可能会用到的常用模块,操作如下:
#./configure
–prefix=/usr/local/nginx
–conf-path=/usr/local/nginx/conf/nginx.conf
–sbin-path=/usr/local/nginx/sbin/nginx
–error-log-path=/usr/local/nginx/logs/error.log
–http-log-path=/usr/local/nginx/logs/access.log
–pid-path=/usr/local/nginx/run/nginx.pid
–lock-path=/usr/local/nginx/run/nginx.lock
–with-http_ssl_module
–with-http_flv_module
–with-http_stub_status_module
–with-http_gzip_static_module
–http-client-body-temp-path=/usr/local/nginx/client/
–http-proxy-temp-path=/usr/local/nginx/proxy/
–http-fastcgi-temp-path=/usr/local/nginx/fcgi/
–http-uwsgi-temp-path=/usr/local/nginx/uwsgi
–http-scgi-temp-path=/usr/local/nginx/scgi
–with-pcre
上述命令执行完成后,没有错误即可进行编译,执行make命令
#make
完成上述步骤后你可能会发现,解压目录中多了一个objs目录,这个目录是编译安装nginx时产生的中间文件,第一次安装时不用太在意它,如果你以后想要升级老版本的nginx,则会使用到这个目录,此处不用在意,执行如下安装命令
#make install
完成上述步骤即可成功编译安装nginx。

相关文章: