服务器结合OSS存储用于自动录播

搭建一个自动录播平台,录播的内容存储到云盘中.使用B站录播姬+OSS对象存储+服务器

之前买过一台廉价的服务器,只有40G的云盘存储,再想增加存储加个40G的云盘

image-20230401132603630

看见价格还是算了,所以考虑使用OSS对象存储.

1、对象存储一般可以单独使用,无需跟云主机进行组合搭配,而云硬盘则必须跟云主机同时使用,无法单独使用。

2、对象存储是可以共享的,而云硬盘一般无法共享,即便可以共享,操作起来也是非常复杂。

3、两者最大的差别在于一个是本地局域网内的存储方式,而另一个是使用云端服务器。简单来说一个是局域网,一个是公网;一个是存储设备,一个就是一个云端硬盘。

所以选择OSS存储.

购买OSS对象存储

image-20230401132831841

创建bucket,这个地域选择与OSS对象存储一样的区域.

image-20230401134520599

接下来尝试将OSS的bucket作为服务器的文件系统,也就是bucket在服务器上访问.

OSS以目录的方式挂载到ECS实例,可通过以下两种方法进行实现:

第一种方法的前提条件,要求ECS的地域与OSS同地域,这里不满足所以采用第二种方法后面发现如果想让服务器跟OSS存储联动,最好还是选择同地域的,因为我发现我服务器在国内,OSS放在新加坡,内网是ping不通的.下面两种方法都介绍一下,推荐使用云存储网关.

image-20230401135037647

挂载对象存储到服务器

使用ossfs挂载

安装ossfs

首先在阿里云上查看你的操作系统,这里以Centos8.0为标准

1
sudo wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.7_centos8.0_x86_64.rpm

安装后下载

1
sudo yum install ossfs_1.80.7_centos8.0_x86_64.rpm

配置账号信息

通过ossfs访问OSS存储空间时,需要配置账号信息,也就是AccessKey ID和AccessKey Secret。这些账号信息需要按照特定的格式写到账号配置文件中。当挂载ossfs时,会从这个账号配置文件上获取账号信息,格式为$bucket_name:$access_key_id:$access_key_secret

access key可以使用RAM用户或者阿里云账号.我之前创建了阿里云账号的AccessKey,由于阿里提醒说有安全问题让我用RAM用户,这里就再创建一个用户使用AccessKey.

image-20230401141143831

如果使用RAM角色访问,需要先创建角色

image-20230401150541565

创建角色

image-20230401150651605

然后为角色添加权限

image-20230401150815904

为实例添加角色

image-20230401150907529

通过ossfs访问OSS存储空间时,需要配置账号信息,也就是AccessKey ID和AccessKey Secret。这些账号信息需要按照特定的格式写到账号配置文件中。当挂载ossfs时,会从这个账号配置文件上获取账号信息,格式为$bucket_name:$access_key_id:$access_key_secret

完成上述要求后需要配置

1
ossfs bucket1 /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com -oram_role=http://100.100.100.200/latest/meta-data/ram/security-credentials/EcsRamRoleOssTest

命令类似.也就是将账号信息配置到一个目录中,默认账号配置文件的默认路径为/etc/passwd-ossfs.账号配置文件的默认路径为/etc/passwd-ossfs

如果使用阿里云账户的AccessKey

1
echo bucket-test-1:AAAIbZcdVCmQ****:AAA8x0y9hxQ31coh7A5e2MZEUz**** > /etc/passwd-ossfs

配置好后进行挂载,bucket的内网测试是能ping通的.

image-20230401152412179

1
ossfs bili-record /home/files/bili-record -ourl=http://oss-ap-southeast-1-internal.aliyuncs.com

这里是内网访问

卸载

1
sudo fusermount -u /tmp/ossfs

通过云存储网关挂载

通过云存储网关挂载OSS (aliyun.com)

还需要付费

image-20230401152901650

设置开机自启

  1. 在centos系统中,在/etc/init.d/目录下建立文件ossfs,内容为挂载指令

    1
    ossfs bili-record /home/files/bili-record -ourl=http://oss-ap-southeast-1-internal.aliyuncs.com

2.赋予可执行权限

1
chmod a+x /etc/init.d/ossfs

3.把ossfs启动脚本作为其他服务,开机自动启动:

1
chkconfig ossfs on

测试

在网站上上传文件,然后查看服务器

image-20230401155032846

image-20230401155048241

增加域名管理

文件(Object)上传至存储空间(Bucket)后,OSS会自动生成文件URL,您可以直接通过文件URL(即Bucket外网访问域名)访问该文件。若您希望通过自定义域名(自有域名)访问这些文件,需要将自定义域名绑定至文件所在的Bucket。

域名信息更新需 1 分钟左右的时间,CD

image-20230401155607206

在域名服务商配置即可,这里不详细说了.

使用B站录播姬

B站录播姬 (danmuji.org)官网

我这里使用docker版本,首先拉取镜像

1
docker pull bililive/recorder:latest

运行

1
2
# 复制粘贴运行之前记得修改  "宿主机路径"
docker run -d -v 宿主机路径:/rec -p 2356:2356 bililive/recorder
  1. /rec :作为 "工作目录" ,用于存储录播配置和录播 .flv 视频文件。
  2. /ssl :作为 Nginx 证书存储目录。
  3. /file :官方文档中指出:

由于安全问题,这里增加HTTP Basic登录功能

配置文件

设置项 - B站录播姬 (danmuji.org)

由于配置文件json还挺麻烦,由于有web ui,可以开放端口直接配置搭配文档编写.

image-20230401172201099

比如

1
{"version":3,"global":{},"rooms":[{"RoomId":{"HasValue":true,"Value":"房间号"},"AutoRecord":{"HasValue":true,"Value":true}}]}

更新录播姬

1
2
3
4
5
6
7
8
9
10
11
# 拉取最新版本的镜像
# 参考本页面上面的拉取镜像部分
docker pull bililive/recorder:latest

# 停止运行并删除
docker stop <旧容器ID>
docker rm <旧容器ID>

# 重新新建容器运行
# 参考本页面上面的运行录播姬部分
docker run -d -v 宿主机路径:/rec -p 2356:2356 bililive/recorder:latest

参考资料

  1. Docker 镜像 - 安装使用 - B站录播姬 (danmuji.org)
  2. 基于云服务器以及OSS存储打造属于自己的自动录播姬 - 哔哩哔哩 (bilibili.com)
  3. OSS如何以目录的方式挂载到ECS实例 (aliyun.com)
  4. 阿里云OSS通过服务器ESC内网流量访问文件
-------------本文结束感谢您的阅读-------------
感谢阅读.

欢迎关注我的其它发布渠道