Most software comes with a decent documentation how to install it, whether if the software is open source or not.
In the case of "JBoss Fuse" I couldn't find a decent documentation where the installation (from a system administrator's point of view) was well described. Not even the good old search engines did me a favor by spitting out a nice how to. Granted, there is the official Red Hat Documentation, but all it basically says there is:
That's it. The whole "Installing" section in the official JBoss Fuse installation guide as of today.
Let's do it in a way, also a JBoss Fuse newbie understands it.
1. Download (and don't forget Java)
Go to https://www.jboss.org/products/fuse.html and download the zip package starting with "jboss-fuse-full". As of today the current file name is "jboss-fuse-full-6.1.0.redhat-379.zip". A registration on the JBoss website is required.
As an alternative, the fusesource.com repository can be used, too. But it seems that this repository is a bit behind with the newest packages (as of today, version 379 is not yet available on it).
Make sure you have a working Java installation on your system (e.g. test with "java -version").
2. Unzip
Choose your destination path or partition for the installation and unzip the zip file there. I chose /data for my installation, so the commands are:
cd /data
unzip /tmp/jboss-fuse-full-6.1.0-redhat-379.zip
3. Change permissions
You probably don't want to run the JBoss Fuse server as "root" user, so you must adapt the permissions. Let's go for a dedicated user called fuse which we create in the system:
useradd -m -d /home/fuse -s /bin/bash fuse
Give the new fuse user the ownership of the path:
chown -R fuse:fuse /data/jboss-fuse-full-6.1.0
As root, you probably want to keep control over the start and stop scripts and don't want the fuse user to edit them without letting you know. So I set the permissions on the scripts within the "bin" folder that only root can edit them but fuse is able to launch them:
chown root:fuse /data/jboss-fuse-full-6.1.0/bin/*
chmod 750 /data/jboss-fuse-full-6.1.0/bin/*
4. Create JBoss admin user
By default, the packaged installation comes without a defined admin user (to connect to the started JBoss management port 8181). To add an admin user, edit /data/jboss-fuse-full-6.1.0/etc/users.properties and at the end of the file, enter the admin user in the following format:
tail -n 1 /data/jboss-fuse-full-6.1.0/etc/users.properties
username=password,admin
You guessed it right, the "admin" after the password is the administrator role. So this user is able to log into the running JBoss Fuse server and can do all kinds of administrative stuff (also a shutdown).
5. Launch JBoss Fuse
Before you go ahead and launch JBoss Fuse, be aware that there are two ways to start JBoss Fuse.
5.1 Interactive Launch
Meaning: You launch it from the console and you're logged into JBoss Fuse console. When you exit this console, JBoss Fuse will shut down.
To start JBoss Fuse in interactive mode, launch (as "fuse" user):
su - fuse; /data/jboss-fuse-full-6.1.0/bin/fuse
This will launch JBoss Fuse and the console, which looks like this:
Please wait while JBoss Fuse is loading...
100% [========================================================================]
_ ____ ______
| | _ \ | ____|
| | |_) | ___ ___ ___ | |__ _ _ ___ ___
_ | | _ < / _ \/ __/ __| | __| | | / __|/ _ \
| |__| | |_) | (_) \__ \__ \ | | | |_| \__ \ __/
\____/|____/ \___/|___/___/ |_| \__,_|___/\___|
JBoss Fuse (6.1.0.redhat-379)
http://www.redhat.com/products/jbossenterprisemiddleware/fuse/
Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Open a browser to http://localhost:8181 to access the management console
Create a new Fabric via 'fabric:create'
or join an existing Fabric via 'fabric:join [someUrls]'
Hit '<ctrl-d>' or 'osgi:shutdown' to shutdown JBoss Fuse.
5.2 Launch as a server service
This is, for a system administrator, the more interesting part. Our job is to deliver the service to the developers so we don't want to keep running our session just to keep the JBoss Fuse server alive. No, we want to start the service as a server service. To do so, launch:
su - fuse; /data/jboss-fuse-full-6.1.0/bin/start
And then follow the log, if everything comes up as it should:
tail -f /data/jboss-fuse-full-6.1.0/data/log/fuse.log
Verify with netstat, too:
netstat -lntp | grep java
tcp 0 0 127.0.0.1:46978 0.0.0.0:* LISTEN 16084/java
tcp 0 0 0.0.0.0:8101 0.0.0.0:* LISTEN 16084/java
tcp 0 0 0.0.0.0:1099 0.0.0.0:* LISTEN 16084/java
tcp 0 0 0.0.0.0:61616 0.0.0.0:* LISTEN 16084/java
tcp 0 0 0.0.0.0:8181 0.0.0.0:* LISTEN 16084/java
tcp 0 0 0.0.0.0:44444 0.0.0.0:* LISTEN 16084/java
So after all this wasn't that complicated. Once you know how, it's very easy. But without that information bundled together in the installation guide... good luck to get the pieces together by yourself. Hope this small guide is somewhat more comprehensive and helpful to other sys admins.
ck from Switzerland wrote on Mar 18th, 2019:
Iroshan, at the end I didn't end up to use Jboss Fuse. My client didn't want to use it after all so I didn't create init scripts or systemd unit files. But basically you can copy an existing systemd service unit file and make sure you set the ExecStart command correctly. Using the example of this article this would be (not tested):
[Unit]
Description=JBoss Fuse service
[Service]
Type=forking
ExecStart=/data/jboss-fuse-full-6.1.0/bin/start
RemainAfterExit=yes
User=fuse
Restart=on-failure
RestartSec=60
[Install]
Alias=jboss-fuse.service
WantedBy=multi-user.target
Iroshan from wrote on Mar 18th, 2019:
How to configure fuse in linux to start stop as a service for eg: systemctl start fuse.
Raffi from New York wrote on Jul 27th, 2015:
Great write up, Claudio! I plan to create my own with extra details, but this is a great start
Claudio from Switzerland wrote on May 28th, 2014:
Hello Paul. The port definition of 8181 is set in the following files (in the etc folder):
jetty.xml: <Property name="jetty.port" default="8181"/>
org.ops4j.pax.web.cfg:org.osgi.service.http.port=8181
system.properties:org.osgi.service.http.port=8181
Paul from New Zealand wrote on May 28th, 2014:
Could you add some info around the port config? I have something else running on port 8181 so I can't get to the admin console at http://myserver:8181
AWS Android Ansible Apache Apple Atlassian BSD Backup Bash Bluecoat CMS Chef Cloud Coding Consul Containers CouchDB DB DNS Database Databases Docker ELK Elasticsearch Filebeat FreeBSD Galera Git GlusterFS Grafana Graphics HAProxy HTML Hacks Hardware Icinga Influx Internet Java KVM Kibana Kodi Kubernetes LVM LXC Linux Logstash Mac Macintosh Mail MariaDB Minio MongoDB Monitoring Multimedia MySQL NFS Nagios Network Nginx OSSEC OTRS Office OpenSearch PGSQL PHP Perl Personal PostgreSQL Postgres PowerDNS Proxmox Proxy Python Rancher Rant Redis Roundcube SSL Samba Seafile Security Shell SmartOS Solaris Surveillance Systemd TLS Tomcat Ubuntu Unix VMWare VMware Varnish Virtualization Windows Wireless Wordpress Wyse ZFS Zoneminder