![直播系统开发:基于Nginx与Nginx-rtmp-module](https://wfqqreader-1252317822.image.myqcloud.com/cover/600/25462600/b_25462600.jpg)
1.3 安装Nginx
Nginx可以在不同的操作系统、不同的环境中安装。本节以CentOS 6.9操作系统为例,介绍Nginx的安装和相关配置。
使用Yum安装rpm包的方式比编译安装的方式简单很多,其默认会安装许多模块,但缺点是以后再安装第三方模块时比较麻烦,所以,这里使用编译安装的方式安装Nginx。
1.3.1 选择安装版本
在Nginx官网中可下载Nginx安装包,其中提供了3个版本:Mainline version、Stable version和Legacy versions。
Mainline version是Nginx目前在主力研发的版本。Stable version是最新的稳定版本,是生产环境中建议使用的版本。Legacy versions是稳定的老版本。
这里选择Stable version版本:nginx-1.12.2.tar.gz。安装环境是CentOS 6.9。因为在安装过程所执行的命令需要root权限,所以,这里选择使用root用户安装。
1.3.2 编译安装Nginx
1.准备工作
安装依赖包:gcc、g++。
安装必要的库:zlib、pcre、openssl。
源码编译依赖gcc环境,并且部分Nginx模块依赖于以上3个库,如果没有安装这3个库,则需要先安装。
2.下载解压
将安装包下载到指定目录下并解压。
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/17_1.jpg?sign=1738856398-u6mfPsqbzzd9LOL1cXsf9dNldmuO3WaM-0-29361ebf86899d77db9583d846670d92)
3.配置
使用configure命令进行配置。它定义了系统的各个方面配置,包括Nginx允许用于连接处理的方法,并且最终创建了一个Makefile文件。
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/17_2.jpg?sign=1738856398-rrApHg98DwtCAAOhKkdGIWy0gmDxxaGS-0-302143af8e7d1d4af6a29ff10a1e9d49)
其中“./configure-help”命令能列出大部分常用模块和编译选项,其中部分内容如图1-4所示。
图1-4
其中以-without开头的选项都是默认安装的,以PATH结尾的选项需要手动指定依赖库源码目录。
(1)配置选项说明。
下面具体介绍一些常见的配置选项。
·--prefix=PATH:设置Nginx的安装目录,默认为/usr/local/nginx。
·--sbin-path=PATH:设置Nginx可执行文件的名称,默认为prefix/sbin/nginx。
·--conf-path=PATH:设置nginx.conf配置文件的名称。Nginx允许使用不同的配置文件启动服务,通过在命令行参数中指定要使用的配置文件,默认为prefix/conf/nginx.conf。
·--pid-path=PATH:设置存储主进程ID的文件,默认为prefix/logs/nginx.pid。安装后也可在nginx.conf中使用pid命令更改。
·--error-log-path=PATH:设置主要错误、警告和诊断文件。安装后,可以使用error_log命令在nginx.conf配置文件中更改文件名,默认为prefix/logs/error.log。
·--http-log-path=PATH:设置 HTTP 服务器的主要请求日志文件。安装之后,可以使用access_log命令在nginx.conf配置文件中更改文件名,默认为prefix/logs/access.log。
·--with-http_ssl_module:可以构建一个将HTTPS协议支持添加到HTTP 服务器中的模块。该模块不是默认生成的。openssl库需要构建和运行这个模块。
·--with-pcre=PATH:将路径设置为pcre库的来源。
·--with-zlib=PATH:将路径设置为zlib库的来源。
更为详细的配置选项说明请参考Nginx官网中的文档。
(2)配置命令。
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/18_1.jpg?sign=1738856398-FRT7zPBH0nPnw1fbP07lkxtD0r3WFnYA-0-b9ec492433a928990551b9aaf086a77a)
这里都是选择默认配置,Nginx将默认被安装到/usr/local/nginx目录下。执行命令后部分结果如图1-5所示。
图1-5
4.编译安装
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/19_1.jpg?sign=1738856398-zxcbBCQSPIrv7zXygQbSOfiBlhW4XyPX-0-fdc03d76afb8c21c330c664ab7846c30)
5.验证是否安装成功
可以通过查看Nginx的版本信息来验证其是否安装成功。
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/19_2.jpg?sign=1738856398-cc8YFIbbnxd2qNTsJ5CiX2E4NtZKNP22-0-2ec4a5dfdb29f6f79c64c2a831838954)
如果安装成功,则会显示Nginx的版本信息,如图1-6所示。
图1-6
6.修改配置文件
在安装Nginx的配置文件“nginx.conf”时,如果没有指定路径,则默认放在/usr/local/nginx/conf目录下,1.5节会专门介绍nginx.conf文件中的相关配置。
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/19_4.jpg?sign=1738856398-lWJNpyoYCznkHLvwJ8eNZ68h6ldY0H5J-0-07cd92f7a3f1fd0e13fbdcb0798bcc8c)
7.验证配置文件的正确性
如果修改了配置文件,则在启动Nginx之前,最好先检查一下配置文件是否正确,以免在重启Nginx之后出现错误,影响服务器的稳定运行,具体执行命令如下:
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/19_5.jpg?sign=1738856398-URSAn4ZzYNzgDyjntQFhkAVs1ch7BFuJ-0-55aa3fce0b48da853f5daae0007691aa)
如果配置文件被正确执行,则结果如图1-7所示。
图1-7
1.3.3 配置防火墙
安装好Nginx之后,需要配置防火墙,开启80端口。如果不开启80端口,则防火墙会阻止外网访问80端口,从而我们就无法访问Nginx的配置网站。
1.防火墙相关操作
下面介绍几个与防火墙相关的命令:
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/19_7.jpg?sign=1738856398-LCC8y9Icw7uaRE5OnPnsfIhQkc58vCQQ-0-2d5dacfc551452df83890369c3f3d992)
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/20_1.jpg?sign=1738856398-jPqdiJNs15iiXOMaFjQSBg1lURTgLgot-0-29e5000565fc94c4922c2c45e35513c5)
2.配置防火墙
修改防火墙配置:vi/etc/sysconfig/iptables。
添加配置项:A INPUT-m state-state NEW-m tcp-p tcp-dport 80-j ACCEPT。
重启防火墙:service iptables restart。
3.启动Nginx服务
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/20_2.jpg?sign=1738856398-PMA6ZDdc4lakGweNrFIiurGQfc4cPoGl-0-a061c7f67b18442f4ab74e5ebcc8acc0)
4.查看Nginx进程信息
启动Nginx之后,便可以使用以下命令查看Nginx进程信息。
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/20_3.jpg?sign=1738856398-nLLhnaGvJG97oSpFe5b9LMpupHAdbfgj-0-9391076777daa1e21a36550249d64132)
命令运行结果如图1-8所示。
图1-8
其中,master process对应的是主进程,3182是主进程号,worker process是工作进程。
Nginx有一个主进程和多个工作进程。主进程主要用于读取和评估配置,并维护工作进程。工作进程是对请求进行实际处理。Nginx使用基于事件的模型和依赖操作系统的机制来高效地在工作进程之间分配请求。工作进程的数量在配置文件中定义。
5.测试
(1)测试80端口。
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/20_5.jpg?sign=1738856398-BF99IqALzehrhQnU9WWL9hvN40vxLtRY-0-11f6eba767e04320803874593d608a50)
执行结果如图1-9所示。
图1-9
(2)浏览器访问测试。
用浏览器访问地址:http://ip:80,其中“ip”是Nginx服务器的IP地址。访问结果如图1-10所示。
图1-10
6.关闭Nginx服务
停止进程:kill-QUIT 主进程号。
快速停止:kill-TERM 主进程号。
强制停止:pkill-9 nginx。
1.3.4 加入自启动和系统服务
虽然可以用命令行对Nginx进行开启、关闭等各种操作,但毕竟不是很方便。可以配置Nginx到系统服务器中,从而可以通过service命令来启动和关闭服务。也可以将Nginx设为开机自启动,那么,在每次重启服务器之后就不用手动开启Nginx服务了,非常方便。
1.创建脚本文件
在/etc/init.d目录下创建一个名为“nginx”的脚本文件,文件内容如下:
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/21_2.jpg?sign=1738856398-D85oXxbvQTL7je3zzEvQP0uTR3gSVVBQ-0-e80cea4383d0a1602ee8351ccfdcd9d7)
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/22_1.jpg?sign=1738856398-tC7tujfyp7saB3C0weeZeOKpbk1Bo2ux-0-b279f474493c4a2427ac2ff7fd23dc94)
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/23_1.jpg?sign=1738856398-fChKdlex55lYyAA31oLeqmg1Wyb7lnwl-0-8b61434605277d7720f4e937ac6be836)
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/24_1.jpg?sign=1738856398-DZYkObHOKCgJrDo6NTZAfdSiAEKLfP8g-0-2cd14e4df91cc7399602f9236c03ab0c)
要根据实际安装路径,修改脚本中的以下两个配置选项:
将nginx="/usr/local/nginx/sbin/nginx"修改成Nginx执行程序的路径。
将NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"修改成配置文件的路径。
2.设置执行权限
要给脚本添加执行权限,不然执行的时候会报错:permission denied。
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/24_2.jpg?sign=1738856398-vKIkrXWOQjMI9QCM2bDeZuY4d1lZMxpd-0-416d087365580589f858661b7a89e665)
3.执行
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/24_3.jpg?sign=1738856398-vGZK7qAWQmP4cRDmcTSpYJ6zfdS9wQ6z-0-d32fe068ef0b0bc3488ee6727d4ed8f1)
4.加入开机自启动
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/24_4.jpg?sign=1738856398-LCnAf2Y8xdrNlBQcO6jyiGc6lUUXnqAL-0-a408ddf0de60e002704d982cc109d7c0)
1.3.5 加入系统变量
在前面的内容中介绍了一些Nginx的操作命令,比如,要查看Nginx的版本信息,我们通常可以这样:
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/24_5.jpg?sign=1738856398-78m5B8bdUiBAZlRQLNcvDLziPA0kbooK-0-7ecfcf0b29e5bf0f0b2b8a6321c3c71e)
或
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/25_1.jpg?sign=1738856398-WWg6jt40PskEH6l42pHGL9TpQxtiCxnJ-0-00e9d85517296920a83bc40433d3cd7a)
使用这种方式,使得我们每次要执行相关命令时,都要输入很长的Nginx执行文件路径或者要先进入指定目录中才行,这确实有点儿麻烦。所以,我们可以将Nginx的路径配置到系统变量中。
1.修改/etc/profile文件
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/25_2.jpg?sign=1738856398-rXAxJ0qqEWAJMimCiIWiWsv3XqDaWzTn-0-3edd59e05b9971d418c88efd5e06b4e1)
2.添加PATH
在profile文件中添加Nginx执行文件的路径,如图1-11所示。
图1-11
3.使之立即生效
编辑/etc/profile文件后,对于PATH的修改不会立马生效,如果要立即生效,则执行以下命令:
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/25_4.jpg?sign=1738856398-cBPFbmVfGqWVXjgM45yMnrhYeSImdVM5-0-851124b8b354600b9d58dce5df99f7a9)
4.执行Nginx命令
在环境变量生效之后,就可以直接用“nginx”来执行相关命令。比如,之前查看Nginx版本信息的命令,就可以直接执行:
![](https://epubservercos.yuewen.com/5450B1/13916128203788306/epubprivate/OEBPS/Images/25_5.jpg?sign=1738856398-m5ZWodoTGP1NC3gnlBzoVRTo2Dj1LCq0-0-982260e6ecca8badb207f9f21dd01344)