趣视频服务端用于趣视频App与视频点播服务之间数据交互、业务逻辑处理及运营侧数据的管理。通过阅读本文,您可以了解到趣视频服务端的集成操作方法。
前提条件
您已经注册了阿里云账号并完成账号实名认证。注册地址请参见阿里云官网。注册指引请参见注册阿里云账号。实名认证指引请参见个人实名认证或企业实名认证。
您已经开通ECS服务并完成相关配置。更多信息,请参见开通与配置ECS服务。
您已经在ECS服务端安装JDK8。更多信息,请参见Linux环境下安装JDK。
您已经在ECS服务端安装MySQL5.7数据库。更多信息,请参见安装与配置MySQL数据库。上线后建议使用RDS服务,更多信息,请参见RDS服务。
您已经开通VOD服务并在控制台上配置好对应模板。配置步骤,请参见开通与配置VOD服务。
操作步骤
上传源码
下载趣视频AppSever及管理控制台源码。下载地址,请参见趣视频SDK(短视频解决方案)。
在保存源文件的服务端执行以下命令,将源码文件上传到ECS服务端。执行以下命令,上传源码到ECS服务端。
scp <源码文件> user@<ECS 服务端IP>:<上传后地址>
scp ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip user@10.0.0.0:/home/user/workspace/
ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip为源码文件 ,user为ECS服务器用户,10.0.0.0为ECS服务端IP地址,/home/user/workspace/为上传路径。
说明下文都以上述源码文件、ECS服务器用户、ECS服务端IP地址、上传路径等示例信息为例,在您实际操作时,根据您的实际情况设置即可。
登录ECS服务端,解压源码文件。
cd /home/user/workspace
unzip ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip
说明如果没有安装unzip,需要先执行sudo apt install unzip安装unzip。
初始化及配置数据库
支持用户自行构建音乐库。
最后用户返回的数据结构和阿里云服务获取音乐列表的数据结构需要一致,否则将会获取失败。
使用自定义的数据结构,调整Demo层的代码逻辑。
创建名称为voddemo的数据库。
cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/sql
mysqladmin -u root -p create voddemo
创建表以及管理员账号。
mysql -u root -p voddemo < ./appserver_create_table.sql
说明appserver_create_table.sql除了完成建表,还通过插入语句,创建了一个控制台管理员账号(用户名admin,密码123456),使用该账号可以在完成控制台集成后以管理员身份登录Demo控制台。
修改数据库的大小写检查规则。
编辑数据库的配置文件。
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
按I键,在文件末尾增加
lower_case_table_names=1
。按Esc键,输入:wq!保存并退出。
重启完成数据库配置。
sudo service mysql restart
配置数据库地址。
编辑源码的配置文件。
vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties
按I键,按照如下修改。
spring.datasource.url = jdbc:mysql://数据库IP地址(127.0.0.1):3306/数据库名(voddemo)?useSSL=false&useUnicode=true&characterEncoding=UTF-8 spring.datasource.username = 数据库登录用户名,例如admin spring.datasource.password = 数据库登录密码
说明若数据库和服务端都运行在ECS,则数据库IP地址可以设置为127.0.0.1,否则要使用数据库所在机器的IP地址。
数据库初始化中,创建的数据库名为voddemo。
按Esc键,输入:wq!保存并退出。
配置RAM角色
整体步骤与创建角色一致,完成第六步选择权限之后,后续步骤需按照下文操作。角色名根据您的实际需要自定义即可,本文以角色名alivc-demo-role为例介绍。
在RAM角色管理页面,单击创建好的RAM角色名称,例如:alivc-demo-role,可查询ARN。此处建议将RAM角色名称及ARN记录到本地,方便后续使用。
在RAM角色管理页面,单击创建好的RAM角色名称,例如:alivc-demo-role,单击信任策略管理页签,然后单击修改信任策略,将信任策略修改为如下:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "ecs.aliyuncs.com" ] } } ], "Version": "1" }
表示该角色为一个服务角色,受信云服务(ECS)可以扮演该角色。若未修改信任策略,该RAM角色将无法附加到ECS实例上。
实例ID参数需要设置为
["实例ID"]
。将RAM角色附加到ECS实例上。
在OpenAPI开发者门户使用ECS的AttachInstanceRamRole接口,更多信息请参见OpenAPI开发者门户。
说明RegionId:ECS实例所在的地域ID,需要前往ECS控制台查询,如华东2(上海)。
RamRoleName:RAM角色的名称。本示例中为alivc-demo-role。
InstanceIds:需要附加RAM角色的服务端ECS实例ID,需要前往ECS控制台查询,ECS控制台查询,注意要以数组形式填写,如:["i-bp135jrddxxf9tgo****"]。
单击发起调用,调用成功后可在右侧调试结果中看到success反馈。
在ECS终端执行以下命令,验证RAM角色和ECS实例是否关联成功。
curl http://100.100.100.200/latest/meta-data/ram/security-credentials/alivc-demo-role
若显示如下信息,表示STS临时授权返回成功,即RAM角色和ECS实例关联成功。
{ "AccessKeyId" : "STS.XXXXXXXXXXXX", "AccessKeySecret" : "XXXXXXXXXXXXXXXX", "Expiration" : "2020-11-20T14:33:31Z", "SecurityToken" : "XXXXXXXXXXXXXXXXXXXXXX", "LastUpdated" : "2020-11-20T08:33:31Z", "Code" : "Success" }
说明每个ECS实例只可附加一个RAM角色,如果您需要更换RAM角色,需要在OpenAPI开发者门户中调用DetachInstanceRamRole,解除该ECS上的RAM角色附加后,再次使用AttachInstanceRamRole重新附加RAM角色。
配置RAM相关信息。
编辑源码的配置文件。
vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties
按I键,按照下方示例修改。
roleArn = XXXXXXX:role/alivc-demo-role roleSessionName = vod-role roleName = alivc-demo-role
说明REGION_CN_HANGZHOU表示VOD服务所在地域,如cn-shanghai代表华东2(上海)。
roleArn表示RAM角色控制台获取到的ARN。
roleSessionName表示临时Token的会话名称(自定义填写)。
roleName表示RAM角色控制台获取到的RAM角色名称,本示例中为alivc-demo-role。
按Esc键,输入:wq!保存并退出。
配置VOD。
编辑源码的配置文件。
vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties
按I键,按照如下修改。
参数名
是否必填
说明
TEMPLATEGROUP_ID
是
转码模板组ID。详情请参见转码模板组。
LONGVIDEO_TRANSCODE_TEMPLATEGROUP_ID
否
长视频先发后审时使用的转码模板组。
TAB_TEMPLATEGROUP_ID
否
窄带高清转码模板组ID,配置后可在控制台推荐窄带高清版视频(若不填,推荐窄带高清版视频会报错)。
DOMAIN_NAME
是
ECS服务器地址,本例中为http://10.10.10.101:8080/。
AVATAR_DOMAIN_NAME
否
头像资源地址,即ECS服务器静态资源地址,本例中为http://10.10.10.101:8080/resource/。
AVATAR_URL
否
头像图片文件名列表,如1.png,2.png。
说明请将对应的头像图片文件1.png和2.png放入/home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/webapp/resource目录中。如果头像服务未配置会造成移动端用户无头像,不影响其他功能使用。
VOD_REGIONID
是
VOD服务所在区域,本例中为cn-shanghai。
policy
是
在扮演角色的时候额外加上一个权限限制。更多信息,请参见基于RAM Policy实现自定义授权。
CALLBACK_PRIVETEKEY
是
回调鉴权配置中的鉴权密钥,详情请参见回调设置。
CALLBACK_NAME
是
回调URL,即http://ECS公网IP地址:8080/vodcallback/callback。本例中为http://10.10.10.101:8080/vodcallback/callback。
AUDIT_SETTINGS_FLAG
是
审查设置,默认值为on。取值:
on:先审后发。
off:先发后审。
package_name
是
拦截器中的合法包名,多个包名使用英文逗号隔开。默认值为IOS,ANDROID,TEST,com.aliyun.apsara.svideo,com.aliyun.apsaravideo,com.aliyun.solution.longvideo。
说明com.aliyun.apsara.svideo为本示例Android端包名。
iOS端Bundle Identifier被注册会运行失败,需要自定义Bundle Identifier(如com.<公司名>.<项目名>),用于iOS端签名,并添加在package_name中保证访问合法。
拦截器只允许带有合法包名的移动端App访问服务端,否则会造成移动端请求失败,例如提示Request failed:forbidden (403)。
按Esc键,输入:wq!保存并退出。
运行服务。
编译打包。
cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226
mvn clean package -Dmaven.test.skip=true
说明如果没有安装maven,需要先执行apt install maven安装maven。
具体打包时间视服务器带宽和性能而定。本例中第一次打包时间大约为30分钟。
打包完成后,会在/home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/target/目录下生成 sdk-api-0.0.1-SNAPSHOT.jar文件。
部署jar包并启动服务。
cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/target
nohup java -jar sdk-api-0.0.1-SNAPSHOT.jar &
说明命令执行时会看到nohup提示,输入回车使程序进入后台运行。
执行完之后会在当前目录下生成日志文件nohup.out,可通过cat nohup.out命令查看日志,若包含
start success
的字样,表示服务已启动成功。如果您购买的ECS内存较小,并且需要对服务端源码重新打包并部署,可执行jps命令查看当前正在运行的jar程序进程号,然后再执行kill -9 jar程序进程号关闭该进程,再重新打包并部署,否则会因为内存不足引起打包失败。