Start WildFly as a systemd Service on Linux: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 36: Line 36:


=Create the Unit File=
=Create the Unit File=
Create the <tt>/usr/lib/systemd/system/eap.service</tt> unit file:


<pre>
<pre>
chkconfig --add jboss|jboss-host-controller
[Unit]
chkconfig --list jboss|jboss-host-controller
Description=EAP Service
chkconfig --level 2345 jboss|jboss-host-controller on
After=network.target
 
[Service]
Type=oneshot
ExecStart=/usr/lib/systemd/scripts/ start
ExecStop=/opt/myservice/bin/myservice stop
RemainAfterExit=yes
 
[Install]
WantedBy=multi-user.target
</pre>
</pre>



Revision as of 08:02, 16 February 2016

Internal

Overview

We create a simple systemd Type=oneshot unit file that delegates the work of starting and stopping the instance to the System V wrappers shipped with EAP installation bundle.

systemd File Locations

We adapted the installation procedure after an ActiveMQ installation procedure that recommended placing files in /usr/lib/systemd/scripts and /usr/lib/systemd/system. However, a better location seems to be /etc/systemd/... More research is needed, the results will go here systemd Concepts#Unit_File_Location.

Install the Pre-Packaged System V Startup Scripts into Standard systemd Location

Copy the pre-packaged System V startup scripts (jboss-as-domain.sh, jboss-as-standalone.sh) from $JBOSS_HOME/bin/init.d into /usr/lib/systemd/scripts.

Perform the following operations as "root", re-name the scripts as indicated below.

For a standalone installation, name the script jboss.

cp $JBOSS_HOME/bin/init.d/jboss-as-standalone.sh  /usr/lib/systemd/scripts/jboss

For a domain installation, name the script jboss-host-controller, regardless of whether we're configuring to start the domain controller or a subordinate host controller. This is because on the domain controller host, the domain controller process and the host controller process coincide.

cp $JBOSS_HOME/bin/init.d/jboss-as-domain.sh  /usr/lib/systemd/scripts/jboss-host-controller

Customize the WildFly Startup Wrapper

Customize WildFly Startup Wrapper

Create the Unit File

Create the /usr/lib/systemd/system/eap.service unit file:

[Unit]
Description=EAP Service
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/lib/systemd/scripts/ start
ExecStop=/opt/myservice/bin/myservice stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

The Line that Starts The Process

...
su - $JBOSS_USER -c "LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=$JBOSS_PIDFILE $JBOSS_SCRIPT --domain-config=$JBOSS_DOMAIN_CONFIG --host-config=$JBOSS_HOST_CONFIG" 2>&1 > $JBOSS_CONSOLE_LOG &
...