通常情况下一个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等环境变量。