snipt

Ctrl+h for KB shortcuts

Text only

Setup Tomcat Java Server as a UNIX Daemon - JSVC

These instructions use jsvc to daemonize Tomcat. This is the more UNIX method of starting Tomcat at boot time.

Unpack the java server daemon JSVC

The Java Server Daemon JSVC source code is included with the Tomcat 6.0.x binary release.

# Change directories to the Tomcat home directory
cd $CATALINA_HOME/bin

# Unpack the jsvc archive
tar -xvzf commons-daemon-native.tar.gz

# Change directories to the unpacked source directory
cd commons-daemon-1.0.5-native-src/unix

Compile JSVC

Execute the following commands to build the jsvc daemon and copy the daemon executable and startup script to the Tomcat bin directory.

The OS X developer tools must be installed.

# Create the configure file
support/buildconf.sh

# Create the make file (JAVA 5)
./configure

# Create the make file (JAVA 6)
./configure --with-java=/System/Library/Frameworks/JavaVM.framework/

# Build jsvc
make

# Move jsvc into bin
mv jsvc ../..

# Copy the jsvc startup script into bin
cp samples/Tomcat5.sh ../..

# Change directories into bin
cd ../..

# Add execute permissions to Tomcat5.sh
chmod 750 Tomcat5.sh

Edit the daemon startup script Tomcat5.sh

# Edit Tomcat5.sh
nano Tomcat5.sh
# Make sure the following environment variables are set correctly in
# the Tomcat5.sh startup script for your installation. It is recommended that you run
# Tomcat as a user other than root as to restrict Tomcat's access to the host machine.

JAVA_HOME=/Library/Java/Home
CATALINA_HOME=/Library/Tomcat/Home
DAEMON_HOME=$CATALINA_HOME/bin
TOMCAT_USER=<username>
# for multi instances adapt those lines.
TMP_DIR=/var/tmp
PID_FILE=/var/run/jsvc.pid
CATALINA_BASE=$CATALINA_HOME
CATALINA_OPTS=
CLASSPATH=\
$JAVA_HOME/bundle/Classes/classes.jar:\
$CATALINA_HOME/bin/tomcat-juli.jar:\
$CATALINA_HOME/bin/bootstrap.jar:\
$CATALINA_HOME/bin/commons-daemon.jar
case "$1" in
start)
#
# Start Tomcat
#
$DAEMON_HOME/jsvc \
.
.
.
stop)
#
# Stop Tomcat
#
$DAEMON_HOME/jsvc \
Start Tomcat as a Daemon

# Execute the startup script to start Tomcat as a daemon
# You must execute the daemon as root as it writes the
# daemon's process id to /var/run.
# If Tomcat is already running, first stop it.
sudo ./Tomcat5.sh start

# Check and see if it is running
ps -ax

# To stop the server ...
sudo ./Tomcat5.sh stop
Starting Tomcat at Boot Time
If you would like Tomcat to start at boot time, create a Launchd property list to load JSVC. Download tomcat-plist.tar.gz and execute the following commands in terminal.

# Change directories to the LaunchDaemons directory
cd /Library/LaunchDaemons

# Unpack the property list
sudo tar -xvzf ~/Downloads/tomcat-plist.tar.gz

# Make sure the property list is owned by root
sudo chown root org.apache.commons.jsvc.plist

# Test
sudo launchctl load /Library/LaunchDaemons/org.apache.commons.jsvc.plist
https://snipt.net/embed/7631d5624c453c8f55701fc787286810/
/raw/7631d5624c453c8f55701fc787286810/
7631d5624c453c8f55701fc787286810
text
Text only
110
2019-06-27T08:51:08
True
False
False
/api/public/snipt/33630/
setup-tomcat-java-server-as-a-unix-daemon-jsvc
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1"> 1</a> <a href="#L-2"> 2</a> <a href="#L-3"> 3</a> <a href="#L-4"> 4</a> <a href="#L-5"> 5</a> <a href="#L-6"> 6</a> <a href="#L-7"> 7</a> <a href="#L-8"> 8</a> <a href="#L-9"> 9</a> <a href="#L-10"> 10</a> <a href="#L-11"> 11</a> <a href="#L-12"> 12</a> <a href="#L-13"> 13</a> <a href="#L-14"> 14</a> <a href="#L-15"> 15</a> <a href="#L-16"> 16</a> <a href="#L-17"> 17</a> <a href="#L-18"> 18</a> <a href="#L-19"> 19</a> <a href="#L-20"> 20</a> <a href="#L-21"> 21</a> <a href="#L-22"> 22</a> <a href="#L-23"> 23</a> <a href="#L-24"> 24</a> <a href="#L-25"> 25</a> <a href="#L-26"> 26</a> <a href="#L-27"> 27</a> <a href="#L-28"> 28</a> <a href="#L-29"> 29</a> <a href="#L-30"> 30</a> <a href="#L-31"> 31</a> <a href="#L-32"> 32</a> <a href="#L-33"> 33</a> <a href="#L-34"> 34</a> <a href="#L-35"> 35</a> <a href="#L-36"> 36</a> <a href="#L-37"> 37</a> <a href="#L-38"> 38</a> <a href="#L-39"> 39</a> <a href="#L-40"> 40</a> <a href="#L-41"> 41</a> <a href="#L-42"> 42</a> <a href="#L-43"> 43</a> <a href="#L-44"> 44</a> <a href="#L-45"> 45</a> <a href="#L-46"> 46</a> <a href="#L-47"> 47</a> <a href="#L-48"> 48</a> <a href="#L-49"> 49</a> <a href="#L-50"> 50</a> <a href="#L-51"> 51</a> <a href="#L-52"> 52</a> <a href="#L-53"> 53</a> <a href="#L-54"> 54</a> <a href="#L-55"> 55</a> <a href="#L-56"> 56</a> <a href="#L-57"> 57</a> <a href="#L-58"> 58</a> <a href="#L-59"> 59</a> <a href="#L-60"> 60</a> <a href="#L-61"> 61</a> <a href="#L-62"> 62</a> <a href="#L-63"> 63</a> <a href="#L-64"> 64</a> <a href="#L-65"> 65</a> <a href="#L-66"> 66</a> <a href="#L-67"> 67</a> <a href="#L-68"> 68</a> <a href="#L-69"> 69</a> <a href="#L-70"> 70</a> <a href="#L-71"> 71</a> <a href="#L-72"> 72</a> <a href="#L-73"> 73</a> <a href="#L-74"> 74</a> <a href="#L-75"> 75</a> <a href="#L-76"> 76</a> <a href="#L-77"> 77</a> <a href="#L-78"> 78</a> <a href="#L-79"> 79</a> <a href="#L-80"> 80</a> <a href="#L-81"> 81</a> <a href="#L-82"> 82</a> <a href="#L-83"> 83</a> <a href="#L-84"> 84</a> <a href="#L-85"> 85</a> <a href="#L-86"> 86</a> <a href="#L-87"> 87</a> <a href="#L-88"> 88</a> <a href="#L-89"> 89</a> <a href="#L-90"> 90</a> <a href="#L-91"> 91</a> <a href="#L-92"> 92</a> <a href="#L-93"> 93</a> <a href="#L-94"> 94</a> <a href="#L-95"> 95</a> <a href="#L-96"> 96</a> <a href="#L-97"> 97</a> <a href="#L-98"> 98</a> <a href="#L-99"> 99</a> <a href="#L-100">100</a> <a href="#L-101">101</a> <a href="#L-102">102</a> <a href="#L-103">103</a> <a href="#L-104">104</a> <a href="#L-105">105</a> <a href="#L-106">106</a> <a href="#L-107">107</a> <a href="#L-108">108</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a>These instructions use jsvc to daemonize Tomcat. This is the more UNIX method of starting Tomcat at boot time. </span><span id="L-2"><a name="L-2"></a> </span><span id="L-3"><a name="L-3"></a>Unpack the java server daemon JSVC </span><span id="L-4"><a name="L-4"></a> </span><span id="L-5"><a name="L-5"></a>The Java Server Daemon JSVC source code is included with the Tomcat 6.0.x binary release. </span><span id="L-6"><a name="L-6"></a> </span><span id="L-7"><a name="L-7"></a># Change directories to the Tomcat home directory </span><span id="L-8"><a name="L-8"></a>cd $CATALINA_HOME/bin </span><span id="L-9"><a name="L-9"></a> </span><span id="L-10"><a name="L-10"></a># Unpack the jsvc archive </span><span id="L-11"><a name="L-11"></a>tar -xvzf commons-daemon-native.tar.gz </span><span id="L-12"><a name="L-12"></a> </span><span id="L-13"><a name="L-13"></a># Change directories to the unpacked source directory </span><span id="L-14"><a name="L-14"></a>cd commons-daemon-1.0.5-native-src/unix </span><span id="L-15"><a name="L-15"></a> </span><span id="L-16"><a name="L-16"></a>Compile JSVC </span><span id="L-17"><a name="L-17"></a> </span><span id="L-18"><a name="L-18"></a>Execute the following commands to build the jsvc daemon and copy the daemon executable and startup script to the Tomcat bin directory. </span><span id="L-19"><a name="L-19"></a> </span><span id="L-20"><a name="L-20"></a>The OS X developer tools must be installed. </span><span id="L-21"><a name="L-21"></a> </span><span id="L-22"><a name="L-22"></a># Create the configure file </span><span id="L-23"><a name="L-23"></a>support/buildconf.sh </span><span id="L-24"><a name="L-24"></a> </span><span id="L-25"><a name="L-25"></a># Create the make file (JAVA 5) </span><span id="L-26"><a name="L-26"></a>./configure </span><span id="L-27"><a name="L-27"></a> </span><span id="L-28"><a name="L-28"></a># Create the make file (JAVA 6) </span><span id="L-29"><a name="L-29"></a>./configure --with-java=/System/Library/Frameworks/JavaVM.framework/ </span><span id="L-30"><a name="L-30"></a> </span><span id="L-31"><a name="L-31"></a># Build jsvc </span><span id="L-32"><a name="L-32"></a>make </span><span id="L-33"><a name="L-33"></a> </span><span id="L-34"><a name="L-34"></a># Move jsvc into bin </span><span id="L-35"><a name="L-35"></a>mv jsvc ../.. </span><span id="L-36"><a name="L-36"></a> </span><span id="L-37"><a name="L-37"></a># Copy the jsvc startup script into bin </span><span id="L-38"><a name="L-38"></a>cp samples/Tomcat5.sh ../.. </span><span id="L-39"><a name="L-39"></a> </span><span id="L-40"><a name="L-40"></a># Change directories into bin </span><span id="L-41"><a name="L-41"></a>cd ../.. </span><span id="L-42"><a name="L-42"></a> </span><span id="L-43"><a name="L-43"></a># Add execute permissions to Tomcat5.sh </span><span id="L-44"><a name="L-44"></a>chmod 750 Tomcat5.sh </span><span id="L-45"><a name="L-45"></a> </span><span id="L-46"><a name="L-46"></a>Edit the daemon startup script Tomcat5.sh </span><span id="L-47"><a name="L-47"></a> </span><span id="L-48"><a name="L-48"></a># Edit Tomcat5.sh </span><span id="L-49"><a name="L-49"></a>nano Tomcat5.sh </span><span id="L-50"><a name="L-50"></a># Make sure the following environment variables are set correctly in </span><span id="L-51"><a name="L-51"></a># the Tomcat5.sh startup script for your installation. It is recommended that you run </span><span id="L-52"><a name="L-52"></a># Tomcat as a user other than root as to restrict Tomcat&#39;s access to the host machine. </span><span id="L-53"><a name="L-53"></a> </span><span id="L-54"><a name="L-54"></a>JAVA_HOME=/Library/Java/Home </span><span id="L-55"><a name="L-55"></a>CATALINA_HOME=/Library/Tomcat/Home </span><span id="L-56"><a name="L-56"></a>DAEMON_HOME=$CATALINA_HOME/bin </span><span id="L-57"><a name="L-57"></a>TOMCAT_USER=&lt;username&gt; </span><span id="L-58"><a name="L-58"></a># for multi instances adapt those lines. </span><span id="L-59"><a name="L-59"></a>TMP_DIR=/var/tmp </span><span id="L-60"><a name="L-60"></a>PID_FILE=/var/run/jsvc.pid </span><span id="L-61"><a name="L-61"></a>CATALINA_BASE=$CATALINA_HOME </span><span id="L-62"><a name="L-62"></a>CATALINA_OPTS= </span><span id="L-63"><a name="L-63"></a>CLASSPATH=\ </span><span id="L-64"><a name="L-64"></a>$JAVA_HOME/bundle/Classes/classes.jar:\ </span><span id="L-65"><a name="L-65"></a>$CATALINA_HOME/bin/tomcat-juli.jar:\ </span><span id="L-66"><a name="L-66"></a>$CATALINA_HOME/bin/bootstrap.jar:\ </span><span id="L-67"><a name="L-67"></a>$CATALINA_HOME/bin/commons-daemon.jar </span><span id="L-68"><a name="L-68"></a>case &quot;$1&quot; in </span><span id="L-69"><a name="L-69"></a>start) </span><span id="L-70"><a name="L-70"></a># </span><span id="L-71"><a name="L-71"></a># Start Tomcat </span><span id="L-72"><a name="L-72"></a># </span><span id="L-73"><a name="L-73"></a>$DAEMON_HOME/jsvc \ </span><span id="L-74"><a name="L-74"></a>. </span><span id="L-75"><a name="L-75"></a>. </span><span id="L-76"><a name="L-76"></a>. </span><span id="L-77"><a name="L-77"></a>stop) </span><span id="L-78"><a name="L-78"></a># </span><span id="L-79"><a name="L-79"></a># Stop Tomcat </span><span id="L-80"><a name="L-80"></a># </span><span id="L-81"><a name="L-81"></a>$DAEMON_HOME/jsvc \ </span><span id="L-82"><a name="L-82"></a>Start Tomcat as a Daemon </span><span id="L-83"><a name="L-83"></a> </span><span id="L-84"><a name="L-84"></a># Execute the startup script to start Tomcat as a daemon </span><span id="L-85"><a name="L-85"></a># You must execute the daemon as root as it writes the </span><span id="L-86"><a name="L-86"></a># daemon&#39;s process id to /var/run. </span><span id="L-87"><a name="L-87"></a># If Tomcat is already running, first stop it. </span><span id="L-88"><a name="L-88"></a>sudo ./Tomcat5.sh start </span><span id="L-89"><a name="L-89"></a> </span><span id="L-90"><a name="L-90"></a># Check and see if it is running </span><span id="L-91"><a name="L-91"></a>ps -ax </span><span id="L-92"><a name="L-92"></a> </span><span id="L-93"><a name="L-93"></a># To stop the server ... </span><span id="L-94"><a name="L-94"></a>sudo ./Tomcat5.sh stop </span><span id="L-95"><a name="L-95"></a>Starting Tomcat at Boot Time </span><span id="L-96"><a name="L-96"></a>If you would like Tomcat to start at boot time, create a Launchd property list to load JSVC. Download tomcat-plist.tar.gz and execute the following commands in terminal. </span><span id="L-97"><a name="L-97"></a> </span><span id="L-98"><a name="L-98"></a># Change directories to the LaunchDaemons directory </span><span id="L-99"><a name="L-99"></a>cd /Library/LaunchDaemons </span><span id="L-100"><a name="L-100"></a> </span><span id="L-101"><a name="L-101"></a># Unpack the property list </span><span id="L-102"><a name="L-102"></a>sudo tar -xvzf ~/Downloads/tomcat-plist.tar.gz </span><span id="L-103"><a name="L-103"></a> </span><span id="L-104"><a name="L-104"></a># Make sure the property list is owned by root </span><span id="L-105"><a name="L-105"></a>sudo chown root org.apache.commons.jsvc.plist </span><span id="L-106"><a name="L-106"></a> </span><span id="L-107"><a name="L-107"></a># Test </span><span id="L-108"><a name="L-108"></a>sudo launchctl load /Library/LaunchDaemons/org.apache.commons.jsvc.plist </span></pre></div> </td></tr></table>
daemon, tomcat