Nginx安装的两种方法

方法一:通过操作系统的包管理器进行安装。

centos操作系统,自带的包管理器就是yum,配置yum源,通过yum源安装nginx的方法很简单,这就是方法一的优点;方法一的缺点就是,我们安装nginx时,无法定义安装哪些模块。这里我们解释一下模块的概念,nginx的结构是高度的模块话的,不同的模块拥有不同的功能,所以,我们想要在使用nginx的时候可以使用某些特定的功能就必须安装对应的模块。不过,yum安装的nginx,包含了常用的基本模块,不需要我们安装模块。 方法二与方法一的优缺点相对应,方法二的优点就是我们可以自定义模块的安装,需要什么功能就安装什么模块,自由度很高。缺点就是,管理不方便,升级也不方便。

Nginx有两个方向的版本,一个是开源的免费版,一个是商业版。 这两个版本的网站: 开源版:nginx.org 商业版:nginx.com

方法一

配置官方Nginx的yum源 [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1

完成上述配置即可成功安装nginx yum install nginx -y

方法二

下载源码包
#wget http://nginx.org/download/nginx-1.12.2.tar.gz
#tar -xvf nginx-1.12.2.tar.gz
#cd nginx-1.12.2.tar.gz

此处,我们大概描述一下上述文件与目录的作用,与编译其他软件一样,我们需要使用此目录中的configure脚本文件,进行一些编译安装的相关设置,如果你想要看看当前的版本的Nginx都修复了哪些bug、做了哪些变更、新增了哪些功能,则可以查看CHANGES文件,CHANGES.ru文件是CHANGES文件的俄语版,因为nginx是俄国人发明的,所以有一个单独的俄语版,conf目录中的文件是一些nginx配置文件的模板文件,编译安装时,这些文件最终会被拷贝到安装目录中,html目录中的文件是一些静态页面的模板文件,src目录是源代码目录,man目录是帮助文档的目录,contrib目录中的vim目录中的文件可以帮助我们在使用vim编辑nginx配置文件的时候,提供语法高亮功能。

执行下面命令,我们可以看到编译安装nginx时我们可以使用的配置选项。 #./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”选项添加默认未加入的模块,使用“--with-XXX_module”选项排除默认会加入的模块。

能够使用“--with-XXX_module”和“--without-XXX_module”控制的模块都是“可选”模块,也就是说我们可以选择是否安装它们,除了这些“可选模块”,还有一些“标准”模块是默认安装到nginx中的,我们无法选择是否安装这些表准“模块”。

现在开始手动编译安装。
首先确定我们的编译器已经安装。
#yum install gc gcc gcc-c++ -y
我想把nginx安装到/data/nginx下,所以先确认是否有这个目录。
mkdir -p /data/nginx
进入刚才解压源码包的目录中
cd nginx-1.12.2/

编译是为了检查系统环境是否符合编译安装的要求,比如是否有gcc编译工具,是否支持编译参数当中的模块,并根据开启的参数等生成Makefile文件为下一步做准备:
./configure --prefix=/data/nginx
--user=nginx
--group=nginx
--with-http_ssl_module
--with-http_v2_module
--with-http_realip_module
--with-http_stub_status_module
--with-http_gzip_static_module
--with-pcre
--with-stream
--with-stream_ssl_module
--with-stream_realip_module

make #编译步骤,根据Makefile文件生成相应的模块
make install #创建目录,并将生成的模块和文件复制到相应的目录
useradd nginx -s /sbin/nologin -u 2000
chown nginx.nginx -R /apps/nginx/

备注:
nginx完成安装以后,有四个主要的目录:

conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件,其他的.conf 则是用来配置nginx相关的功能的,例如fastcgi功能使用的是fastcgi.conf和fastcgi_params两个文件, 配置文件一般都有个样板配置文件,是文件名.default结尾,使用的使用将其复制为并将default去掉即可。 html目录中保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件,另外还有一个50x的web文件 是默认的错误页面提示页面。 logs:用来保存nginx服务器的访问日志错误日志等日志,logs目录可以放在其他路径,比 如/var/logs/nginx里面。 sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能。
验证版本及编译参数: 2.4.2.3:访问编译安装的nginx web界面: #./configure --prefix=/apps/nginx
--user=nginx
--group=nginx
--with-http_ssl_module
--with-http_v2_module
--with-http_realip_module
--with-http_stub_status_module
--with-http_gzip_static_module
--with-pcre
--with-stream
--with-stream_ssl_module
--with-stream_realip_module

#make #编译步骤,根据Makefile文件生成相应的模块

#make install #创建目录,并将生成的模块和文件复制到相应的目录:

#useradd nginx -s /sbin/nologin -u 2000

#chown nginx.nginx -R /apps/nginx/

conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件,其他的.conf 则是用来配置nginx相关的功能的,例如fastcgi功能使用的是fastcgi.conf和fastcgi_params两个文件, 配置文件一般都有个样板配置文件,是文件名.default结尾,使用的使用将其复制为并将default去掉即可。 html目录中保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件,另外还有一个50x的web文件 是默认的错误页面提示页面。 logs:用来保存nginx服务器的访问日志错误日志等日志,logs目录可以放在其他路径,比 如/var/logs/nginx里面。 sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能。

验证版本及编译参数 /apps/nginx/sbin/nginx -V nginx version: nginx/1.12.2 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/apps/nginx --user=nginx --group=nginx --withhttp_ssl_module --with-http_v2_module --with-http_realip_module --withhttp_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream -- with-stream_ssl_module --with-stream_realip_module

执行下面命令启动nginx
/data/nginx/sbin/nginx
这时候我们就可以访问了