最近在SlackWare下進行JAVA的學習。每次都要手工起動Tomcat,很不方便。於是照貓畫虎寫了一個指令碼開機時自動運行Tomcat。 使用JDK1.5.6,安裝在/app/jdk1.5.0_06目錄下面,Tomcat是5.5的ZIP版本。
| #!/bin/sh # # /etc/rc.d/rc.tomcat # # Start/stop/restart the Tomcat server. # tomcat_start() { if [ -x /app/tomcat5.5/bin/startup.sh ]; then echo "Starting Tomcat: /app/tomcat5.5/bin/startup.sh" /app/tomcat5.5/bin/startup.sh fi } tomcat_stop() { if [ -x /app/tomcat5.5/bin/startup.sh ]; then echo "Stop Tomcat: /app/tomcat5.5/bin/shutdown.sh" /app/tomcat5.5/bin/shutdown.sh fi } tomcat_restart() { tomcat_stop sleep 2 tomcat_start } case "$1" in 'start') tomcat_start ;; 'stop') tomcat_stop ;; 'restart') tomcat_restart ;; *) tomcat_start esac |
指令碼存放路徑/etc/rc.d/rc.tomcat。注意要賦予執行許可權。 再在/etc/rc.d/rc.local檔案中加上一句:/etc/rc.d/rc.tomcat這樣每次起動時就會執行rc.tomcat檔案。 起動時卻出現問題是: 以往我們的JAVA路徑資訊是寫在/etc/profile裡的,如:
| JAVA_HOME=/app/jdk1.5.0_06 CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export JAVA_HOME CLASSPATH PATH |
使用者要登陸後才路徑資訊才會生效,於是就出現了手工可以起動Tomcat,但隨機起動會出現問題。 修改一下rc.tomcat的指動指令碼,為它指定JDK路徑就可以了。
| #!/bin/sh # # /etc/rc.d/rc.tomcat # # Start/stop/restart the Tomcat server. # JAVA_HOME=/app/jdk1.5.0_06 export JAVA_HOME tomcat_start() { if [ -x /app/tomcat5.5/bin/startup.sh ]; then echo "Starting Tomcat: /app/tomcat5.5/bin/startup.sh" /app/tomcat5.5/bin/startup.sh fi } tomcat_stop() { if [ -x /app/tomcat5.5/bin/startup.sh ]; then echo "Stop Tomcat: /app/tomcat5.5/bin/shutdown.sh" /app/tomcat5.5/bin/shutdown.sh fi } tomcat_restart() { tomcat_stop sleep 2 tomcat_start } case "$1" in 'start') tomcat_start ;; 'stop') tomcat_stop ;; 'restart') tomcat_restart ;; *) tomcat_start esac |
很簡單,只是在指令碼最開始前加了二行JAVA的路徑資訊: JAVA_HOME=/app/jdk1.5.0_06 export JAVA_HOME 再看開機後的資訊: 如果不相信,SSH進去nmap一下。 直於為什麼會有一個8000的http-alt的連接埠,請參考我的另一篇文章《Tomcat5.5下開啟遠端偵錯連接埠》,這個遠程連接埠預設情況下是不會開啟的。