首先,需要把apache=tomcat安装目录里面的
bin/ conf/ logs/ webapps/ work/
都拷贝到自定义WEB应用目录下,比如 /home/app/test.aliyun.com/,这个目录以后就是部署该项目的操作目录,下面用yourdomain来代替。
文件夹部署方式(非war包)
方式一 默认配置,直接扔包:
在webapps下面建立ROOT目录,此ROOT目录为tomcat默认根网站的目录,ROOT名称区分大小写,必须为大写
将应用程序的war包解压后放到ROOT目录下,此时webapps底下的目录应该为这种形式
yourdomain/webapps/ROOT/* (*代表WEB-INF等)
不需要修改yourdomain/conf/server.xml文件。
然后在yourdomain/bin/目录下创建start和stop的shell文件
文件内容如下:
start.sh
export CATALINA_BASE=/home/user/app/test.aliyun.com/ export CATALINA_HOME=/home/app/apache-tomcat-7.0.62/ export JAVA_OPTS="$JAVA_OPTS -Xloggc:/home/appuser/app/test.aliyun.com/logs/temp_gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/user/app/test.aliyun.com/logs/“ cd $CATALINA_HOME/bin ./startup.sh jpda tail -fn 500 /home/user/app/testjx.aliyun.com/logs/catalina.out
stop.sh
ps -ef | grep test.aliyun.com | grep -v 'grep' | awk '{print $2}' |xargs kill -9
这两个文件在以下流程中通用。
然后启动就可以
方式二 修改webapps下文件路径:
在 yourdomain/webapps/下创建文件夹,比如 yourdomain/webapps/yourAppName ,
然后把ROOT目录删除,将web应用的内容拷贝到yourAppName目录下,此时webapps目录应该为这种形式
yourdomain/webapps/yourAppName/* (*代表WEB-INF等)
由于此时默认的ROOT目录没有了,但因为webapps下面有文件夹,所以会把yourAppName里面的内容当做一个web应用加载并启动起来,
虽然web应用启动了,但是访问的时候会出现404错误,这是因为访问的时候tomcat默认去ROOT下面寻找资源,而ROOT已删除,则资源肯定是查找不到的
此时我们需要配置
conf/server.xml
在<Host name=“localhost” 一栏下面加上
<Context path="/" docBase="/home/appuser/app/testjx.aliyun.com/webapps/yourAppName" debug="0" reloadbale="true" privileged="true"> </Context>
将根路径从原来默认的ROOT指向我们自定义的yourAppName文件夹
此时执行 bin/stop.sh bin/start.sh就可以启动了,启动完毕即可正常访问,如果需要添加多个应用,则指定多个context即可。
如果我们只想把web应用直接放在webapps下面,而不想在webapps下面建立文件夹再放进去怎么办呢?
实际上是可以的,我们来看
方式三 将web应用解压到webapps下面:
现在的文件夹目录如下
yourdomain/webapps/* (*代表WEB-INF等)
如果此时启动tomcat,tomcat会将webapps下的每一个文件夹当做一个上下文进行加载,导致一个web应用被拆分成N个web容器,此时访问极易出异常,
为了避免这种情况,我们需要修改server.xml
将其中的
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true”>修改为
<Host name="localhost" appBase=“anotherwebapps" unpackWARs="true" autoDeploy="true”>
此时再启动就可以了,这种方式其实等同于另外一种情况,就是你的web应用可以自己组织放在任何地方,而server.xml里面依然是
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true”>
这种配置不变,需要变的是Context节点的配置
<Context path="/" docBase="/home/user/app/test.aliyun.com/webapps" debug="0" reloadbale="true" privileged="true"> </Context>
将其中的docBase指向你自定义的web应用目录,就可以实现根据要求自行组织web应用群结构的目的了
War包部署方式:
我们可以直接将war包扔到webapps目录下,此时尚需配置Context节点,将docBase指向war包的名字,不含后缀
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true”> <Context path="/" docBase=“yourAppName.war" debug="0" reloadbale="true" privileged="true”> </Context> </Host>
这种配置其实是上面的方式二,只是省了解压这一步骤,tomcat帮你做了。也可以不加Context,只是这样访问的时候url需要加上你的应用名
localhost:port/yourAppName/index.html