搭建Tomcat应用服务器、tomcat虚拟主机及Tomcat多实例部署
一、环境准备
系统版本:CentOS release 6.6 (Final) x86_64
Tomcat版本:tomcat-8.0.
JDK版本:jdk-8u25-linux-x64
关闭防火墙
软件包下载地址:
http://tomcat.apache.org/
http://www.oracle.com/technetwork/java/javase/downloads/index.html
二、安装Java环境
[root@tomcat-server ~]# rpm -ivh jdk-8u25-linux-x64.rpm #安装jdk
Preparing... ########################################### [%]
:jdk1..0_25 ########################################### [%]
Unpacking JAR files...
rt.jar...
jsse.jar...
charsets.jar...
tools.jar...
localedata.jar...
jfxrt.jar...
[root@tomcat-server ~]# cat /etc/profile.d/java.sh #设置java环境变量
export JAVA_HOME=/usr/java/latest
export CLASSPATH=$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@tomcat-server ~]# . /etc/profile.d/java.sh
[root@tomcat-server ~]# java -version #查看java变量是否配置成功
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) -Bit Server VM (build 25.25-b02, mixed mode)
[root@tomcat-server ~]# echo $JAVA_HOME
/usr/java/latest
[root@tomcat-server ~]# echo $CLASSPATH
/usr/java/latest/lib/tools.jar
[root@tomcat-server ~]# echo $PATH
/usr/java/latest/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
三、安装tomcat服务器
[root@tomcat-server ~]# tar xf apache-tomcat-8.0..tar.gz -C /usr/local/ #解压到安装目录
[root@tomcat-server ~]# cd /usr/local/
[root@tomcat-server local]# ln -sv apache-tomcat-8.0. tomcat
"tomcat" -> "apache-tomcat-8.5.24"
[root@tomcat-server local]# ll
总用量
drwxr-xr-x root root 12月 : apache-tomcat-8.0.
drwxr-xr-x. root root 1月 bin
drwxr-xr-x. root root 1月 etc
drwxr-xr-x. root root 9月 games
drwxr-xr-x. root root 9月 include
drwxr-xr-x. root root 9月 lib
drwxr-xr-x. root root 9月 lib64
drwxr-xr-x. root root 9月 libexec
drwxr-xr-x. root root 1月 sbin
drwxr-xr-x. root root 1月 share
drwxr-xr-x. root root 9月 src
lrwxrwxrwx root root 12月 : tomcat -> apache-tomcat-8.0.root@tomcat-server ~]# cat /etc/profile.d/tomcat.sh #配置tomcat环境变量
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
[root@tomcat-server local]# . /etc/profile.d/tomcat.sh
[root@tomcat-server local]# echo $CATALINA_HOME
/usr/local/tomcat
[root@tomcat-server local]# echo $PATH
/usr/local/tomcat/bin:/bin:/usr/java/latest/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
启动tomcat
[root@tomcat-server tomcat]# catalina.sh start #或者直接使用/usr/local/tomcat/bin/startup.sh脚本启动
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@tomcat-server tomcat]# netstat -tnlp #查看端口是否启动
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0.0.0.0: 0.0.0.0:* LISTEN /sshd
tcp ::: :::* LISTEN /sshd
tcp ::ffff:127.0.0.1: :::* LISTEN /java
tcp ::: :::* LISTEN /java
tcp ::: :::* LISTEN /java
访问一下链接,默认端口为8080

在右上角有这样三个按钮:
Server Status:用于监控服务器状态
Manager App:可以部署、监控Web应用
Host Manager:Tomcat主机管理
当我们尝试登陆任何一个管理界面,提示没有权限,需要去配置

根据提示,需要配置用户和权限
vim /usr/local/tomcat/conf/tomcat-users.xml #编辑用户和密码及权限配置目录
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="PANpan520" roles="manager-gui,admin-gui"/>
需要注意的是,从Tomcat 7开始,Host manager应用的角色由单个的admin角色转为admin-gui和admin-script两个角色,你需要根据你的访问需求给用户分配不同的角色:
admin-gui: 允许访问HTML GUI,可以避免CSRF攻击
admin-script: 允许访问文本接
从Tomcat 7开始, 管理平台的角色由单个的manager角色变更为下面的4个角色,你需要根据你的访问需求给用户分配不同的角色:
manager-gui: 允许访问HTML GUI和状态页
manager-script: 允许访问文本接口和状态页
manager-jmx: 允许访问JMX代理和状态页
manager-status: 仅允许访问状态页
重启服务,使配置生效
[root@tomcat-server tomcat]# catalina.sh stop #关闭tomcat
[root@tomcat-server tomcat]# catalina.sh configtest #测试配置是否有语法错误
[root@tomcat-server tomcat]# catalina.sh start
如果配置没有问题,应该可以正常登陆访问了,如下图



好啦,现在就可以方便的配置Tomcat服务器,并管理运行的Web应用,如发布、启动、停止或删除操作,还可以查看Web应用状态了
四、配置tomcat的虚拟主机
创建虚拟主机的目录
[root@tomcat-server ~]# mkdir -pv /data/webapps
mkdir: 已创建目录 "/data/webapps"
[root@tomcat-server ~]# mkdir -pv /data/logs
mkdir: 已创建目录 "/data/logs"
[root@tomcat-server ~]# echo "99+1=<%=99+1%>" > /data/webappstest.jsp #创建一个测试页面
编辑server.xml,添加一个新的Host
<Host name="www.tomcat1.com" appBase="/data/webapps" unpackWARs="true" autoDeploy="false" >
<Context path="" docBase="/data/webapps" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs"
prefix="tomcat1_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
重启服务
[root@tomcat-server tomcat]# catalina.sh stop #关闭tomcat
[root@tomcat-server tomcat]# catalina.sh configtest #测试配置是否有语法错误
[root@tomcat-server tomcat]# catalina.sh start
客户端做好域名解析,访问测试页面

没有问题,配置成功
关闭tomcat服务,避免和后面的使用产生冲突
[root@tomcat-server ~]# catalina.sh stop
虚拟目录的优点:
.虚拟目录的名称通常要比物理目录的名称易记,因此更便于用户访问。
.使用虚拟目录可以提高安全性,因为客户端并不知道文件在服务器上的实际物理位置,所以无法使用该信息来修改服务器中的目标文件。
.使用虚拟目录可以更方便地移动网站中的目录,只需更改虚拟目录物理位置之间的映射,无需更改目录的URL。
.使用虚拟目录可以发布多个目录下的内容,并可以单独控制每个虚拟目录的访问权限。
.使用虚拟目录可以均衡Web服务器的负载,因为网站中资源来自于多个不同的服务器,从而避免单一服务器负载过重,响应缓慢。
五、配置tomcat多实例
配置多实例目录
在tomcat安装目录下创建www.tomcat2.com、www.tomcat3.com,并且将conf、logs、webapp、temp、work目录拷贝到这两个目录,然后tomcat安装目录只需要留下bin、www/tomcat2.com、www.tomcat3.com、lib这4个目录即可
[root@tomcat-server local]# cd /usr/local/tomcat/
[root@tomcat-server tomcat]# mkdir www.tomcat2.com #创建两个实例目录
[root@tomcat-server tomcat]# mkdir www.tomcat3.com
[root@tomcat-server tomcat]# cp -r conf logs webapps temp work www.tomcat2.com/
[root@tomcat-server tomcat]# mv conf logs webapps temp work www.tomcat3.com/
[root@tomcat-server tomcat]# tree -d -L
.
├── bin
├── lib
├── www.tomcat2.com
│ ├── conf
│ ├── logs
│ ├── temp
│ ├── webapps
│ └── work
└── www.tomcat3.com
├── conf
├── logs
├── temp
├── webapps
└── work directories
配置站点server.xml
www.tomcat2.com
[root@tomcat-server ~]# vim /usr/local/tomcat/www.tomcat2.com/conf/server.xml
<Server port="" shutdown="SHUTDOWN"> #修改管理端口
<Connector port="8082" protocol="HTTP/1.1" #修改http访问端口
<Connector port="" protocol="AJP/1.3" redirectPort="" /> #修改ajp访问端口
<Host name="www.tomcat2.com" appBase="/data/tomcat2" unpackWARs="true" autoDeploy="false" > #编辑一个host主机
<Context path="" docBase="" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs"
prefix="tomcat2_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
www.tomcat3.com
[root@tomcat-server ~]# vim /usr/local/tomcat/www.tomcat3.com/conf/server.xml
<Server port="" shutdown="SHUTDOWN"> #修改管理端口
<Connector port="" protocol="HTTP/1.1" #修改http访问端口
<Connector port="" protocol="AJP/1.3" redirectPort="" /> #修改ajp访问端口
<Host name="www.tomcat3.com" appBase="/data/tomcat3" unpackWARs="true" autoDeploy="false" > #编辑一个host主机
<Context path="" docBase="" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs"
prefix="tomcat3_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
编写tomcat实例启动脚本
#!/bin/sh
# description: 启动tomcat多实例.
. /etc/init.d/functions
RETVAL=$?
# tomcat实例目录
export CATALINA_BASE="$PWD"
# tomcat安装目录
export CATALINA_HOME="/usr/local/tomcat"
# 可选
export JVM_OPTIONS="-Xms128m -Xmx128m -XX:PermSize=64m -XX:MaxPermSize=64m"
case "$1" in
start)
if [ -f $CATALINA_HOME/bin/startup.sh ];then
echo $"Start Tomcat"
$CATALINA_HOME/bin/startup.sh
fi
;;
stop)
if [ -f $CATALINA_HOME/bin/shutdown.sh ];then
echo $"Stop Tomcat"
$CATALINA_HOME/bin/shutdown.sh
fi
;;
*)
echo $"Usage: $0 {start|stop}"
exit
;;
esac
exit $RETVAL
创建实例目录和测试页面
[root@tomcat-server ~]# mkdir /data/tomcat2
[root@tomcat-server ~]# mkdir /data/tomcat3
[root@tomcat-server ~]# echo "2+2=<%=2+2%>" > /data/tomcat2/test.jsp
[root@tomcat-server ~]# echo "3+3=<%=3+3%>" > /data/tomcat3/test.jsp
[root@tomcat-server ~]# chmod +x tomcat.sh
[root@tomcat-server ~]# cp tomcat.sh /usr/local/tomcat/www.tomcat2.com/
[root@tomcat-server ~]# cp tomcat.sh /usr/local/tomcat/www.tomcat3.com/
启动服务,一定要cd到tomcat.sh的当前目录下执行才可以
tomcat2:
[root@tomcat-server www.tomcat2.com]# ./tomcat.sh start
Start Tomcat
Using CATALINA_BASE: /usr/local/tomcat/www.tomcat2.com
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/www.tomcat2.com/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
tomcat3:
[root@tomcat-server www.tomcat3.com]# ./tomcat.sh start
Start Tomcat
Using CATALINA_BASE: /usr/local/tomcat/www.tomcat3.com
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/www.tomcat3.com/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
客户端配置好域名解析,测试环境使用hosts文件即可
tomcat2:

tomcat3:

能够正常访问,配置完成!
搭建Tomcat应用服务器、tomcat虚拟主机及Tomcat多实例部署的更多相关文章
- 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志
6月27日任务 16.4 配置Tomcat监听80端口16.5/16.6/16.7 配置Tomcat虚拟主机16.8 Tomcat日志扩展邱李的tomcat文档 https://www.linuser ...
- 在tomcat中添加虚拟主机,myeclipse中整合jdk和tomcat
* 虚拟主机技术 ---- 在tomcat中配置 <Host> 元素 1.下载搭建tomcat中网站 --- baidu 2.在c盘 新建虚拟主机目录 baidu , 在虚拟主机目录中 ...
- Tomcat 笔记-设置虚拟主机
通过作用虚拟主机,可以使多个不同域名的网站共存于一个Tomcat中 在tomcat的server.xml文件中添加主机名: <Host name="hostname" app ...
- 在 Tomcat 上配置虚拟主机
.Tomcat 服务器的server.xml文件 (1)Tomcat 组件 Tomcat服务器是由一系列可配置的组件构成,其中核心组件是 Catalina Servlet 容器,它是所有其他 To ...
- Tomcat配置虚拟主机、tomcat的日志
1.配置Tomcat的虚拟主机修改:vim /usr/local/tomcat9/conf/server.xml 添加一个虚拟主机:加入: <Host name="www.tomcat ...
- [svc]tomcat目录结构/虚拟主机/nginx反向代理cache配置
tomcat目录文件 /usr/local/tomcat/bin/catalina.sh stop sleep 3 /usr/local/tomcat/bin/catalina.sh start to ...
- 【原创】Apache和基于虚拟主机的Tomcat集群方案
最近建设了北京某政府机构的网站,网站前段使用Apache做负载均衡,后端使用Tomcat做的集群,基于虚拟主机的方式访问,并且实现了静态资源和动态资源的分离. 开始的建设方案有两种,一种是使用apac ...
- Linux centosVMware 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志
一.配置Tomcat监听80端口 关闭tomcat报错 [root@davery src]# /usr/local/tomcat/bin/shutdown.sh 重装tomcat即可 vim /usr ...
- tomcat实现多虚拟主机
一.安装tomcat 请查看:二进制安装tomat 二.配置虚拟主机 2.1 修改server.xml # vim /usr/local/tomcat/conf/server.xml ...省略 #在 ...
随机推荐
- Kotlin(一)
Kotlin(一) 写在前面: 参考资料: <Kotlin官方文档><Kotlin for Android 开源中文版> 准备工作: Android-Studio2.x:添加K ...
- 201621123075 week06-接口、内部类
1.本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰, ...
- 垃圾收集器(GC)
堆分区:所有new的对象都会存放在堆中 > 新生代(Young Generation):存放生命周期短的对象,具体还分为Eden和Survivor两个区,其中Survivor分为Fro ...
- C#mvc下拉框绑定
控制器 ViewData["select1"] = new SelectList(b.bd(),"names","names"); 视图 @ ...
- js splice函数 数组增加,替换,删除
splice函数参数介绍: 第一个参数: 对于数数组的操作起始位置. 第二个参数: 从第一个参数开始,删除数组中的个数. 从第三个参数之后所有参数(如果有):执行完第二步之后,都插入到第一个参数的起始 ...
- Linux应用调试 :使用gdb和gdbserver进行远程调试
一.引言 在日常程序开发中不免遇到类似空指针操作导致程序崩溃的问题,所以需要一定的手段去定位bug,而断点调试是普遍使用的技巧,比如Windows中用VC++的debug模式进单步运行.断点调试等,而 ...
- new 几种用法
第一种:创建对象(运算符) 第二种:隐藏基类方法( 修饰符) 第三种:new约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数 (泛型中的new()约束)
- centos 安装桌面系统
yum -y groupinstall "Desktop" "Desktop Platform" "X Window System" &qu ...
- 剑指Offer 48. 不用加减乘除做加法 (其他)
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目地址 https://www.nowcoder.com/practice/59ac416b4b944300 ...
- 周强201771010141《面向对象程序设计Java》第八周学习总结
一.理论知识学习部分 Java为了克服单继承的缺点,Java使用了接口,一个类可以实现一个或多个接口. 接口体中包含常量定义和方法定义,接口中只进行方法的声明,不提供方法的实现. 类似建立类的继承关系 ...