nginx 和 tomcat的组合是后端服务器的常用架构。通过nginx实现负载均衡。
nginx的主要配置可以见下面这个链接
下面说说tomcat配置,tomcat单实例配置网上比较多,但是实际应用中我们经常需要在一台机器上配置多个tomcat实例,比如一个实例用于给用户提供web服务,一个实例用于内部人员后台,一个实例用于内部测试等等。
启动tomcat的时候是执行安装目录下的startup.sh
从图中可以看出实际上是执行了catalina.sh这个脚本,继续跟踪到catalina.sh,找到真正启动jvm的部分如下(有多个启动的部分,不同的系统环境启动的方式不同,我的机器上的启动环境是如下部分):
由上图可以看出,tomcat在真正启动的时候实际上是依赖于CATALINA_BASE, CATALINA_HOME, CATA_TMPDIR, CATALINA_OUT这几个环境变量。
其中CATALINA_BASE用于控制启动tomcat的位置,通过控制这个变量就可以从不同的目录下启动tomcat,达到多实例的目的,同时还需要控制好CATALINA_OUT这个变量,这个变量用于重定向标准输出,其中标准错误输出被重定向到了标准输出,所以正常输出和错误输出都会打印到CATALINA_OUT所指定的文件中。
下面介绍设置这几个环境变量的设置:CATALINA_HOME和CATALINA_BASE一般在startup.sh执行前设置好。CATALINA_HOME设置为tomcat安装目录,CATALINA_BASE设置成自定义的tomcat启动目录。
如果没有设置会设置默认值
有的时候需要设置自定义的日志输出目录或者自定义jvm启动options参数。所以可以通过设置JAVA_OPTS来设定。
设置CATALINA_OUT以及设置JAVA_OPTS可以在setenv.sh中实现,也可以直接在CATALINA_HOM和CATALINA_BASE设置的时候一起设置了。
上图中有个设置环境变量的脚本,可以设置内容如下:
上面的流程就是tomcat多实例启动的过程,关键在于几个重要的环境变量是否设置正确,通过CATALINA_BASE可以设置多实例启动,通过JAVA_OPTS可以自定义jvm启动选项,通过CATALINA_OUT可以设置tomcat的输出日志。这样就可以有效的将过个tomcat实例分开来,从而达到一台机器上启动多个实例的目的。
弄清楚了启动的流程,下面介绍一个tomcat启动目录需要哪些目录。
将bin,conf,logs,temp,work这些目录拷贝到单独的一个目录之下,conf目录是最主要的部分,tomcat会根据conf下面的server.xml来配置tomcat。
conf目录这几个配置文件:这里注意一下有两个web.xml文件,两个都会加载,应用中的web.xml后加载,关于加载顺序以及合并规则可以看这个链接:
其中server.xml里面需要配置一下端口以及web包的位置。
基本配置就到这里结束。