最近萌生搭建一个流媒体服务器的想法,因为自己在写一些音视频的东西,所以就想搞一个玩一玩。本篇在ubuntu16.04下成功。

第一部分:准备工作

先在/root/下新建一个目录存放这些文件。

mkdir nginx
cd nginx

然后在执行下面三条命令。

下载Nginx

wget http://nginx.org/download/nginx-1.12.1.tar.gz

下载OpenSSL(因为Nginx依赖于OpenSSL)

wget https://github.com/openssl/openssl/archive/OpenSSL_1_1_0f.tar.gz

下载Rtmp

wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.0.tar.gz

第二部分 编译

cd openssl-OpenSSL_1_1_0f/

mkdir bin

./config –prefix=`pwd`/bin

上面这条执行完之后会出现Makefile文件,接下来正式编译

make install

然后回到Nginx目录下

cd nginx-1.12.1/

cd auto/lib/openssl/

然后修改conf文件

vim conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
      if [ $ngx_found = no ]; then

# MacPorts

ngx_feature="OpenSSL library in /opt/local/"
ngx_feature_path="/opt/local/include"

if [ $NGX_RPATH = YES ]; then
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lssl -lcrypto $NGX_LIBDL"
else
ngx_feature_libs="-L/opt/local/lib -lssl -lcrypto $NGX_LIBDL"
fi

. auto/feature
fi
if [ $ngx_found = no ]; then

# 自己添加的一个判断

ngx_feature="OpenSSL library in /root/nginx/openssl-OpenSSL_1_1_0f/bin/"
ngx_feature_path="/root/nginx/openssl-OpenSSL_1_1_0f/bin/include"

if [ $NGX_RPATH = YES ]; then
ngx_feature_libs="-R/root/nginx/openssl-OpenSSL_1_1_0f/bin/lib -L/root/nginx/openssl-OpenSSL_1_1_0f/bin/lib -lssl -lcrypto $NGX_LIBDL"
else
ngx_feature_libs="-L/root/nginx/openssl-OpenSSL_1_1_0f/bin/lib -lssl -lcrypto $NGX_LIBDL"
fi

. auto/feature
fi

回到nginx目录下,开始编译nginx。

cd /root/nginx/nginx-1.12.1/

./configure –prefix=`pwd`/bin –add-module=/root/nginx/nginx-rtmp-module-1.2.0

make install

之后会多一个bin目录就代表成功了,来到这个目录下的sbin执行

./nginx

如果碰到错误

error while loading shared libraries:
libssl.so.1.1: cannot open shared object file: No such file or directory

可以

vim /etc/ld.so.conf

在其中加入

/root/nginx/openssl-OpenSSL_1_1_0f/bin/lib

然后执行 Ldconfig保存设置,在去配置一下服务器的入端口 1935 8080.

然后关闭nginx服务器,将nginx-rtmp-module/test/下的nginx.conf 复制到 nginx/bin/conf下面

修改一下 将路径都改为自己的rtmp-module的路径在重启就OK了。