|  | @@ -0,0 +1,165 @@
 | 
	
		
			
				|  |  | +# nginx安装配置
 | 
	
		
			
				|  |  | +> [!tip] 参考文档[直播流转码](https://wxzzz.com/425.html)
 | 
	
		
			
				|  |  | +> 采用`ubuntu20.04`进行安装,`centos`自行替换
 | 
	
		
			
				|  |  | +> 文章的`nginx`版本为`1.8.1`,新版本的插件不支持,所以用的`1.20.2`
 | 
	
		
			
				|  |  | +## 所需环境软件包
 | 
	
		
			
				|  |  | +> [!tip] `nginx-flv-module`基于`nginx-rtmp-module`进行开发,所以安装`flv`模块后可以直接用
 | 
	
		
			
				|  |  | +1. [nginx](http://nginx.org/)
 | 
	
		
			
				|  |  | +2. [nginx-http-flv-module](https://github.com/winshining/nginx-http-flv-module)
 | 
	
		
			
				|  |  | +3. 推流工具 `obs`或者`ffmpeg`
 | 
	
		
			
				|  |  | +4. 播放工具 `vlc`或者`flv`在线播放工具
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +## 编译安装
 | 
	
		
			
				|  |  | +### 前置环境配置
 | 
	
		
			
				|  |  | +1. 配置编译前置环境`pcre`库,可能还需要`zip` `g++`等库来解压或者编译
 | 
	
		
			
				|  |  | +<!-- tabs:start  -->
 | 
	
		
			
				|  |  | +#### **ubuntu**
 | 
	
		
			
				|  |  | +> 非`ubuntu`可跳过
 | 
	
		
			
				|  |  | +```shell
 | 
	
		
			
				|  |  | +sudo apt-get install libpcre3 libpcre3-dev 
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +你可能还需要安装,安装时没出现
 | 
	
		
			
				|  |  | +```shell
 | 
	
		
			
				|  |  | +sudo apt-get install openssl libssl-dev
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +#### **centos**
 | 
	
		
			
				|  |  | +> 非`centos`可跳过
 | 
	
		
			
				|  |  | +```shell
 | 
	
		
			
				|  |  | +yum -y install unzip
 | 
	
		
			
				|  |  | +yum -y install gcc-c++ 
 | 
	
		
			
				|  |  | +yum -y install pcre pcre-devel  
 | 
	
		
			
				|  |  | +yum -y install zlib zlib-devel 
 | 
	
		
			
				|  |  | +yum -y install openssl openssl-devel
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +<!-- tabs:end -->
 | 
	
		
			
				|  |  | +2. 下载对应的数据包`nginx-flv-module`以及`nginx`
 | 
	
		
			
				|  |  | +> [!tip] 下载`nginx-flv-module`模块,如果下载不动可以选择下载 `zip` 然后在解压
 | 
	
		
			
				|  |  | +> 可选克隆方案,或者下载zip方案
 | 
	
		
			
				|  |  | +<!-- tabs:start  -->
 | 
	
		
			
				|  |  | +#### **克隆方案**
 | 
	
		
			
				|  |  | +```shell
 | 
	
		
			
				|  |  | +git clone https://github.com/winshining/nginx-http-flv-module.git
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +#### **zip方案**
 | 
	
		
			
				|  |  | +```shell
 | 
	
		
			
				|  |  | +wget https://github.com/winshining/nginx-http-flv-module/archive/refs/heads/master.zip
 | 
	
		
			
				|  |  | +unzip nginx-http-flv-module-master.zip
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +<!-- tabs:end -->
 | 
	
		
			
				|  |  | +3. 下载编译`nginx`
 | 
	
		
			
				|  |  | +> 下载并解压`nginx`,选择版本为`1.20.2`
 | 
	
		
			
				|  |  | +```shell
 | 
	
		
			
				|  |  | +wget http://nginx.org/download/nginx-1.20.2.tar.gz
 | 
	
		
			
				|  |  | +tar -zxvf ./nginx-1.20.2.tar.gz
 | 
	
		
			
				|  |  | +cd ./nginx-1.20.2
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +> 为`nginx`添加`flv`模块, `--add-module`可以多次输入,等号后接模块路径
 | 
	
		
			
				|  |  | +> 为防止权限问题,make install 用`sudo`进行获取权限
 | 
	
		
			
				|  |  | +```shell
 | 
	
		
			
				|  |  | +./configure --prefix=/usr/local/nginx  --add-module=../nginx-http-flv-module
 | 
	
		
			
				|  |  | +make
 | 
	
		
			
				|  |  | +sudo make install
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +## 启动以及配置`nginx`
 | 
	
		
			
				|  |  | +> `nginx` 的二进制文件在 对应目录下`sbin`文件夹内
 | 
	
		
			
				|  |  | +1. 配置`nginx`,编辑`nginx`配置文件
 | 
	
		
			
				|  |  | +```shell
 | 
	
		
			
				|  |  | +sudo vim /usr/local/nginx/conf/nginx.conf
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +2. 配置参考
 | 
	
		
			
				|  |  | +```shell
 | 
	
		
			
				|  |  | +#定义Nginx运行的用户和用户组
 | 
	
		
			
				|  |  | +user nginx nginx;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#nginx进程数,建议设置为等于CPU总核心数。
 | 
	
		
			
				|  |  | +worker_processes 8;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
 | 
	
		
			
				|  |  | +error_log /home/nginx/log/error.log info;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +events {
 | 
	
		
			
				|  |  | +    worker_connections  1024;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +rtmp {
 | 
	
		
			
				|  |  | +   server {
 | 
	
		
			
				|  |  | +    listen 1988;
 | 
	
		
			
				|  |  | +    chunk_size 4000;
 | 
	
		
			
				|  |  | +    notify_method get;
 | 
	
		
			
				|  |  | +   #直播
 | 
	
		
			
				|  |  | +    application live {
 | 
	
		
			
				|  |  | +        live on;
 | 
	
		
			
				|  |  | +        publish_notify on;
 | 
	
		
			
				|  |  | +        # 这个地址可以用来作权限验证,可以不填写,内部内容自行查找
 | 
	
		
			
				|  |  | +        # on_publish http://127.0.0.1:80/on_publish.php;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +   #点播
 | 
	
		
			
				|  |  | +   application vod {
 | 
	
		
			
				|  |  | +         play /tmp/video;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +http {
 | 
	
		
			
				|  |  | +    # http监听地址,可以忽略
 | 
	
		
			
				|  |  | +    server {
 | 
	
		
			
				|  |  | +        listen 80;
 | 
	
		
			
				|  |  | +        server_name  localhost;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    # flv转发地址
 | 
	
		
			
				|  |  | +    server {
 | 
	
		
			
				|  |  | +        # 端口
 | 
	
		
			
				|  |  | +        listen 19123;
 | 
	
		
			
				|  |  | +        server_name localhost;
 | 
	
		
			
				|  |  | +        location / {
 | 
	
		
			
				|  |  | +                add_header 'Access-Control-Allow-Origin' '*';
 | 
	
		
			
				|  |  | +                root html;
 | 
	
		
			
				|  |  | +                index  index.html index.htm;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        # 原始流地址
 | 
	
		
			
				|  |  | +        location /live {
 | 
	
		
			
				|  |  | +                flv_live on;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        # 转换为flv后的流地址 请求时 ip:port/flv
 | 
	
		
			
				|  |  | +        location /flv {
 | 
	
		
			
				|  |  | +            add_header 'Access-Control-Allow-Origin' '*';
 | 
	
		
			
				|  |  | +            flv_live on;
 | 
	
		
			
				|  |  | +            chunked_transfer_encoding on;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +3. 查看配置是否正确 `nginx -t`
 | 
	
		
			
				|  |  | +> [!tip] 进入到`nginx`目录下的`sbin`文件夹执行目录
 | 
	
		
			
				|  |  | +> 问题自行解决,无效配置会提示
 | 
	
		
			
				|  |  | +```shell
 | 
	
		
			
				|  |  | +sudo ./nginx -t
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +4. 启动`nginx`
 | 
	
		
			
				|  |  | +```shell
 | 
	
		
			
				|  |  | +sudo ./nginx
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +Tips:停止nginx服务`./nginx -s stop`
 | 
	
		
			
				|  |  | +```shell
 | 
	
		
			
				|  |  | +./nginx -s stop
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +重新加载配置 `./nginx -s reload`
 | 
	
		
			
				|  |  | +```shell
 | 
	
		
			
				|  |  | +./nginx -s reload
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +通过以上配置,即可完成服务端的直播环境配置。
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +5. 查看是否启动成功
 | 
	
		
			
				|  |  | +> [!tip] 如果没有返回,代表没启动成功,检查配置.  浏览器访问`ip`,有显示`nginx`即可
 | 
	
		
			
				|  |  | +```shell
 | 
	
		
			
				|  |  | +sudo lsof -i:19123
 | 
	
		
			
				|  |  | +sudo lsof -i:1988
 | 
	
		
			
				|  |  | +sudo lsof -i:80
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +## 测试推流
 | 
	
		
			
				|  |  | +> 使用`obs`进行推流
 | 
	
		
			
				|  |  | +
 |