O servidor do ApsaraVideo for Short Video gerencia a troca de dados com o aplicativo cliente e o ApsaraVideo VOD, processa a lógica de negócios e administra os dados operacionais. Este tópico explica o processo de integração do lado do servidor.
Pré-requisitos
-
Crie uma conta Alibaba Cloud e conclua a verificação de identidade. Para criar uma conta Alibaba Cloud, visite o site oficial da Alibaba Cloud. Para mais informações, consulte Criar uma conta Alibaba Cloud.
Ative o ECS e conclua as configurações necessárias. Para mais informações, consulte Ativar e configurar o ECS.
Instale o JDK 8 na sua instância ECS.
Instale um banco de dados MySQL 5.7 na sua instância ECS. Para mais informações, consulte Instalar e configurar um banco de dados MySQL. Após colocar o serviço em produção, utilize o ApsaraDB RDS para garantir maior estabilidade e desempenho. Para mais informações, consulte ApsaraDB RDS.
Ative o ApsaraVideo VOD e configure os modelos necessários no console. Para mais informações, consulte Ativar e configurar o ApsaraVideo VOD.
Procedimento
Carregar o código-fonte
Baixe o código-fonte do AppServer e do console de gerenciamento do ApsaraVideo for Short Video. Para obter o link de download, consulte ApsaraVideo for Short Video.
-
No servidor onde o arquivo de origem está armazenado, execute o comando a seguir para carregar o pacote de código-fonte na instância ECS.
scp <source_code_file> user@<ECS_instance_IP>:<destination_path>
scp ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip user@10.0.0.0:/home/user/workspace/
Neste exemplo, ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip é o arquivo de código-fonte, user é o nome de usuário da instância ECS, 10.0.0.0 é o endereço IP da instância ECS e /home/user/workspace/ é o caminho de upload.
NotaOs valores apresentados para o arquivo de código-fonte, nome de usuário do ECS, endereço IP da instância ECS e caminho de upload são apenas exemplos. Substitua-os pelas suas informações reais.
-
Faça login na instância ECS e descompacte o pacote de código-fonte.
cd /home/user/workspace
unzip ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip
NotaCaso o unzip não esteja instalado, execute sudo apt install unzip.
Inicializar e configurar o banco de dados
Você pode criar uma biblioteca de músicas autogerenciada.
A estrutura de dados retornada pelo seu serviço deve corresponder àquela fornecida pelo serviço da Alibaba Cloud para recuperação de listas de músicas. Caso contrário, a recuperação falhará.
Se você utilizar uma estrutura de dados personalizada, ajuste a lógica de código na camada demo.
-
Crie um banco de dados chamado voddemo.
cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/sql
mysqladmin -u root -p create voddemo
-
Crie uma tabela e uma conta de administrador.
mysql -u root -p voddemo < ./appserver_create_table.sql
NotaAlém de criar a tabela, o script appserver_create_table.sql utiliza uma instrução INSERT para criar uma conta de administrador do console com o nome de usuário
admine senha123456. Use essa conta para fazer login no console demo como administrador assim que a integração estiver concluída. -
Modifique a regra de diferenciação entre maiúsculas e minúsculas do banco de dados.
-
Edite o arquivo de configuração do banco de dados.
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
Pressione a tecla I e adicione
lower_case_table_names=1ao final do arquivo.Pressione Esc, insira :wq! para salvar e sair.
-
Reinicie o banco de dados para aplicar a alteração.
sudo service mysql restart
-
-
Configure o endereço do banco de dados.
-
Edite o arquivo de configuração do código-fonte.
vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties
-
Pressione I e modifique os parâmetros a seguir.
spring.datasource.url = jdbc:mysql://<Database_IP_address (e.g., 127.0.0.1)>:3306/<Database_name (e.g., voddemo)>?useSSL=false&useUnicode=true&characterEncoding=UTF-8 spring.datasource.username = <Database_username, e.g., admin> spring.datasource.password = <Database_password>NotaSe o banco de dados e o servidor estiverem na mesma instância ECS, defina o endereço IP do banco de dados como 127.0.0.1. Caso contrário, utilize o endereço IP da máquina onde o banco de dados está localizado.
O banco de dados criado durante a inicialização chama-se voddemo.
Pressione Esc, insira :wq! para salvar e sair.
-
Configurar uma função RAM
Siga as etapas descritas em Criar uma função. Após selecionar as permissões na Etapa 6, prossiga com as etapas abaixo. Você pode definir um nome de função personalizado. Este tópico usa
alivc-demo-rolecomo exemplo.Na página Roles, clique em o nome da função RAM criada, por exemplo,
alivc-demo-role, para localizar seu ARN. Anote o nome da função RAM e o ARN para uso posterior.-
Na página Roles, clique em o nome da função RAM criada, por exemplo,
alivc-demo-role. Clique em a aba Trust Policy, selecione Edit Trust Policy e modifique a política de confiança conforme abaixo:{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "ecs.aliyuncs.com" ] } } ], "Version": "1" }Essa política define a função como uma função de serviço, permitindo que o serviço de nuvem confiável (ECS) a assuma. Se a política de confiança não for modificada, não será possível anexar a função RAM a uma instância ECS.
Defina o parâmetro Instance ID como
["Instance ID"]. -
Anexe a função RAM à instância ECS.
Utilize a API AttachInstanceRamRole do ECS no OpenAPI Explorer. Para mais informações, consulte OpenAPI Explorer.
NotaRegionId: ID da região onde sua instância ECS está localizada, por exemplo, China (Shanghai). Essa informação está disponível no console ECS.
RamRoleName: Nome da função RAM. Este exemplo utiliza
alivc-demo-role.InstanceIds: ID da instância ECS do lado do servidor à qual você deseja anexar a função RAM. Consulte o console ECS para obter esse valor. O ID deve estar no formato de array, por exemplo:
["i-bp135jrddxxf9tgo****"].
Clique em Initiate Call. Uma chamada bem-sucedida retorna uma mensagem de sucesso nos resultados de depuração à direita.
-
Execute o comando a seguir no terminal do ECS para verificar se a função RAM está associada à instância ECS.
curl http://100.100.100.200/latest/meta-data/ram/security-credentials/alivc-demo-role
A resposta a seguir indica que a autorização temporária STS foi bem-sucedida e que a função RAM está associada à instância ECS.
{ "AccessKeyId" : "STS.XXXXXXXXXXXX", "AccessKeySecret" : "XXXXXXXXXXXXXXXX", "Expiration" : "2020-11-20T14:33:31Z", "SecurityToken" : "XXXXXXXXXXXXXXXXXXXXXX", "LastUpdated" : "2020-11-20T08:33:31Z", "Code" : "Success" }NotaCada instância ECS pode ter apenas uma função RAM anexada. Para alterar a função RAM anexada, primeiro chame DetachInstanceRamRole no OpenAPI Explorer para desanexar a função atual da instância ECS. Em seguida, use AttachInstanceRamRole para anexar a nova função RAM.
-
Configure as informações relacionadas ao RAM.
-
Edite o arquivo de configuração do código-fonte.
vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties
-
Pressione I e modifique o arquivo conforme o exemplo abaixo.
roleArn = acs:ram::xxx:role/alivc-demo-role roleSessionName = vod-session roleName = alivc-demo-role# The following block contains outdated examples and should be ignored.NotaO parâmetro
REGION_CN_HANGZHOUfoi descontinuado. UtilizeVOD_REGIONIDem seu lugar, conforme especificado na seção de configuração do ApsaraVideo VOD.roleArnespecifica o ARN obtido no console RAM.roleSessionNameespecifica o nome da sessão para o token temporário. Você pode personalizar esse nome.roleNameespecifica o nome da função RAM obtido no console RAM. Neste exemplo, o nome éalivc-demo-role.
Pressione Esc, insira :wq! para salvar e sair.
-
-
Configure o ApsaraVideo VOD.
-
Edite o arquivo de configuração do código-fonte.
vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties
-
Pressione I e modifique os parâmetros conforme necessário.
# Transcoding template ID TEMPLATEGROUP_ID = xxx LONGVIDEO_TRANSCODE_TEMPLATEGROUP_ID = xxxxxxxx TAB_TEMPLATEGROUP_ID = xxxxxxxx # Domain name DOMAIN_NAME = http://xxx:8080/ AVATAR_DOMAIN_NAME = http://xxx:8080/resource/ AVATAR_URL = 1.png,2.png VOD_REGIONID = cn-hangzhou # Policy for ApsaraVideo VOD services policy = {"Version": "1", "Statement": [ {"Action": ["vod:*"], "Resource": ["*" ],"Effect": "Allow"}]} # Taihe Music appkey OPEN_API_URL = https://xxxxxxxx.xxxxxxxx.com Q_SOURCE = xxxxxxxx CALLBACK_PRIVETEKEY = VodTest01 CALLBACK_NAME = http://xxx:8080/vodcallback/callback APP_ID = app-1000000 AUDIT_SETTINGS_FLAG = on auth_key = xxxxx live_domain = http://xxxxx.aliyuncs.com package_name = IOS,ANDROID,TEST,com.aliyun.apsara.svideo,com.aliyun.apsaravideo,com.aliyun.solution.longvideoParâmetro
Obrigatório
Descrição
TEMPLATEGROUP_ID
Sim
ID do grupo de modelos de transcodificação. Para mais informações, consulte Grupos de modelos de transcodificação.
LONGVIDEO_TRANSCODE_TEMPLATEGROUP_ID
Não
Grupo de modelos de transcodificação utilizado para vídeos longos em um fluxo de trabalho de publicação antes da revisão.
TAB_TEMPLATEGROUP_ID
Não
ID do grupo de modelos de transcodificação Narrowband HD. Após a configuração, você pode recomendar vídeos Narrowband HD no console. Se este ID não for definido, as tentativas de recomendação de vídeos Narrowband HD falharão.
DOMAIN_NAME
Sim
Endereço da instância ECS. Exemplo: http://10.10.10.101:8080/.
AVATAR_DOMAIN_NAME
Não
Endereço para recursos de avatar, correspondente ao endereço de recursos estáticos da instância ECS. Exemplo: http://10.10.10.101:8080/resource/.
AVATAR_URL
Não
Lista separada por vírgulas com os nomes dos arquivos de imagem de avatar, como
1.png,2.png.NotaColoque os arquivos de imagem de avatar correspondentes,
1.pnge2.png, no diretório /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/webapp/resource. Se o serviço de avatar não for configurado, os usuários móveis ficarão sem avatares, mas as demais funções não serão afetadas.VOD_REGIONID
Sim
Região onde o serviço ApsaraVideo VOD está localizado. Exemplo: cn-shanghai.
policy
Sim
Política que restringe ainda mais as permissões quando a função é assumida. Para mais informações, consulte Usar políticas RAM para autorização personalizada.
CALLBACK_PRIVETEKEY
Sim
Chave privada para autenticação de callback. Para mais informações, consulte Callback Settings.
CALLBACK_NAME
Sim
URL de callback. Exemplo: http://<Public_IP_of_ECS_instance>:8080/vodcallback/callback. Este exemplo utiliza http://10.10.10.101:8080/vodcallback/callback.
AUDIT_SETTINGS_FLAG
Sim
Define o modo de revisão de conteúdo. Valor padrão:
on. Valores válidos:-
on: revisão antes da publicação.
-
off: publicação antes da revisão.
package_name
Sim
Nomes de pacote válidos para o interceptor. Separe múltiplos nomes de pacote com vírgulas. O valor padrão é
IOS,ANDROID,TEST,com.aliyun.apsara.svideo,com.aliyun.apsaravideo,com.aliyun.solution.longvideo.Nota-
com.aliyun.apsara.svideoé o nome do pacote para o cliente Android neste exemplo. -
Se o Bundle Identifier do seu cliente iOS já estiver registrado, o cliente não poderá ser executado. Utilize um Bundle Identifier personalizado, como
com.<Company_name>.<Project_name>, para a assinatura do cliente iOS e adicione-o ao parâmetropackage_namepara garantir acesso válido. -
O interceptor permite que apenas aplicativos móveis com nomes de pacote válidos acessem o servidor. Caso contrário, as solicitações do cliente móvel serão negadas com um erro
403 Forbidden.
-
Pressione Esc, insira :wq! para salvar e sair.
-
-
Execute o serviço.
-
Compile e empacote o código.
cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226
mvn clean package -Dmaven.test.skip=true
NotaSe o Maven não estiver instalado, execute apt install maven para instalá-lo.
O tempo de empacotamento depende da largura de banda e do desempenho da instância. Neste exemplo, o empacotamento inicial leva cerca de 30 minutos.
Após a conclusão do empacotamento, o arquivo
sdk-api-0.0.1-SNAPSHOT.jarserá gerado no diretório/home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/target/. -
Implante o arquivo JAR e inicie o serviço.
cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/target
nohup java -jar sdk-api-0.0.1-SNAPSHOT.jar &
NotaAo executar o comando, um prompt nohup aparecerá. Pressione Enter para rodar o programa em segundo plano.
Após a execução do comando, um arquivo de log chamado
nohup.outserá gerado no diretório atual. Execute o comando cat nohup.out para visualizar o log. Se o log contiver a mensagemstart success, o serviço foi iniciado com sucesso.Se sua instância ECS tiver pouca memória e você precisar reempacotar e reimplementar o código-fonte do servidor, execute o comando jps para visualizar o ID do processo do programa JAR em execução. Em seguida, execute o comando kill -9 <JAR_process_ID> para encerrar o processo antes de reempacotar e reimplementar novamente. Caso contrário, o processo de empacotamento falhará devido à falta de memória.
-