Since Tomcat 8 was installed through unpacking the tar file downloaded from Apache, so there's no native service representing Tomcat on your server (Please refer to How to Install Java 8 and Tomcat 8 on Enterprise Linux 7). You have to add a customized service to systemd instead of SysVinit by yourself for starting Tomcat 8 at server boot. Here are the steps:
Create a service script for Tomcat.
[root@test ~]# vi /lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat
[Install]
WantedBy=multi-user.target
Alias=tomcat.service
[Service]
# Start service
ExecStart=/usr/bin/java -Djava.util.logging.config.file=/usr/tomcat/default/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/tomcat/default/endorsed -classpath /usr/tomcat/default/bin/bootstrap.jar:/usr/tomcat/default/bin/tomcat-juli.jar -Dcatalina.base=/usr/tomcat/default -Dcatalina.home=/usr/tomcat/default -Djava.io.tmpdir=/usr/tomcat/default/temp org.apache.catalina.startup.Bootstrap start
#ExecStart=/usr/bin/su -c '/usr/tomcat/default/bin/startup.sh'
Please note that I listed two ExecStart commands above:
- Initiate Java with Tomcat Directly
- Execute Tomcat provided command
/usr/bin/java -Djava.util.logging.config.file=/usr/tomcat/default/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/tomcat/default/endorsed -classpath /usr/tomcat/default/bin/bootstrap.jar:/usr/tomcat/default/bin/tomcat-juli.jar -Dcatalina.base=/usr/tomcat/default -Dcatalina.home=/usr/tomcat/default -Djava.io.tmpdir=/usr/tomcat/default/temp org.apache.catalina.startup.Bootstrap start
This command directly initiate Java with Tomcat parameters, so it's easy to manage the process of tomcat.service by systemctl. That is, you can start and stop the service like this:
[root@test ~]# systemctl start tomcat.service
[root@test ~]# systemctl stop tomcat.service
For your environment, please feel free to modify the command string according your requirements.
/usr/bin/su -c '/usr/tomcat/default/bin/startup.sh'
Both are workable. You may choose any one of them for your ExecStart as you like.
Force systemd reload all configurations. This will make systemd acknowledge tomcat.service.
[root@test ~]# systemctl daemon-reload
[root@test ~]# systemctl status tomcat.service
tomcat.service - Tomcat
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled)
Active: inactive (dead)
Enable tomcat.service for making necessary soft links and startup at server boots.
[root@test ~]# systemctl enable tomcat.service
ln -s '/usr/lib/systemd/system/tomcat.service' '/etc/systemd/system/tomcat.service'
ln -s '/usr/lib/systemd/system/tomcat.service' '/etc/systemd/system/multi-user.target.wants/tomcat.service'
[root@test ~]# systemctl status tomcat.service
tomcat.service - Tomcat
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; enabled)
Active: inactive (dead)
If you'd like to start tomcat.service right away, you can do this.
[root@test ~]# systemctl start tomcat.service
All set! Please reboot your web server to verify the result.
[root@test ~]# init 6
Just a thank you for this, you make me look like an expert.
My pleasure!