通常情況下一個jetty部署一個java web應用,但一臺服務只部署一個應用可能會造成資源浪費,所以有時候可能在一臺服務器上要部署多個web應用。下面我們以一臺server部署兩個web應用為例。
服務器環境:安裝JDK,2個jetyy9
重點:2個web應用的端口不能沖突。
工程1使用jetty01,將bin/jetty.sh重命名為bin/jetty01.sh,同時修改其配置如下(注意不用配置JETTY_RUN變量):
1 2 3 4 5 6 | JETTY_HOME= /usr/local/jetty01 JETTY_BASE=$JETTY_HOME JETTY_USER=www JETTY_ARGS=jetty.port=8181 JAVA= /usr/local/jdk7/bin/java JAVA_OPTIONS= "-Xloggc:/opt/logs/ugcRank/gc.log?-XX:+PrintGCDetails?-XX:+PrintGCDateStamps" |
工程2使用jetty02,將bin/jetty.sh重命名為bin/jetty02.sh,并修改配置:
1 2 3 4 5 6 | JETTY_HOME= /usr/local/jetty02 JETTY_BASE=$JETTY_HOME JETTY_USER=www JETTY_ARGS=jetty.port=8282 JAVA= /usr/local/jdk7/bin/java JAVA_OPTIONS= "-Xloggc:/opt/logs/vrsRank/gc.log?-XX:+PrintGCDetails?-XX:+PrintGCDateStamps" |
此時,兩個jetty的pid均位于默認的目錄下,即/var/run,路徑分別為/var/run/jetty/jetty01.pid,/var/run/jetty/jetty02.pid。
第二種方式:修改pid文件保存的目錄,該目錄由JETTY_RUN配置,默認都在/var/run/jetty下,如:
工程1使用jetty01,修改bin/jetty02.sh如下:
1 2 3 4 5 6 7 | JETTY_HOME= /usr/local/jetty01 JETTY_BASE=$JETTY_HOME JETTY_RUN=$JETTY_BASE JETTY_USER=www JETTY_ARGS=jetty.port=8181 JAVA= /usr/local/jdk7/bin/java JAVA_OPTIONS= "-Xloggc:/opt/logs/ugcRank/gc.log?-XX:+PrintGCDetails?-XX:+PrintGCDateStamps" |
工程2使用jetty02,修改bin/jetty02.sh如下:
1 2 3 4 5 6 7 | JETTY_HOME= /usr/local/jetty01 JETTY_BASE=$JETTY_HOME JETTY_RUN=$JETTY_BASE JETTY_USER=www JETTY_ARGS=jetty.port=8181 JAVA= /usr/local/jdk7/bin/java JAVA_OPTIONS= "-Xloggc:/opt/logs/ugcRank/gc.log?-XX:+PrintGCDetails?-XX:+PrintGCDateStamps" |
此時,pid文件位于各自jetty的安裝目錄下,雖然都為jetty.pid,但是互不影響。
將jetty配置為系統服務
首先,將bin/jetty.sh拷貝到/etc/init.d中:
1 | cp ?bin /jetty .sh? /etc/init .d /jetty |
然后,新建文件/etc/default/jetty,在其中設置環境變量JETTY_HOME:
1 2 | $?vim? /etc/default/jetty JETTY_HOME= /usr/local/jetty9 .1 |
啟動和停止:
1 2 | $?service?jetty?start $?service?jetty?stop |
說明:bin/jetty.sh默認將/etc/default/{pid}作為其配置文件,此時pid名稱即為jetty,所以/etc/default/jetty會作為jetty的配置文件,可以在其中配置JETTY_HOME, JAVA, JAVA_OPTIONS等環境變量。