Start WildFly as a systemd Service on Linux: Difference between revisions
Line 39: | Line 39: | ||
Create the <tt>/usr/lib/systemd/system/jboss.service</tt> (or the <tt>/usr/lib/systemd/system/jboss-host-controller.service</tt>) unit file. Maintain the same nomenclature for consistency: | Create the <tt>/usr/lib/systemd/system/jboss.service</tt> (or the <tt>/usr/lib/systemd/system/jboss-host-controller.service</tt>) unit file. Maintain the same nomenclature for consistency: | ||
{{Warn|Modify the environment variables | {{Warn|Modify the environment variables JAVA_HOME, JBOSS_HOME , etc. to match your system's values.}} | ||
<pre> | <pre> |
Revision as of 02:52, 5 April 2017
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. Note that em applies all this configuration automatically.
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 for EAP 6, jboss-eap-rhel.sh for EAP 7) 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
Create the Unit File
Create the /usr/lib/systemd/system/jboss.service (or the /usr/lib/systemd/system/jboss-host-controller.service) unit file. Maintain the same nomenclature for consistency:
Modify the environment variables JAVA_HOME, JBOSS_HOME , etc. to match your system's values.
[Unit] Description=EAP Service After=syslog.target network-online.target Before=httpd.service [Service] Type=oneshot ExecStart=/usr/lib/systemd/scripts/jboss-host-controller start ExecStop=/usr/lib/systemd/scripts/jboss-host-controller stop RemainAfterExit=yes Environment="JAVA_HOME=/opt/java" Environment="JBOSS_HOME=/opt/jboss" Environment="JBOSS_USER=eap" Environment="JBOSS_MODE=domain" [Install] WantedBy=multi-user.target
After and Before
The name of the target used in "After" and "Before" declarations may vary from system to system. For example, "network.taget" on some system may be "network-online.target" on other systems. You can query the targets with systemctl list-units.
Notify systemd of the existence of the new unit file
systemctl daemon-reload
Enable at Boot
systemctl enable jboss-host-controller.service