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】
首先记得改安装包的名字,但其实这个文件在文件夹里是存在的
原因:
【解决】特别是--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功能成功