Linux 入门必备|不可错过的 Nginx 安装部署教程(建议收藏)
Nginx的安装版本分为Mainline version(主要开发版本,其实就是还处于开发版)、Stable version(当前最新稳定版)和Legacy versions(旧的稳定版)。
Nginx安装可以使?yum或源码安装,但是推荐使?源码,?是yum的版本?较旧,?是编译安装可以更?便?定义相关路径,三是使?源码编译可以?定义相关功能,更?便业务的上的使?。
源码安装需要提前准备标准的编译器,GCC的全称是(GNU Compiler collection),其由GNU开发,并以GPL即LGPL许可,是?由的类UNIX即苹果电脑Mac OS X操作系统的标准编译器,因为GCC原本只能处理C语?,所以原名为GNU C语?编译器,后来得到快速发展,可以处理C++,Fortran,pascal,objective-C,java以及Ada等其他语?。
此外还需要Automake?具,以完成?动创建Makefifile的?作,Nginx的?些模块需要依赖第三?库,?如pcre(?持rewrite),zlib(?持gzip模块)和openssl(?持ssl模块)等。
在 Unix/Linux 环境下,如果使用源码安装软件的话,一般会经过三个步骤:
configure 的作用:
这一步一般是用来生成文件,为下面的做准备。一般情况下,后面会带一些参数,对编译和安装进行控制。比如说,一般会有一个参数,用于控制程序的安装路径;
make 的作用:这一步就是对程序中的源文件进行编译,生成可执行文件。这个命令其实就是执行第一步生成的文件,按照文件的规则自动的编译源文件;
make install 的作用:
这个命令是执行文件中的标签内容。用来安装上一步生成的可执行文件。
文件包含了很多规则,作为开发,我们应该对这些内容进行简单的了解,至少应该能够知道这些东西是干什么的。
在安装之前,我们要进行一些准备工作,包括操作系统、 源代码等。
对于绝大多数互联网公司来说,服务器操作系统应该都是 Linux 系列,我们本文使用的操作系统是 Centos。
如果自己没有Linux操作系统的话,我们也可以安装一个虚拟机,或者使用大名鼎鼎的Docker,下载一个Centos镜像即可。
打开nginx官网,点击右侧列表的 download 进入源码下载页面。我们可以看到 Nginx 提供了三种版本的下载,分别是 开发版本、稳定版本、过期版本。
我们选择当前最新的稳定版本 nginx-1.18.0。nginx-1.18.0 是 linux 版本的源码,nginx/Windows-1.18.0 是 windows 版本的源码。
两个 pgp 分别是对应平台版本源码经过 PGP 加密之后的签名,我们可以通过这个签名验证下载的内容是否正确。
右键点击 nginx-1.18.0,选择复制链接地址,然后通过 wget 下载源码。
解压源码:
下面进入到刚才解压的 nginx 源码目录中开始对源码进行编译。在文章的开头我们说过,一般情况下,Linux 的软件在编译的时候要经过三个步骤,configure/make以及make install,而 nginx 也不例外。
在前面介绍过,脚本的作用就是生成文件。这个脚本可以带一些参数,用于控制程序的编译行为。我简单的总结了一下执行的命令参数,如下所示:
我们通过执行来查看完整的命令参数。我们截取一部分,如下图所示:
我们列举几个比较重要的命令参数:
1) 通用配置选项
2) 第三方模块
第三方模块分为两种,一种是默认自动编译到可执行文件中的模块,一种是没有自动编译到可执行文件中。
对于前者,我们可以使用的方式来取消自动编译。比如就是不再将压缩模块编译到中。
对于后者,我们可以使用的方式将模块编译到可执行程序中。比如我们可以通过命令将地理位置的模块编译到最终的可执行程序中。
了解了上面的一些基本内容之后,我们就可以进行过程了。执行下面的命令:
我们可以在屏幕上看到输出一大堆的信息,这些带字样的是脚本自动判断当前操作系统的一些特性,比如获取当前操作系统的内核版本号,是否支持,判断类型的长度等等。
突然,在最下面出现了一个触目惊心的,这就尴尬了:
从上面错误信息里面,我们可以看出来,nginx先后从 /usr/local/,/usr/include/pcre/,/usr/pkg/,/opt/local/四个位置中找 PCRE 模块,但是都没有找到,所以就报错了。那么什么是 PCRE 模块呢?
PCRE是什么? PCRE的全称是Perl Compatible Regular Expressions,是一个兼容perl的正则表达式库,使用c语言实现,性能非常的高。nginx使用PCRE实现了http rewrite功能。
为什么要从四个位置查找呢?: 因为不同的操作系统,软件安装的默认目录是不同的,nginx为了兼容不同的平台,所以要从不同的位置查找
报错信息里面也给了三种解决办法:
① 禁用模块,即执行的时候,指定;
② 将模块安装到默认的系统目录中,这样就可以自动的从默认位置找到模块;
③ 使用源码编译,将编译后的文件放到自定义的目录中,在的时候通过的方式。
同志们,不要害怕error,优秀软件的error会告诉你很多信息~~~
知道了错误的原因,我们就可以很轻松地搞定它了,我们使用上面的第②种解决办法,将库安装到系统默认的位置。
安装成功之后,我们重新执行上面的命令,可以发现,能够找到库了。
但是尴尬的是,configure又双叒叕报错了~~
看错误信息,这次是因为库没有找到。和错误信息相同,这次也给出了三种解决办法,我们同样适用第②种解决办法安装库。
再次执行命令,这个问题就解决了。并且成功的创建了文件。
经过上一步的,已经生成了文件,我们就可以通过执行命令对进行编译,如下:
编译成功之后,就剩下最后一步安装了。执行命令就行了:
这一步可能需要权限
经过上面的重重考验,我们终于自己编译了一个源码,生成了一个可执行文件,下面我们就测试一下我们的劳动成果吧。
我们在的时候指定了,那么默认情况下最终生成的可执行文件,配置文件,错误日志文件等都会在这个目录下,我们看一下这个目录的结构:
Nginx可以通过信号来控制Nginx,下图是主进程支持的信号:
nginx启动的时候可以带很多参数,如下图:
其中常用的就是 ,, , ,这几个。
-c: 指定nginx启动时使用的配置文件,默认为;
-t: 测试配置文件的语法是否正确;
-p: 指定nginx服务器使用的文件的路径前缀,默认为;
-g: 通过命令行指定一些全局配置选项;
-s: 向nginx进程发送信号。
我们可以通过直接执行nginx可执行文件(不带任何参数)来启动nginx服务。
这种情况下使用的是默认的配置文件,即。
我们也可以通过命令来查看是否启动成功。
提供了两种方法来停止服务:优雅关闭和快速关闭。
快速关闭:nginx强制停止服务,和进程收到信号之后,会立即结束运行。
优雅关闭: nginx会按照下面的步骤停止服务:
关闭监听端口,停止接收新的连接;
Nginx处理完当前的所有。
剩余请求;
停止Nginx服务
其实这两种方式都是对命令的一个封装,我们也可以直接使用kill命令完成相同的功能。
只不过kill命令要知道nginx的进程的,我们可以结合命令来查找进程号。
其实还有一种方法来获取进程的,那就是文件,这个文件的内容就是master进程的pid,大家知道这种方法就行了,尽量使用提供的命令。
当配置文件发生改变之后,牛逼的可以不用断开服务,直接重新加载配置就行了。
Nginx的功能是以模块方式存在的,同时也支持添加第三方开发的功能模块。执行configure时,通过--add-module=PATH参数指定第三方模块的代码路径,在make时就可以进行同步编译了。
Mainline version 开发版Stable version 稳定版Legacy version 历史版本
举报/反馈