之前在使用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

 sudo apt-get update
sudo apt-get install nginx

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

 cd softwares/
sudo mkdir nginx

  3.进入nginx目录.

 cd nginx/

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

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

 sudo apt-get source nginx

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

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

 sudo wget http://nginx.org/download/nginx-1.10.0.tar.gz

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

 sudo tar zxvf nginx-1.10.0.tar.gz

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

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

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

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

 sudo unzip master.zip

  7.进入nginx源码目录.

 cd nginx-1.10.0/

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

 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中.

 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可执行文件.

 sudo make

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

 sudo nginx /usr/sbin

  12.重启nginx.

 sudo service nginx restart

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

 nginx -V

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

 --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,步骤简单又省心!

Ubuntu下使用nginx和nginx-rtmp-module搭建流媒体服务器的正确姿势的更多相关文章

  1. centos7+nginx+rtmp+ffmpeg搭建流媒体服务器(保存流目录与http目录不要随意配置,否则有权限问题)

    搭建nginx-http-flv-module升级代替rtmp模块,详情:https://github.com/winshining/nginx-http-flv-module/blob/master ...

  2. Linux-Nginx+rtmp+ffmpeg搭建流媒体服务器

    Nginx+rtmp+ffmpeg搭建流媒体服务器 说明: nginx搭建流媒体服务需要用到 nginx-rtmp-module 模块 具体操作步骤: 安装nginx (1)下载第三方扩展模块ngin ...

  3. (转)Nginx+rtmp+ffmpeg搭建流媒体服务器

    (1)下载第三方扩展模块nginx-rtmp-module # mkdir module && cd module //创建一个存放模块的目录 # wget https://githu ...

  4. centos7+nginx+rtmp+ffmpeg搭建流媒体服务器

    1.安装前需要的工具 #net-tool 查本地IP #wget 下载安装包 #unzip 解压zip包 #gcc gcc-c++ perl 编译软件包用 yum install -y net-too ...

  5. nginx+webpy+uswgi+jwplayer组合搭建流媒体服务器

    转载自:http://blog.csdn.net/cjsafty/article/details/7892392 目前,由于Flash的流行,网络上绝大多数的微视频网站都采用了Flv格式来播放视频. ...

  6. nginx的rtmp搭建流媒体服务器实现直播流

    最近自己搞了一个用nginx的rtmp来搭建流媒体服务器,从而实现直播的过程,参考了网上很多资料,有些资料对于初学者来说比较难以理解,在此将我搭建的过程记录下来,分享给大家. 1.下载nginx-rt ...

  7. nginx搭建http和rtmp协议的流媒体服务器

    nginx搭建http和rtmp协议的流媒体服务器 时间:2013-09-23 23:52来源:佚名 作者:本站 举报 点击:232次 实验目的:让Nginx支持flv和mp4格式文件,同时支持Rtm ...

  8. nginx + rtmp 搭建流媒体服务器

    一.安装nginx服务器 1.路径说明: 路径:/usr/local/src 2.下载nginx-rtmp-module (我这里的目录是在/usr/local/src/下面) cd /usr/loc ...

  9. 利用Nginx搭建http和rtmp协议的流媒体服务器[转]

    利用nginx搭建http和rtmp协议的流媒体服务器 实验目的:让Nginx支持flv和mp4格式文件,同时支持Rtmp协议:同时打开rtmp的hls功能资料:HTTPLive Streaming( ...

随机推荐

  1. 添加Metasploit-payload到已有的Android项目中

    metasploit在写这篇文章之前,笔者可以说是对java一窍不通,也从来没有写过什么Android应用,在几天的摸爬滚打中终于实现了最终的目的,就是在已有Apk源码的情况下,用了比较另类的方式,添 ...

  2. Java学习笔记——山西煤老板蛋疼的拉车问题

    小荷才露尖尖角,早有蜻蜓立上头 --小池 这个问题是这样描述的: 山西煤老板有3000吨煤,要运到1000km公里外的地方卖.他选择使用火车来运煤,每辆火车行驶一公里将消耗一吨煤,且火车载货上限为10 ...

  3. PHP导出生成CSV文件

    composer 用起来是非常方便的 所以我是依赖composer来做的包管理 1.先安装composer 自行百度一下composer安装以及使用 2.用composer下载安装office包即可 ...

  4. JSP Cookie的使用

    Cookie 通常用于网站记录客户的某些信息,比如客户的用户名及客户的喜好等.一旦用户下次登录,网站可以获取到客户的相关信息,根据这些客户信息,网站可以对客户提供更友好的服务. Cookie sess ...

  5. vgrant使用简易教程

    认识vagrant vagrant用于创建和部署虚拟化开发环境 避免了多次重新配置环境 节约了开发时间,同时可以体验不同的操作系统 对于新手也是一个不错的方式,当我们配置出错,直接删除重新安装即可 准 ...

  6. 求一个整数数组最大子数组之和,时间复杂度为N

    #include<iostream.h> int main () { ]={-,-,-,-,-,-,-,-,-,-}; ],sum=; ;i<;i++) { ) { sum=b[i] ...

  7. 8.Java 加解密技术系列之 PBE

    Java 加解密技术系列之 PBE 序 概念 原理 代码实现 结束语 序 前 边的几篇文章,已经讲了几个对称加密的算法了,今天这篇文章再介绍最后一种对称加密算法 — — PBE,这种加密算法,对我的认 ...

  8. OpenStack命令 创建网络和路由管理

    1.登陆用户 :tdy(前提条件创建了tdy用户) 编写登陆用户tdy用户 脚本文件  user-operc.sh user-operc.sh : 登陆用户tdy: $ source user-ope ...

  9. node async基础1

    async的基础使用 1 async each   语法格式each(collection, iteratee, [callback])   用途:遍历集合中的元素,并行对每个元素执行一定的操作,但是 ...

  10. Unity运动残影技能

    残影实现: 1.List<DrawMesh> list,此list中包含某一帧动画模型网格.材质 2.每过一段时间就将运动物体的模型add到list中(优化:未实现,网格合并) 3.Lat ...