0

0

使用nginx和nginx-rtmp-module搭建流媒体服务器

零下一度

零下一度

发布时间:2017-06-29 11:11:43

|

2601人浏览过

|

来源于php中文网

原创

  之前在使用nginx和nginx-rtmp-module搭建流媒体服务器的时候遇到一个很尴尬的问题,就是在把nginx-rtmp-module模块添加到nginx中去的时候,我最开始采取的做法是先卸载原来的nginx,再下载nginx和nginx-rtmp-module的源码重新编译并安装.重装完之后我测试了一下流媒体服务器是正常的,但是接下来问题来了,由于我有一些web工程是部署在之前搭建好的lump环境下的,现在重装了nginx,这些工程需要重新部署.于是,我又开始重新部署这些web工程,但是结果让我哭晕在了厕所,因为nginx的目录结构发生了很大改变,导致我没办法配置原来的web工程了.此后我陷入了很长时间的挣扎和徘徊,网上搜寻了很多解决方案,但是这些方案大多都是侧重讲如何编译安装nginx以及进行推拉流测试,没有涉及到我这方面的问题.后来,我在浏览帖子的时候看到有人说把自己编译的nginx可执行文件替换掉原来的nginx共享库能解决问题,于是立马试了一把,结果发现真的可以!现在的nginx能同时运行流媒体服务和部署web工程,鱼与熊掌兼得!

  下面简单介绍一下我的操作过程,希望能为遇到同样问题的你带来一些帮助(我的配置环境:Ubuntu Server 16.04 + nginx1.10.0 + nginx-rtmp-module-master).

  1.先采用apt-get的方式安装nginx.目前用此方式安装的nginx的版本号为1.10.0

1 sudo apt-get update2 sudo apt-get install nginx

  2.到你喜欢的目录下用你喜欢的名字创建一个目录,用于存放nginx和nginx-rtmp-module的源码,例如:我在根目录/softwares(softwares也是我自己创建的)下面创建了nginx目录,接下来我会把nginx和nginx-rtmp-module下载到nginx目录下.

1 cd softwares/2 sudo mkdir nginx

  3.进入nginx目录.

1 cd nginx/

  4.下载nginx源码,注意:下载的源码版本需要与步骤1安装的nginx的版本保持一致,以避免不必要的问题.获取nginx源码的途径很多,此处推荐两种方式.

  方式a:在终端执行apt-get source nginx命令,直接获取到对应版本的源码.

1 sudo apt-get source nginx

  此方式下载完之后会自动解压,nginx-1.10.0目录即nginx源码目录.

  方式b:在nginx的官网上面找到对应版本然后下载.

1 sudo wget nginx.org/download/nginx-1.10.0.tar.gz

  此方式下载完之后需要自己手动解压.解码命令:

1 sudo tar zxvf nginx-1.10.0.tar.gz

  5.下载nginx-rtmp-module的源码.

1 sudo wget github.com/arut/nginx-rtmp-module/archive/master.zip

  因为nginx-rtmp-module已在GitHub上开源,所以也可以直接从GitHub上获取.GitHub地址:

  6.解压nginx-rtmp-module源码的压缩包.

1 sudo unzip master.zip

  7.进入nginx源码目录.

中易广告联盟程序
中易广告联盟程序

广告联盟系统: 快速低成本建立您自己的广告联盟中易广告联盟程序是一套适合大型广告联盟系统,结合了盈众科技多年来的联盟系统研发经验,大量各行业广告商和上千家联盟合作的服务经验,精心打造的功能强大、性能卓越的广告联盟系统,支持CPC、CPM、CPS CPA、CPV、富媒体,抗负载性和稳定性极强,实际使用中的单服务器日流量可以达到3000万。 负载能力强,稳定地区,行业等定向超强防作弊技术广告分组计划云

下载
1 cd nginx-1.10.0/

  8.查看当前nginx的配置信息,并将当前配置信息完整保存到一个地方,后面在编译nginx源码的时候需要依据当前的配置信息来进行配置.

1 nginx -V

  注意命令行中的V是大写哦,小写只能看到nginx的版本号.我当前的nginx配置信息如下:

--with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads

  9.配置nginx源码编译信息,将nginx-rtmp-module添加到nginx中.

1 sudo ./configure --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads --add-module=../nginx-rtmp-module-master

  注意,这一行命令其实是这样组成的: sudo ./configure --add-module=../nginx-rtmp-module-master.这样就将nginx-rtmp-module添加到nginx配置里面了,同时将之前保存的nginx配置信息添加到了用于此次编译的配置信息里面,尽可能地保证了编译出来的nginx与原来的nginx功能一致.细心的同学会发现,其实我在配置nginx信息的时候并没有将原来所有的配置信息都写进去,原因是如果全部复制粘贴过去,在编译的时候会出现一些不太好处理的错误,这些错误一时半会儿还没找到好的解决方案,所以就缩减了一些配置信息,缩减之后在功能模块上并无太大差异,所以可放心使用.

  10.配置完成之后,执行make命令开始编译nginx源码.编译完成之后,会在nginx源码目录的objs目录下生成nginx可执行文件.

1 sudo make

  11.将生成的nginx可执行文件拷贝到/usr/sbin目录下,替换原来的nginx共享库文件. 注意: 原来/usr/sbin目录有一个nginx共享库文件,我们使用编译出来的nginx可执行文件对其进行替换.

1 sudo nginx /usr/sbin

  12.重启nginx.

1 sudo service nginx restart

  13.再次查看nginx配置信息.

1 nginx -V

  可以看到nginx-rtmp-module模块已经添加到了nginx里面.

1 --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads --add-module=../nginx-rtmp-module-master

  试了试推流拉流,功能正常,再运行了一下原来的WEB工程,也正常!

  最后,我说明一下为什么要先通过apt-get的方式安装nginx,再进行编译替换.原因是为了方便在LUMP环境下部署WEB工程.如果不先通过apt-get的方式安装nginx,而是直接下载源码编译安装,则nginx的配置目录会不齐全,很难去部署WEB项目(也许通过某些操作也能实现部署,但是具体怎么操作还是要花时间去研究nginx的).如果不搭建流媒体服务,我建议都通过apt-get的方式安装nginx,步骤简单又省心!

 

相关专题

更多
java多线程相关教程合集
java多线程相关教程合集

本专题整合了java多线程相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.21

windows激活码分享 windows一键激活教程指南
windows激活码分享 windows一键激活教程指南

Windows 10/11一键激活可以通过PowerShell脚本或KMS工具实现永久或长期激活。最推荐的简便方法是打开PowerShell(管理员),运行 irm https://get.activated.win | iex 脚本,按提示选择数字激活(选项1)。其他方法包括使用HEU KMS Activator工具进行智能激活。

0

2026.01.21

excel表格操作技巧大全 表格制作excel教程
excel表格操作技巧大全 表格制作excel教程

Excel表格操作的核心技巧在于 熟练使用快捷键、数据处理函数及视图工具,如Ctrl+C/V(复制粘贴)、Alt+=(自动求和)、条件格式、数据验证及数据透视表。掌握这些可大幅提升数据分析与办公效率,实现快速录入、查找、筛选和汇总。

1

2026.01.21

毒蘑菇显卡测试网站入口 毒蘑菇测试官网volumeshader_bm
毒蘑菇显卡测试网站入口 毒蘑菇测试官网volumeshader_bm

毒蘑菇VOLUMESHADER_BM测试网站网址为https://toolwa.com/vsbm/,该平台基于WebGL技术通过渲染高复杂度三维分形图形评估设备图形处理能力,用户可通过拖动彩色物体观察画面流畅度判断GPU与CPU协同性能;测试兼容多种设备,但中低端手机易卡顿或崩溃,高端机型可能因发热降频影响表现,桌面端需启用独立显卡并使用支持WebGL的主流浏览器以确保准确结果

2

2026.01.21

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

2

2026.01.21

windows安全中心怎么关闭打开_windows安全中心操作指南
windows安全中心怎么关闭打开_windows安全中心操作指南

Windows安全中心可以通过系统设置轻松开关。 暂时关闭:打开“设置” -> “隐私和安全性” -> “Windows安全中心” -> “病毒和威胁防护” -> “管理设置”,将“实时保护”关闭。打开:同样路径将开关开启即可。如需彻底关闭,需在组策略(gpedit.msc)或注册表中禁用Windows Defender。

1

2026.01.21

C++游戏开发Unreal Engine_C++怎么用Unreal Engine开发游戏
C++游戏开发Unreal Engine_C++怎么用Unreal Engine开发游戏

虚幻引擎(Unreal Engine, 简称UE)是由Epic Games开发的一款功能强大的工业级3D游戏引擎,以高品质实时渲染(如Nanite和Lumen)闻名 。它基于C++语言,为开发者提供高效率的框架、强大的可视化脚本系统(蓝图)、以及针对PC、主机和移动端的完整开发工具,广泛用于游戏、电影制片等领域。

0

2026.01.21

Python GraphQL API 开发实战
Python GraphQL API 开发实战

本专题系统讲解 Python 在 GraphQL API 开发中的实际应用,涵盖 GraphQL 基础概念、Schema 设计、Query 与 Mutation 实现、权限控制、分页与性能优化,以及与现有 REST 服务和数据库的整合方式。通过完整示例,帮助学习者掌握 使用 Python 构建高扩展性、前后端协作友好的 GraphQL 接口服务,适用于中大型应用与复杂数据查询场景。

1

2026.01.21

云朵浏览器入口合集
云朵浏览器入口合集

本专题整合了云朵浏览器入口合集,阅读专题下面的文章了解更多详细地址。

22

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

nginx浅谈
nginx浅谈

共15课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号