The short video AppServer is used to exchange data between the short video application and ApsaraVideo VOD, process business logic, and manage operations data. This topic describes how to build the short video AppServer.

Prerequisites

Procedure

Upload the source code
  1. Download the short video AppServer and the source code of the console. For more information, see SDK download.
  2. Run the following command on the server where the SDK package is saved to upload the source code package to the ECS instance:
    scp <Source code package> root@<IP address of the ECS instance>:<Path where the the source code package is uploaded to>
    scp ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip root@10.0.0.0:/root/workspace/

    In this example, the source code package is ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip. The username that is used to log on to the ECS instance is root. The IP address of the ECS instance is 10.0.0.0. The upload path is /root/workspace/.

    Note The preceding sample information, including the source code package, the username for logging on to the ECS instance, the IP address of the ECS instance, and the upload path, are used as examples in the following steps. Set these parameters based on your needs in actual use.
  3. Log on to the ECS instance and decompress the source code package.
    cd /root/workspace
    unzip ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip
    Note If the unzip tool is not installed, run the apt install unzip command to install the unzip tool.
Initialize and configure a database
Note You can create a self-managed database for your music files.
  • Make sure that the query results that are returned by the database use the data structure defined by ApsaraVideo VOD. Otherwise, ApsaraVideo VOD cannot obtain music data from the database.
  • If your database uses a custom data structure, modify the downloaded demo code so that ApsaraVideo VOD supports the data structure.
  1. Create a database named voddemo.

    cd /root/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/sql

    mysqladmin -u root -p create voddemo

  2. Create a table and an administrator account.
    mysql -u root -p voddemo < ./appserver_create_table.sql
    Note The appserver_create_table.sql script creates a table and uses an INSERT statement to create a console administrator account. The username of the account is admin, and the password is 123456. After you build the short video console, you can use the administrator account to log on to the short video console.
  3. Modify the case sensitivity check rule for the database.
    1. Edit the configuration file of the database.

      vim /etc/mysql/mysql.conf.d/mysqld.cnf

    2. Press the I key and add lower_case_table_names=1 to the end of the configuration file.
    3. Press the Esc key and enter :wq! to save and close the file.
    4. Restart the database for the configuration to take effect.

      service mysql restart

  4. Configure the logon information of the database.
    1. Edit the configuration file of the source code.

      vim /root/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties

    2. Press the I key to edit the configuration file.
      spring.datasource.url=jdbc: mysql:// Database IP address (example: 127.0.0.1):3306/Database name (example: voddemo)?useSSL=false&useUnicode=true&characterEncoding=UTF-8
      spring.datasource.username = The username that is used to log on to the database. Example: root.
      spring.datasource.password = The password that is used to log on to the database.
      Note
      • If both the database and the AppServer are run on the ECS instance, set the IP address of the database to 127.0.0.1. Otherwise, set the IP address of the database to that of the server on which the database is run.
      • A database named voddemo is being initialized.
    3. Press the Esc key and enter :wq! to save and close the file.
Configure a RAM role
  1. Follow the procedure described in A RAM role is created. For more information, see Create a role and grant temporary access permissions to the role by using STS. to create a RAM role. After you select a policy for the RAM role, perform the following steps to configure the RAM role. You can set the name of the RAM role as needed. In this example, the name of the RAM role is alivc-demo-role.
  2. On the Roles page, click the name of the created RAM role alivc-demo-role to view the Alibaba Cloud Resource Name (ARN) of the RAM role. We recommend that you save the name and ARN of the RAM role in a file on your PC for subsequent use.
  3. On the Roles page, click the name of the created RAM role alivc-demo-role. On the details page of the RAM role, click the Trust Policy Management tab. On the Trust Policy Management tab, click Edit Trust Policy. In the Edit Trust Policy panel, modify the trust policy.
    {
        "Statement": [
            {
                "Action": "sts:AssumeRole", 
                "Effect": "Allow", 
                "Principal": {
                    "Service": [
                        "ecs.aliyuncs.com"
                    ]
                }
            }
        ], 
        "Version": "1"
    }

    The trust policy indicates that the RAM role is a service-linked role, which can be assigned to the trusted Alibaba Cloud service ECS. If you do not modify the trust policy, you cannot assign the RAM role to the ECS instance.

    The ID of the ECS instance must be specified in the ["Instance ID"] format.

  4. Assign the RAM role to the ECS instance.

    Call the AttachInstanceRamRole operation that is provided by ECS in OpenAPI Explorer. For more information, see OpenAPI Explorer.

    Note
    • RegionId: the ID of the region in which the ECS instance resides, such as China (Shanghai). You can go to the ECS console to obtain the region ID of the instance.
    • RamRoleName: the name of the RAM role. In this example, the name of the RAM role is alivc-demo-role.
    • InstanceIds: the ID of the ECS instance. You can go to the ECS console to view the ID of the instance. You must enter the instance ID in the format of an array. Example: ["i-bp135jrddxxf9tgo****"].

    Click Initiate Call. After the call succeeds, a success response is displayed on the Response tab on the right part of the page.

  5. Run the following command on the ECS instance to check whether the RAM role is assigned to the ECS instance:
    curl http://100.100.100.200/latest/meta-data/ram/security-credentials/alivc-demo-role
    If the output contains the following Security Token Service (STS) authorization information, the RAM role is assigned to the ECS instance:
    {
    "AccessKeyId" : "STS.XXXXXXXXXXXX",
    "AccessKeySecret" : "XXXXXXXXXXXXXXXX",
    "Expiration" : "2020-11-20T14:33:31Z",
    "SecurityToken" : "XXXXXXXXXXXXXXXXXXXXXX",
    "LastUpdated" : "2020-11-20T08:33:31Z",
    "Code" : "Success"
    }
    Note You can assign only one RAM role to an ECS instance. To change the RAM role, call the DetachInstanceRamRole operation in OpenAPI Explorer to remove the RAM role from the ECS instance. Then, call the AttachInstanceRamRole operation to assign another RAM role to the ECS instance.
  6. Configure the information about RAM.
    1. Edit the configuration file of the source code.

      vim /root/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties

    2. Press the I key to edit the configuration file.
      roleArn = XXXXXXX:role/alivc-demo-role
      roleSessionName = vod-role
      roleName = alivc-demo-role
      server_config_03
      Note
      • REGION_CN_HANGZHOU: the region where your ApsaraVideo VOD service is activated. For example, cn-shanghai indicates the China (Shanghai) region.
      • roleArn: the ARN of the RAM role that you obtain from the RAM console.
      • roleSessionName: the name of the session that uses a temporary token. You can enter the session name as needed.
      • roleName: the name of the RAM role that is obtained from the RAM console. In this example, the name of the RAM role is alivc-demo-role.
    3. Press the Esc key and enter :wq! to save and close the file.
  7. Configure the information about ApsaraVideo VOD.
    1. Edit the configuration file of the source code.
      vim /root/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties
    2. Press the I key to edit the configuration file.
      server_config_04
      Parameter Required Description
      TEMPLATEGROUP_ID Yes The ID of the transcoding template group. You can obtain the ID from the Transcoding Template Groups page in the ApsaraVideo VOD console.
      LONGVIDEO_TRANSCODE_TEMPLATEGROUP_ID No The ID of the transcoding template group that is used to review long videos after they are released.
      TAB_TEMPLATEGROUP_ID No The ID of the Narrowband HD transcoding template group. To recommend Narrowband HD-transcoded videos in your short video console, you must set this parameter. Otherwise, an error occurs when you recommend Narrowband HD-transcoded videos.
      DOMAIN_NAME Yes The address of the ECS instance. In this example, the address is http://10.10.10.101:8080/.
      AVATAR_DOMAIN_NAME No The address of the profile pictures, which is the address of static resources on the ECS instance. In this example, the address is http://10.10.10.101:8080/resource/.
      AVATAR_URL No The names of profile pictures, such as 1.png,2.png.
      Note Store the profile pictures 1.png and 2.png in the /root/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/webapp/resource directory. If you do not configure the profile picture feature, users cannot use profile pictures on mobile clients. Other features are not affected.
      VOD_REGIONID Yes The ID of the region where ApsaraVideo VOD is activated. In this example, this parameter is set to cn-shanghai.
      policy Yes The permissions added when a role is assumed.
      OPEN_API_URL No The URL that is used to connect to the DMH platform of Taihe Music Group. For more information, visit DMH.
      Note The DMH platform of Taihe Music Group offers online music resources for short videos. The DMH platform provides tens of thousands of high-quality songs of various genres and is licensed to distribute the songs. You can access these music resources by using SDKs or calling API operations. DMH charges a fee for using online music resources based on the number of calls made to the resources. For more information, Submit a ticket.
      Q_SOURCE No
      CALLBACK_PRIVETEKEY Yes The key that is used for callback authentication. You can obtain the key from the Callback page in the ApsaraVideo VOD console.
      CALLBACK_NAME Yes The callback URL, in the format of http://Public IP address of the ECS instance:8080/vodcallback/callback. In this example, the callback URL is http://10.10.10.101:8080/vodcallback/callback.
      AUDIT_SETTINGS_FLAG Yes Specifies whether to review videos before the videos are released. Default value: on. Valid values:
      • on: Review videos before the videos are released.
      • off: Review videos after the videos are released.
      auth_key No The configurations for live streaming. If you do not set the parameters, the no data found message appears on the live streaming page. The current edition of the short video AppServer does not provide the source code of live streaming. To use the live streaming feature, submit a ticket to apply for the source code of the preview edition.
      live_domain No
      package_name Yes The names of valid packages that are allowed by the interceptor. Separate multiple package names with commas (,). Default value: IOS,ANDROID,TEST,com.aliyun.apsara.svideo,com.aliyun.apsaravideo,com.aliyun.solution.longvideo.
      Important
      • com.aliyun.apsara.svideo is the name of the short video solution for Android package that is used in this example.
      • If you use a bundle ID that has been registered, the short video client for iOS cannot connect to the AppServer. You must create a bundle ID in the com.<Company name>.<Project name> format. The bundle ID is used to calculate the signature for the short video client for iOS. You must contain the bundle ID in the value of the package_name parameter to ensure normal access.
      • The interceptor allows only the mobile apps that have the specified valid packages to access the AppServer. When other mobile apps try to access the AppServer, the request fails and an error message is returned. Example: Request failed:forbidden (403).
    3. Press the Esc key, enter :wq!, and then press the Enter key to save your changes and exit the edit mode.
  8. Run the service.
    1. Compile and package the files.
      cd /root/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226

      mvn clean package -Dmaven.test.skip=true

      Note
      • If Maven is not installed, run the apt install maven command to install it.
      • The packaging duration depends on the bandwidth and performance of the ECS instance. In this example, the duration of the first packaging is around 30 minutes.

      After the packaging is complete, the sdk-api-0.0.1-SNAPSHOT.jar file is generated in the /root/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/target/ directory.

    2. Deploy the JAR package and start the service.
      cd /root/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/target

      nohup java -jar sdk-api-0.0.1-SNAPSHOT.jar &

      Note
      • When the command is run, the nohup command is triggered. Press the Enter key to run the program in the background.
      • After the command is run, the log file nohup.out is generated in the current directory. You can run the cat nohup.out command to view the log. If the log contains start success, the service is started.
      • The ECS instance that you purchase may have limited idle memory. If you want to repackage and deploy the source code of the AppServer, run the jps command to query the process ID (PID) of the current JAR program. Then, run the kill -9 JAR program PID command to stop the program. After that, you can repackage and deploy the source code. Otherwise, the packaging may fail due to insufficient memory.