KB111: Installing Character Server on Linux

On Linux, the Character Server consists of a single CGI application called 'animate'.

To integrate it with apache, you can unzip it into the /var/www/cgi-bin directory, then add the following line to your apache config file (/etc/httpd/conf/httpd.conf):

ScriptAliasMatch "^/animate(.*)" "/var/www/cgi-bin/animate$1"

Now, requests to


will be routed to the animate cgi app. Next, you will need to give it execute permissions, with

$ sudo chmod a+x /var/www/cgi-bin/animate

The 'animate' app has a dependency on Cairo 2, a vector rendering engine. To install this dependency use:

$ sudo yum install libcairo2

Next, you will need 4 subdirectories under the 'animate' executable named 'library', 'partials', 'results', and 'logs'.

The 'library' directory must contain the two subdirectories 'characters' and 'addons'. The contents of these can be populated from the Characters and Addons directories of a Character Builder installation, located under "Program Files (x86)\Character Builder\Library". This is one of the two locations where character and addon products are installed - the other location is "Users\username\AppData\Roaming\Media Semantics\Library".

animate library characters SusanHead ... addons RW2HeadHairPack1 ... partials results logs

The 'partials', and 'results' folders are caches, while 'logs' contains log files. They should be made writable as follows:

$ cd /var/www/cgi-bin/ $ sudo chgrp apache partials $ sudo chgrp apache results $ sudo chgrp apache logs $ sudo chmod g+rwx partials $ sudo chmod g+rwx results $ sudo chmod g+rwx logs

The 'library' tree will need read+execute permissions on all folders and read permission on all files.

$ sudo -R chgrp apache library $ sudo chmod -R g+rX library

Finally, you can set up a config file. The 'animate' executable will load '/etc/animate/conf/animate.conf' on each run. The main reason for using a config file is to specify whether results are cached, and a list of domain names that the API can be called from, with the 'domains' parameter:

cacheresults=true domains=mydomain.com,yourdomain.com

Without a 'domains' entry, requests from any domain will be honored.

Copyright © 2019 Media Semantics, Inc. All rights reserved.
Comments? Write webmaster@mediasemantics.com.
See our privacy policy.