Installing FIXEdge RPM package on Linux (RHEL 7+)
Introduction
FIXEdge can be installed using RPM packages on Red Hat Enterprise Linux 7 and newer and binary compatible distributions. RPM package features support for controlling FIXEdge via systemd and running under a constrained user account.
Installing FIXEdge
- Add the repository file
sudo tee -a /etc/yum.repos.d/fixedge.repo << EOF [fixedge] name=fixedge baseurl=https://USERNAME:PASSWORD@packages.b2bits.com/fixedge skip_if_unavailable=true deltarpm=0 sslverify=false gpgcheck=0 EOF
Replace the USERNAME and PASSWORD with ones received from B2BITS sales.
2. Clear the repository cache
sudo yum clean all
3. Install the package
sudo yum -y install fixedge fixicc-agent
If you need to install the latest version of the package that is in the repository, just specify the package name 'fixedge'. If you need to install an earlier version you must specify the version with the name of the package, e.g. 'fixedge-6.11.0-1664.el7.x86_64'. You can also use the 'yum provides fixedge' command to find out what package versions are in the repository.
$ yum provides fixedge Loaded plugins: fastestmirror Determining fastest mirrors * base: mirror.datacenter.by * extras: mirror.datacenter.by * updates: mirror.datacenter.by fixedge 8/8 fixedge-6.11.0-411.el7.x86_64 : FIXEdge - smart FIX message router Repo : fixedge fixedge-6.11.2-440.el7.x86_64 : FIXEdge - smart FIX message router Repo : fixedge fixedge-6.11.3-441.el7.x86_64 : FIXEdge - smart FIX message router Repo : fixedge fixedge-6.11.4-450.el7.x86_64 : FIXEdge - smart FIX message router Repo : fixedge
4. Add a user to the 'fixedge' group
sudo usermod -aG fixedge $(whoami)
5. Copy engine.license to /etc/fixedge
sudo cp engine.license /etc/fixedge/
6. Start the 'fixedge' service
systemctl start fixedge
7. Check the status of the service
$ systemctl status fixedge ● fixedge.service - FIXEdge - smart FIX message router Loaded: loaded (/usr/lib/systemd/system/fixedge.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2021-05-01 01:04:24 UTC; 21min ago Main PID: 26149 (FIXEdge) Tasks: 13 Memory: 49.0M CGroup: /system.slice/fixedge.service └─26149 /usr/lib64/fixedge/6.11.0/FIXEdge /etc/fixedge/FIXEdge.properties
Installation is completed.
Running FIXEdge Service
The package provides the systemd
units to control the FIXEdge and FIXICC Agent services.
The services runs as a dedicated fixedge
user. The following commands can be used to control the service:
Action | Command | Allowed to |
---|---|---|
Start FIXEdge | systemctl start fixedge | members of the fixedge group |
Stop FIXEdge | systemctl stop fixedge | members of the fixedge group |
Restart FIXEdge | systemctl restart fixedge | members of the fixedge group |
View status of FIXEdge | systemctl status fixedge | members of the fixedge group |
Enable FIXEdge start at system boot | systemctl enable fixedge | members of the fixedge group |
Disable FIXEdge start at system boot | systemctl disable fixedge | members of the fixedge group |
Start FIXICC-Agent | systemctl start fixicc-agent | members of the fixedge group |
Stop FIXICC-Agent | systemctl stop fixicc-agent | members of the fixedge group |
Restart FIXICC-Agent | systemctl restart fixicc-agent | members of the fixedge group |
View status of FIXICC-Agent | systemctl status fixicc-agent | members of the fixedge group |
Enable FIXICC-Agent start at system boot | systemctl enable fixicc-agent | members of the fixedge group |
Disable FIXICC-Agent start at system boot | systemctl disable fixicc-agent | members of the fixedge group |
On RHEL systems, a member of the fixedge
group can control the services, for example:
[max@localhost ~]$ systemctl status fixedge ● fixedge.service - FIXEdge - smart FIX message router Loaded: loaded (/usr/lib/systemd/system/fixedge.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/fixedge.service.d └─override.conf Active: inactive (dead) Dec 13 07:54:19 localhost.localdomain bash[588972]: SLF4J: Class path contains multiple SLF4J bindings. Dec 13 07:54:19 localhost.localdomain bash[588972]: SLF4J: Found binding in [jar:file:/usr/lib64/fixedge/6.11.6/jms-ta/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] Dec 13 07:54:19 localhost.localdomain bash[588972]: SLF4J: Found binding in [jar:file:/opt/apache-activemq/activemq-all-5.16.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] Dec 13 07:54:19 localhost.localdomain bash[588972]: SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. Dec 13 07:54:19 localhost.localdomain bash[588972]: SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] Dec 13 08:43:14 localhost.localdomain systemd[1]: Stopping FIXEdge - smart FIX message router... Dec 13 08:43:15 localhost.localdomain bash[588972]: The signal waiter has been started. Dec 13 08:43:15 localhost.localdomain bash[588972]: The signal 15 was detected. Dec 13 08:43:15 localhost.localdomain systemd[1]: fixedge.service: Succeeded. Dec 13 08:43:15 localhost.localdomain systemd[1]: Stopped FIXEdge - smart FIX message router. [max@localhost ~]$ systemctl start fixedge [max@localhost ~]$ systemctl status fixedge ● fixedge.service - FIXEdge - smart FIX message router Loaded: loaded (/usr/lib/systemd/system/fixedge.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/fixedge.service.d └─override.conf Active: active (running) since Wed 2021-12-15 04:30:02 EST; 1s ago Main PID: 916904 (FIXEdge) Tasks: 23 (limit: 48835) Memory: 62.5M CGroup: /system.slice/fixedge.service └─916904 /usr/lib64/fixedge/6.11.6/FIXEdge /etc/fixedge/FIXEdge.properties Dec 15 04:30:02 localhost.localdomain systemd[1]: Started FIXEdge - smart FIX message router. Dec 15 04:30:02 localhost.localdomain bash[916904]: FIXEdge 6.11.6.r463 (engine 2.28.0.r463) [max@localhost ~]$ systemctl stop fixedge [max@localhost ~]$ systemctl status fixedge ● fixedge.service - FIXEdge - smart FIX message router Loaded: loaded (/usr/lib/systemd/system/fixedge.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/fixedge.service.d └─override.conf Active: inactive (dead) Dec 15 04:30:05 localhost.localdomain bash[916904]: SLF4J: Class path contains multiple SLF4J bindings. Dec 15 04:30:05 localhost.localdomain bash[916904]: SLF4J: Found binding in [jar:file:/usr/lib64/fixedge/6.11.6/jms-ta/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] Dec 15 04:30:05 localhost.localdomain bash[916904]: SLF4J: Found binding in [jar:file:/opt/apache-activemq/activemq-all-5.16.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] Dec 15 04:30:05 localhost.localdomain bash[916904]: SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. Dec 15 04:30:05 localhost.localdomain bash[916904]: SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] Dec 15 04:30:14 localhost.localdomain systemd[1]: Stopping FIXEdge - smart FIX message router... Dec 15 04:30:16 localhost.localdomain bash[916904]: The signal waiter has been started. Dec 15 04:30:16 localhost.localdomain bash[916904]: The signal 15 was detected. Dec 15 04:30:16 localhost.localdomain systemd[1]: fixedge.service: Succeeded. Dec 15 04:30:16 localhost.localdomain systemd[1]: Stopped FIXEdge - smart FIX message router.
Upgrading FIXedge
If there is a newer version of the package in the repository, you can update using the following command:
sudo yum -y update fixedge fixicc-agent
You can update to a specific version if it is higher than the current one, e.g.:
$ rpm -qi fixedge | egrep '(Version|Release)' Version : 6.11.3 Release : 441.el7 $ yum provides fixedge | grep 450 fixedge-6.11.4-450.el7.x86_64 : FIXEdge - smart FIX message router $ sudo yum update fixedge-6.11.4-450.el7.x86_64
Downgrading FIXedge
You can also downgrade the package as needed by using the following command:
sudo yum -y downgrade fixedge-6.11.3-441.el7.x86_64
To find out which version you can downgrade a package to, use the yum provides command as described in the "Installing FIXEdge C++ section".
Removing FIXedge
To remove a package, you need the following:
sudo yum -y remove fixedge fixicc-agent
Migration from a tar.gz package to RPM
To migrate an existing installation from a tar.gz package to RPM need to:
- Copy FIXEdge configuration to
/etc/fixedge
Copy FIXEdge data to
/var/lib/fixedge
- Change storage directories in
engine.properties
andFIXEdge.properties
to/var/lib/fixedge
- Change references to TA shared libraries in
FIXEdge.properties
Copy configuration
Assuming that FIXEdge is currently installed in ${CURRENT_FIXEDGE_INSTALL_DIR}
and all configuration files are in the ${CURRENT_FIXEDGE_INSTALL_DIR}/FIXEdge1/conf
, you can copy the configuration by running:
cp ${CURRENT_FIXEDGE_INSTALL_DIR}/FIXEdge1/conf/*.properties /etc/fixedge cp ${CURRENT_FIXEDGE_INSTALL_DIR}/FIXEdge1/conf/*.xml /etc/fixedge cp ${CURRENT_FIXEDGE_INSTALL_DIR}/FIXEdge1/conf/*.js /etc/fixedge cp ${CURRENT_FIXEDGE_INSTALL_DIR}/FIXEdge1/conf/*.xsl /etc/fixedge
Next, update references to JavaScript and XSLT files in BL_Config.xml
, remove the FIXEdge1/conf/
prefix from the filenames, e.g., change
<Script Language="JavaScript" FileName ="FIXEdge1/conf/testScript.js"/>
to
<Script Language="JavaScript" FileName ="testScript.js"/>
Copy data
Copy FIXEdge data to /var/lib/fixegde
:
cp FIXEdge1/log/*.in /var/lib/fixedge cp FIXEdge1/log/*.out /var/lib/fixedge cp FIXEdge1/log/*.conf /var/lib/fixedge cp FIXEdge1/log/*.outq /var/lib/fixedge
Change storage directories
Change storage directories in engine.properties
:
LogDirectory = /var/lib/fixedge BackupDirectory = /var/lib/fixedge/backup
Change storage directories in FIXEdge.properties
:
FIXEdge.TasksStorageFile = /var/lib/fixedge/UndeliveredMsgs.log FixLayer.FixEngine.Sessions.ArchivePath = /var/lib/fixedge/archive
and for TA (example for JMS TA):
TransportLayer.JMSTA.Client.ProducerSession1.StorageDir = /var/lib/fixedge/jms-ta TransportLayer.JMSTA.Client.ConsumerSession1.StorageDir = /var/lib/fixedge/jms-ta
Change references
Change references to TA shared libraries in FIXEdge.properties,
located in /usr/lib64/fixedge/<FIXEDGE-VERSION>
, e.g., for JMS TA:
TransportLayer.JMSTA.DllName = /usr/lib64/fixedge/6.11.6/libJMSTA.so