Multiple component installations
- Last Updated: May 13, 2026
- 2 minute read
- Semaphore
- Documentation
There may be situations where multiple installations of Semaphore components on a given server. Generally this is not advised as in most cases you can:
- Partition model data within each component, for example in Classification server you can use different rulebase classes then filter the results; OR
- Use physically separate installations (multiple servers)
In any case it should be noted that the number of physical cores the components can be run on, regardless of number of physical machines, is limited by the Semaphore licence purchased.
If neither of the above conditions are feasible, for example when server resources are extremely limited, then it is possible to manually configure a single instance of Classification Server to listen on separate ports, and providing a different set of rulebases on each however note that this is a custom configuration that may cause complications when upgrading the software or moving the software to different servers.
Note: Before considering this approach, it is advised you contact your Progress account representative to confirm this is required.
Multiple Classification Server installations
Classification Server is installed via a RPM into a pre-configured Linux directory structure. However if you wish to have multiple instances you can do so with the same physical installation by duplicating the configuration and directory layout as described below:
- Install Classification Server (as normal) - If not already installed.
- Duplicate “var” directory entries - Create duplicate directories for each of the sub-directories under “/var/opt/semaphore/CS/” (renaming logically). For example “logs-second”, “tmp-second”, etc.
- Duplicate configuration file - In the “/etc/opt/semaphore/CS/conf/” directory create a copy of the “config.xml” file (renaming logically). For example “config-second.xml”.
- Update the new configuration file - Update the new configuration file (e.g. “config-second.xml”) to replace all instances of the directories duplicated above (e.g. “logs”, “rulebases”, “stats”, etc) with their new names. You will also need to alter any TCP/IP port numbers used by this instance so they do not conflict with the existing service (the default port numbers for later versions of Classification Server are 5058 and 5059 so you could chose, say, 5060 and 5061 for a second instance remembering that firewall changes may be required to allow access to these new ports). At this point you may also wish to update the new configuration file with any other configuration changes you require for the new instance.
- Create a new service - In the “/usr/lib/systemd/system/” directory create a copy of the “semaphore-cs.service” file (renaming logically). For example “semaphore-cs-second.service”.
- Update the new service configuration - Update the new service file (e.g. “semaphore-cs-second.service”) to alter the “ExecStart” line to the following (as appropriate):
ExecStart=/opt/semaphore/CS/bin/ClassificationServer --daemon /etc/opt/semaphore/CS/conf/<New Configuration File Name> - Update the new service to start on re-boot - Execute the following commands:
systemctl daemon-reload systemctl enable <New Service Name> - Start the new service - You can now start the new Classification Server instance using:
systemctl start <New Service Name>