Ubuntu环境下安装基于nginx的rtmp服务器

Linux(Ubuntu)下重装nginx,直接下载的nginx没有rtmp功能,只能卸载重装:

(前面是wsl中安装,后面是阿里云服务器上安装)

先查看nginx相关的包,需要全部卸载

dpkg --get-selections|grep nginx

而后卸载:

sudo apt-get --purge remove nginx

sudo apt-get --purge remove nginx-common

sudo apt-get --purge remove nginx-core

参考:linux下Nginx的卸载、安装_apt卸载nginx_你真的努力吗的博客-CSDN博客

【Nginx】Linux下简单搭建RTMP流媒体服务器并使用FFmpeg和FFplay进行推流和拉流_linux nginx rtmp_奋斗吧!骚年!的博客-CSDN博客

重新安装带rtmp的nginx

第一步:检查依赖是否安装

检查 pcre、openssl、zlib是否安装(因为系统不一样安装命令不一样,而且我已经安装所以没有关注)

第二步:下载Nginx

在官网里面随便找一个自己想要的版本下载即可,然后放在自己想放的位置解压即可(我放在/opt/nginx/)

但是还不能安装(因为我安装好了就不能安装nginx-rtmp-module)

官网地址: http://nginx.org/en/download.html

第三步:下载nginx-rtmp-module

在github下载压缩包,然后放在一个位置解压即可(我放在/root/)

记得把文件夹名字改一下(把nginx-rtmp-module-master里面master删掉)

网址: https://github.com/arut/nginx-rtmp-module

解压缩命令:Linux之常用的压缩解压缩命令_linux解压zip命令_宗而研之的博客-CSDN博客

第四步:安装Nginx和加入nginx-rtmp-module

进入解压后的Nginx文件夹里面(我的是/opt/nginx/nginx-1.20.2/)

执行命令(–prefix=“Nginx的路径” --add-model=“model的路径”)

./configure --prefix=/opt/nginx --add-module=/root/nginx-rtmp-module

make

make install

make和install都不报错,并且创建nginx文件夹成功,说明安装成功

认证rtmp的过程中可能因为依赖缺失而报错:

需要额外安装步骤一的依赖(网上推荐用yum 但是这个系统没有,所以用了apt)

apt-get install libpcre3 libpcre3-dev

sudo apt-get install openssl libssl-dev

【dpkg -l | grep zlib】发现zlib安装包自带

安装完成后重新认证:

./configure --prefix=/opt/nginx --add-module=/opt/nginx-rtmp-module

make之后运行查看版本号,发现路径不匹配:

解决办法是使用绝对路径:nginx报错The program 'nginx' can be found in the following packages_寰宇001的博客-CSDN博客

/opt/nginx-1.10.3/objs/nginx

其他办法:

nginx报错The program 'nginx' can be found in the following packages_浮云算神马的博客-CSDN博客

可能涉及权限问题,可修改:

添加rtmp配置:

root@DESKTOP-ORDOVJ7:/opt/nginx/conf# vi nginx.conf

这个conf应该才是有效的,另一个conf和绝对路径的nginx 同文件夹

root@DESKTOP-ORDOVJ7:/opt/nginx-1.10.3/conf# vi nginx.conf

分不清就都修改

在最后添加rtmp配置即可

rtmp {

    server

    {

        listen 1935;

        chunk_size 4096;

        application live

        {

            live on;

        }

    }

}

全部设置完成后可以用ffmpeg进行测试,推流成功

阿里云上安装遇到的问题

上面是在wsl中安装的,后续在阿里云服务器上重新安装了一次,遇到了一些新的问题:

./configure不成功

依赖包不完整,且Ubuntu的依赖和其他linux上需要安装的依赖名字不同

正确安装nginx编译所需依赖

sudo apt-get update

sudo apt-get install -y build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev git

(如果后续不使用git下载rtmp,不需要)

Nginx下载:

(我直接用了之前的安装包,需要和当前Ubuntu的版本对应,Ubuntu16对应1.10.3,直接解压即可)

wget https://nginx.org/download/nginx-1.10.3.tar.gz

下载rtmp模块

Git:

git clone https://github.com/arut/nginx-rtmp-module.git

我直接下载,解压即可

./configure配置的正确指令

cd nginx-1.10.3(记住当前文件夹,这是nginx安装包的位置,也和后续相对路径有关)

./configure --prefix=/usr/local/nginx \

--with-http_ssl_module \

--add-module=~/nginx-rtmp-module

\是换行标志

--prefix选项指定安装目录;--with-http_ssl_module选项表示启用SSL/TLS支持;--add-module选项指定rtmp模块的源代码路径

之前这一步会显示依赖找不到,重新安装依赖后可以找到了

但出现add module不成功,报错:

【error: no /nginx-rtmp-module/config was found】

首先记得改安装包的名字,但其实这个文件在文件夹里是存在的

原因:

orangepi4搭建 RTMP 流直播服务器 - 知乎

【解决】特别是--add-module=../nginx-rtmp-module,上层目录应该用../来代替,而不是用文件夹的名字,这个路径是要根据自己的config所在的目录而进行更改的,不是写死的!!!

如果还报错:

Centos中安装带rtmp模块的Nginx_./configure: error: no ../nginx-rtmp-module/config_Virtual Me的博客-CSDN博客

去掉--with-http_ssl_module重新配置一次,或者直接重新配置

到此为止,configure不再报错

Make

Make前面都正常,但最后报错一条:

【make[1]: Leaving directory `/usr/local/nginx’】

nginx源码编译安装出现“make[1]: Leaving directory `/usr/local/nginx’“解决办法 – 源码巴士

如果你走到make这一步的时候只出现了一行“make[1]: Leaving directory `/usr/local/nginx-1.12.1;”提示,不用管它,继续走make install ;

然后:

1、我只需要去看/usr/local下面是否有nginx文件夹?

2、如果已经有nginx文件夹?

3、我们再去看nginx是否可以正常启动?

4、如果nginx启动也可以成功,我们再去看下网站是否可以访问,是否会出现“Welcome to nginx!”?

5、如果上面都成功了,说明你的nginx已经ok!

这一步报错可能是编译环境配置把警告当做了错误,但不影响实际使用。Make install后可以看到nginx文件已经被编译成功,生成了新文件夹

但在运行nginx验证时又报错:

nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (13: Permission denied)

2018/08/12 00:01:05 [emerg] 1977#0: mkdir() "/usr/local/nginx/client_body_temp" failed (13: Permission denied)

网上大部分说是root权限原因,或者logs文件夹没有成功生成,需要手动

最后发现我的问题是生成的nginx执行文件被放在sbin文件夹中,和nginx内部配置的执行依赖相对路径不对应

把nginx执行文件拷贝到外面即可解决

(新手上路)nginx运行报错:could not open error log file和mkdir fail_猿客奇谈

在浏览器访问localhost:80时报错:

SSL_ERROR_RX_RECORD_TOO_LONG

解决方法:将https修改为http

运行显示welcome to nginx成功后,在nginx.conf修改rtmp配置

即可运行rtmp功能成功

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值