Le serveur ApsaraVideo for Short Video gère les échanges de données avec l'application cliente et ApsaraVideo VOD, traite la logique métier et administre les données opérationnelles. Cette rubrique décrit le processus d'intégration côté serveur.
Prérequis
-
Créez un compte Alibaba Cloud et effectuez la vérification d'identité. Pour créer un compte Alibaba Cloud, rendez-vous sur le site web officiel d'Alibaba Cloud. Pour plus d'informations, consultez la rubrique Créer un compte Alibaba Cloud.
Avoir activé ECS et effectué les configurations requises. Pour plus d'informations, consultez la rubrique Activer et configurer ECS.
Avoir installé JDK 8 sur votre instance ECS.
Avoir installé une base de données MySQL 5.7 sur votre instance ECS. Pour plus d'informations, consultez la rubrique Installer et configurer une base de données MySQL. Une fois votre service en production, utilisez ApsaraDB RDS pour bénéficier d'une meilleure stabilité et de meilleures performances. Pour plus d'informations, consultez la page ApsaraDB RDS.
Avoir activé ApsaraVideo VOD et configuré les modèles requis dans la console. Pour plus d'informations, consultez la rubrique Activer et configurer ApsaraVideo VOD.
Procédure
Télécharger le code source
Téléchargez le code source du serveur d'applications (AppServer) et de la console de gestion d'ApsaraVideo for Short Video. Pour obtenir le lien de téléchargement, consultez la rubrique ApsaraVideo for Short Video.
-
Sur le serveur où le fichier source est stocké, exécutez la commande suivante pour transférer le package de code source vers l'instance 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/
ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip correspond au fichier de code source, user au nom d'utilisateur de l'instance ECS, 10.0.0.0 à l'adresse IP de l'instance ECS et /home/user/workspace/ au chemin de destination.
RemarqueLe fichier de code source, le nom d'utilisateur ECS, l'adresse IP de l'instance ECS et le chemin de destination sont donnés à titre d'exemple. Remplacez les valeurs exemples par vos informations réelles.
-
Connectez-vous à l'instance ECS et décompressez le package de code source.
cd /home/user/workspace
unzip ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip
RemarqueSi unzip n'est pas installé, exécutez la commande sudo apt install unzip.
Initialiser et configurer la base de données
Vous pouvez constituer une bibliothèque musicale autonome.
La structure de données renvoyée par votre service doit correspondre à celle du service Alibaba Cloud pour la récupération des listes de musique ; sinon, la récupération échouera.
Si vous utilisez une structure de données personnalisée, adaptez la logique du code dans la couche de démonstration.
-
Créez une base de données nommée voddemo.
cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/sql
mysqladmin -u root -p create voddemo
-
Créez une table et un compte administrateur.
mysql -u root -p voddemo < ./appserver_create_table.sql
RemarqueOutre la création de la table, le script appserver_create_table.sql utilise une instruction INSERT pour créer un compte administrateur de console dont le nom d'utilisateur est
adminet le mot de passe123456. Vous pourrez utiliser ce compte pour vous connecter à la console de démonstration en tant qu'administrateur une fois l'intégration de la console effectuée. -
Modifiez la règle de sensibilité à la casse de la base de données.
-
Modifiez le fichier de configuration de la base de données.
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
Appuyez sur la touche I et ajoutez
lower_case_table_names=1à la fin du fichier.Appuyez sur Esc, puis saisissez :wq! pour enregistrer et quitter.
-
Redémarrez la base de données pour que la modification prenne effet.
sudo service mysql restart
-
-
Configurez l'adresse de la base de données.
-
Modifiez le fichier de configuration du code source.
vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties
-
Appuyez sur I et modifiez les paramètres suivants.
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>RemarqueSi la base de données et le serveur s'exécutent sur la même instance ECS, vous pouvez définir l'adresse IP de la base de données sur 127.0.0.1. Sinon, utilisez l'adresse IP de la machine hébergeant la base de données.
La base de données créée lors de l'initialisation se nomme voddemo.
Appuyez sur Esc, puis saisissez :wq! pour enregistrer et quitter.
-
Configurer un rôle RAM
Suivez les étapes décrites dans la rubrique Créer un rôle. Après avoir sélectionné les autorisations à l'étape 6, poursuivez avec les étapes ci-dessous. Vous pouvez définir un nom de rôle personnalisé. Cette rubrique utilise
alivc-demo-roleà titre d'exemple.Sur la page Roles, cliquez sur le nom du rôle RAM que vous avez créé, par exemple
alivc-demo-role, afin de trouver son ARN. Notez le nom du rôle RAM et l'ARN pour une utilisation ultérieure.-
Sur la page Roles, cliquez sur le nom du rôle RAM que vous avez créé, par exemple
alivc-demo-role. Cliquez sur l'onglet Trust Policy, puis sur Edit Trust Policy et modifiez la stratégie d'approbation comme suit :{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "ecs.aliyuncs.com" ] } } ], "Version": "1" }Cette stratégie définit le rôle comme un rôle de service, ce qui permet au service cloud de confiance (ECS) de l'endosser. Si la stratégie d'approbation n'est pas modifiée, le rôle RAM ne peut pas être attaché à une instance ECS.
Le paramètre Instance ID doit être défini sur
["Instance ID"]. -
Attachez le rôle RAM à l'instance ECS.
Utilisez l'API AttachInstanceRamRole d'ECS dans OpenAPI Explorer. Pour plus d'informations, consultez la page OpenAPI Explorer.
RemarqueRegionId : identifiant de la région où se trouve votre instance ECS, par exemple China (Shanghai). Vous trouverez cette information dans la console ECS.
RamRoleName : nom du rôle RAM. Cet exemple utilise
alivc-demo-role.InstanceIds : identifiant de l'instance ECS côté serveur à laquelle vous souhaitez attacher le rôle RAM. Vous trouverez cet identifiant dans la console ECS. L'identifiant doit être au format tableau, par exemple :
["i-bp135jrddxxf9tgo****"].
Cliquez sur Initiate Call. Un appel réussi affiche un message de succès dans les résultats de débogage situés à droite.
-
Exécutez la commande suivante dans le terminal ECS pour vérifier que le rôle RAM est associé à l'instance ECS.
curl http://100.100.100.200/latest/meta-data/ram/security-credentials/alivc-demo-role
La réponse suivante indique que l'autorisation temporaire STS a abouti et que le rôle RAM est associé à l'instance ECS.
{ "AccessKeyId" : "STS.XXXXXXXXXXXX", "AccessKeySecret" : "XXXXXXXXXXXXXXXX", "Expiration" : "2020-11-20T14:33:31Z", "SecurityToken" : "XXXXXXXXXXXXXXXXXXXXXX", "LastUpdated" : "2020-11-20T08:33:31Z", "Code" : "Success" }RemarqueChaque instance ECS ne peut être associée qu'à un seul rôle RAM. Pour changer le rôle RAM attaché, appelez d'abord l'API DetachInstanceRamRole dans OpenAPI Explorer afin de détacher le rôle actuel de l'instance ECS, puis utilisez l'API AttachInstanceRamRole pour attacher le nouveau rôle RAM.
-
Configurez les informations relatives à RAM.
-
Modifiez le fichier de configuration du code source.
vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties
-
Appuyez sur I et modifiez le fichier selon l'exemple ci-dessous.
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.RemarqueLe paramètre
REGION_CN_HANGZHOUest obsolète. Utilisez plutôtVOD_REGIONID, tel que spécifié dans la section de configuration d'ApsaraVideo VOD.roleArnspécifie l'ARN obtenu depuis la console RAM.roleSessionNamespécifie le nom de session pour le jeton temporaire. Vous pouvez personnaliser ce nom.roleNamespécifie le nom du rôle RAM obtenu depuis la console RAM. Dans cet exemple, le nom estalivc-demo-role.
Appuyez sur Esc, puis saisissez :wq! pour enregistrer et quitter.
-
-
Configurez ApsaraVideo VOD.
-
Modifiez le fichier de configuration du code source.
vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties
-
Appuyez sur I et modifiez les paramètres selon vos besoins.
# 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.longvideoParamètre
Obligatoire
Description
TEMPLATEGROUP_ID
Oui
Identifiant du groupe de modèles de transcodage. Pour plus d'informations, consultez la page Groupes de modèles de transcodage.
LONGVIDEO_TRANSCODE_TEMPLATEGROUP_ID
Non
Groupe de modèles de transcodage utilisé pour les vidéos longues dans un workflow de publication avant revue.
TAB_TEMPLATEGROUP_ID
Non
Identifiant du groupe de modèles de transcodage Narrowband HD. Une fois configuré, vous pouvez recommander des vidéos Narrowband HD dans la console. Si cet identifiant n'est pas défini, les tentatives de recommandation de vidéos Narrowband HD échoueront.
DOMAIN_NAME
Oui
Adresse de l'instance ECS. Exemple : http://10.10.10.101:8080/.
AVATAR_DOMAIN_NAME
Non
Adresse des ressources d'avatar, correspondant à l'adresse des ressources statiques de l'instance ECS. Exemple : http://10.10.10.101:8080/resource/.
AVATAR_URL
Non
Liste séparée par des virgules des noms de fichiers d'images d'avatar, tels que
1.png,2.png.RemarquePlacez les fichiers d'image d'avatar correspondants,
1.pnget2.png, dans le répertoire /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/webapp/resource. Si le service d'avatar n'est pas configuré, les utilisateurs mobiles n'auront pas d'avatars, mais les autres fonctions ne seront pas affectées.VOD_REGIONID
Oui
Région où se situe le service ApsaraVideo VOD. Exemple : cn-shanghai.
policy
Oui
Stratégie qui restreint davantage les autorisations lorsque le rôle est endossé. Pour plus d'informations, consultez la rubrique Utiliser des stratégies RAM pour une autorisation personnalisée.
CALLBACK_PRIVETEKEY
Oui
Clé privée pour l'authentification des callbacks. Pour plus d'informations, consultez la page Paramètres de callback.
CALLBACK_NAME
Oui
URL de callback. Exemple : http://<Public_IP_of_ECS_instance>:8080/vodcallback/callback. Cet exemple utilise http://10.10.10.101:8080/vodcallback/callback.
AUDIT_SETTINGS_FLAG
Oui
Spécifie le mode de révision du contenu. Valeur par défaut :
on. Valeurs valides :-
on : revue avant publication.
-
off : publication avant revue.
package_name
Oui
Noms de packages valides pour l'intercepteur. Séparez plusieurs noms de packages par des virgules. La valeur par défaut est
IOS,ANDROID,TEST,com.aliyun.apsara.svideo,com.aliyun.apsaravideo,com.aliyun.solution.longvideo.Remarque-
com.aliyun.apsara.svideoest le nom du package pour le client Android dans cet exemple. -
Si l'identifiant Bundle de votre client iOS est déjà enregistré, le client ne pourra pas s'exécuter. Vous devez utiliser un identifiant Bundle personnalisé, tel que
com.<Company_name>.<Project_name>, pour la signature du client iOS et l'ajouter au paramètrepackage_nameafin de garantir un accès valide. -
L'intercepteur n'autorise l'accès au serveur qu'aux applications mobiles disposant de noms de packages valides. Dans le cas contraire, les requêtes provenant du client mobile seront refusées avec une erreur
403 Forbidden.
-
Appuyez sur Esc, puis saisissez :wq! pour enregistrer et quitter.
-
-
Exécutez le service.
-
Compilez et empaquetez le code.
cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226
mvn clean package -Dmaven.test.skip=true
RemarqueSi Maven n'est pas installé, exécutez la commande apt install maven pour l'installer.
Le temps d'empaquetage dépend de la bande passante et des performances de l'instance. Dans cet exemple, l'empaquetage initial prend environ 30 minutes.
Une fois l'empaquetage terminé, le fichier
sdk-api-0.0.1-SNAPSHOT.jarest généré dans le répertoire/home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/target/. -
Déployez le fichier JAR et démarrez le service.
cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/target
nohup java -jar sdk-api-0.0.1-SNAPSHOT.jar &
RemarqueLorsque la commande est exécutée, une invite nohup apparaît. Appuyez sur Entrée pour exécuter le programme en arrière-plan.
Après l'exécution de la commande, un fichier journal nommé
nohup.outest généré dans le répertoire courant. Exécutez la commande cat nohup.out pour afficher le journal. Si le journal contient le messagestart success, le service a démarré avec succès.Si votre instance ECS dispose de peu de mémoire et que vous devez réempaqueter et déployer le code source du serveur, vous pouvez exécuter la commande jps pour afficher l'identifiant du processus du programme JAR en cours d'exécution, puis exécuter la commande kill -9 <JAR_process_ID> pour terminer le processus avant de procéder à un nouvel empaquetage et déploiement. Sinon, le processus d'empaquetage échouera en raison d'une mémoire insuffisante.
-