16.5/16.6/16.7 配置Tomcat虚拟主机

16.5/16.6/16.7 配置Tomcat虚拟主机目录概要

  • vim /usr/local/tomcat/conf/server.xml
  • 其中<Host>和</Host>之间的配置为虚拟主机配置部分,name定义域名, appBase定义应用的目录,Java的应用通常是一个war的压缩包,你只需要将war的压缩包放到appBase目录下面即可。刚刚阿铭访问的Tomcat默认页其实就是在appBase目录下面,不过是在它子目录ROOT里。
  • 增加虚拟主机,编辑server.xml,在</Host>下面增加如下内容
<Host name="www.123.cn" appBase=""
    unpackWARs= "true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="/data/wwwroot/123.cn/" debug="0" reloadable="true" crossContext="true"/>
</Host>
  • docBase,这个参数用来定义网站的文件存放路径,如果不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBase和docBase可以一样。在这一步操作过程中很多同学遇到过访问404的问题,其实就是docBase没有定义对。
  • appBase为应用存放目录,通常是需要把war包直接放到该目录下面,它会自动解压成一个程序目录
  • 下面我们通过部署一个java的应用来体会appBase和docBase目录的作用
  • 下载zrlog wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
  • mv zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/
  • mv /usr/local/tomcat/webapps/zrlog-1.7.1-baaecb9-release /usr/local/tomcat/webapps/zrlog 浏览器访问 ip:8080/zrlog/install/
  • mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/

16.5/16.6/16.7 配置Tomcat虚拟主机

  • 在之前的学习中,Apache还是nginx都属于webServer,都支持虚拟主机配置文件,虚拟主机配置文件就是一台服务器上或者一个webserver上,支持一个IP下可以访问多个域名,每个域名代表一个网站,所以可以配置多个网站,每个网站的虚拟主机,每个网站的许配置文件都是一个虚拟主机,tomcat同样也支持这个概念
  1. 打开tomcat虚拟主机配置文件
  • tomcat的配置文件格式和Apache、nginx不一样,是xml形式
[root@hf-01 ~]# vim /usr/local/tomcat/conf/server.xml

搜索 /<Host
 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"    //日志相关
               prefix="localhost_access_log" suffix=".txt"         //日志相关
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />         //日志相关

      </Host>
  • <Host>到</Host>之间的就表示虚拟主机
  • name定义域名,域名为localhost
  • appBase 表示应用目录在哪里
    • 比如搭建了一个tomcat,想要使用tomcat去跑一个网站,那么需要网站放在哪里呢?
      • 首先你的应用不能是一个传统所谓的目录,Apache,nginx访问网站,首先需要指定一个目录,目录里存放着PHP文件或者是html的文件,然后去访问;而tomcat则不一样,它需要提供一个WAR的包,就是一个压缩包,这个压缩包里面包含着运行这个网站的一些文件,包括配置,js代码,数据库相关的等等,都需要打包成war这种文件,而这个文件需要放置到 webapps 里面
  • unpackWARs 就是是否自动的解压war这个包,也就是war包放到webapps里面,就会自动解压
  • 除了使用war包以外,还可以单独的指定目录,这个目录里面存放着一些jsp文件,也就是提供的不是war包,而就是一个目录,这个目录里面有jsp的程序,如果是这样,还需要docbase去定义
  • webapps的默认路径为/usr/local/tomcat/webapps/,webapps目录下,默认有5个目录(docs examples host-manager manager ROOT)
  • autoDeploy 如果此项设置为true,表示tomcat服务处于运行状态,能够检测appbase下的文件,如果有新的web应用加入进来,会自动发布这个web应用
  1. 增加虚拟主机,编辑server.xml,在</Host>下面增加如下内容
<Host name="www.123.cn" appBase=""
##域名为www.123.cn,appbase后为空,就不会于docBase相互干扰
        unpackWARs= "true" autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="/data/wwwroot/123.cn/" debug="0" reloadable="true" crossContext="true"/>
## 自定义站点路径,不使用自动安装war的方式
</Host>

保存退出
  • 如果不定义appbase,不想要war存在,可以定义一个目录,目录里放网站的程序,这个相当于把war包解压放到目录里,如果不想要解压这个包,就可以放到appbase里面,这两个二选一,如果同时存在,可以把其中一个写空,防止相互 干扰。
    • 有时会出现404问题,就有可能是appbase或者docbase定义错误
  • 总结
    • docBase,这个参数用来定义网站的文件存放路径,如果不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBase和docBase可以一样。在这一步操作过程中很多同学遇到过访问404的问题,其实就是docBase没有定义对。
    • appBase为应用存放目录(实际上是一个相对路径,相对于 /usr/local/tomcat/ 路径),通常是需要把war包直接放到该目录下面,它会自动解压成一个程序目录
  1. 为了方便测试,下载一个zrlog(java写的blog站点应用,轻量),zrlog实际就是一个war包,进行测试
  • 下载到/usr/local/src目录下
[root@hf-01 ~]# cd /usr/local/src
[root@hf-01 src]# wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
  1. zrlog安装很简单,appbase是支持自动解压war包的,将war文件放到appbase里面,appbase默认是在/usr/local/tomcat/webapps/
[root@hf-01 src]# ls /usr/local/tomcat/webapps/
docs  examples  host-manager  manager  ROOT
[root@hf-01 src]# 
  • 默认在下面有五个目录
  1. 将zrlog的war文件拷贝到/usr/local/tomcat/webapps/目录下,然后再来查看/usr/local/tomcat/webapps/,会看到war包自动解压了——>前提,tomcat正常启动着,否则是无法自动解压的
[root@hf-01 src]# cp zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/
[root@hf-01 src]# ls /usr/local/tomcat/webapps/
docs      host-manager  manager  zrlog-1.7.1-baaecb9-release
examples  logs          ROOT     zrlog-1.7.1-baaecb9-release.war
[root@hf-01 src]# 
  • 也就是说war包放到appbase定义的路径下会自动解压
  1. 解压完之后,就可以正常去访问了,修改zrlog包名称
  • 为了不影响实验结果,先更改自动生成的目录的名字,再移走webapps目录下的war包;因为一旦移走war包,和war同名的目录也会自动删除;如果这个目录下没有和war同名的目录,也会重复的解压
    • 若删除appbase下的war包,那么解压的包也会跟着直接删除
    • 修改war包的名称后,只要下载的war包一直存在,那么就会再次生成一个目录
[root@hf-01 src]# cd /usr/local/tomcat/webapps/
[root@hf-01 webapps]# mv zrlog-1.7.1-baaecb9-release zrlog
[root@hf-01 webapps]# ls
docs      host-manager  manager  zrlog
examples  logs          ROOT     zrlog-1.7.1-baaecb9-release.war
[root@hf-01 webapps]# ls
docs          logs     zrlog
examples      manager  zrlog-1.7.1-baaecb9-release
host-manager  ROOT     zrlog-1.7.1-baaecb9-release.war
[root@hf-01 webapps]# 
  1. 然后去访问,使用浏览器访问IP,会看到安装向导,其实就是一个配置数据库的过程
  1. 检查mysql服务是否正常启动
[root@hf-01 webapps]# ps aux |grep mysql
root      1313  0.0  0.1 115388  1680 ?        S    1月21   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/hf-01.pid
mysql     1653  0.0 45.1 1039104 456604 ?      Sl   1月21   0:20 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/hf-01.err --pid-file=/data/mysql/hf-01.pid
root      4744  0.0  0.0 112676   984 pts/0    R+   06:16   0:00 grep --color=auto mysql
[root@hf-01 webapps]# 
  1. 进入到数据库中,在数据库里面创建一个zrlog的数据库
[root@hf-01 webapps]# mysql -uroot -phanfeng
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database zrlog;
Query OK, 1 row affected (0.00 sec)

mysql> 
  1. 创建完数据库之后,还需要创建一个用户(库名可以不加单引号)
mysql> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by 'hanfeng1';
Query OK, 0 rows affected (0.01 sec)

mysql> quit
Bye
  1. 检查创建的数据库用户是否正确
[root@hf-01 webapps]# mysql -uzrlog -h127.0.0.1 -phanfeng1
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
| zrlog              |
+--------------------+
3 rows in set (0.01 sec)

mysql> 
  • 在执行 show databases; 命令后,会只看到zrlog
  1. 接下来就是在浏览器访问IP打开的网页,填写数据库的信息(系统信箱自定义即可),之后就能访问了,密码为 hanfneg
  1. 正常访问搭建的博客,并可以在文章后台发布文章

总结

  1. 首先部署环境,tomcat加jdk
  2. 部署完环境后偶,下载zrlog的war包过来
  3. 把war包放到appbase里面,它会自动的帮你解压,解压成一个目录,这个目录就是我们需要项目
  4. 配置一个数据库,对应的用户,数据库,密码
  5. 但这种访问,还需要在后面加一个目录

搭建好zrlog(测试用docBase指定路径,访问是否生效)

  1. 在搭建好zrlog后,在访问这个博客的时候,不想要这个目录,比如访问 192.168.202.130/zrlog/ ,去掉zrlog这个目录,直接用域名去访问
  2. 查看tomcat是配置文件,在配置文件中已经创建了一个新的虚拟主机,域名叫做www.123.cn,appbase没有去定义,也就是说不需要弄任何的war包过来,但定义了一个docbase,docbase就是一个目录,这里面不需要设置任何的war包,而是war包解压完的目录放进去
<Host name="www.123.cn" appBase=""
##域名为www.123.cn,appbase后为空,就不会于docBase相互干扰
        unpackWARs= "true" autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="/data/wwwroot/123.cn/" debug="0" reloadable="true" crossContext="true"/>
## 自定义站点路径,不使用自动安装war的方式
</Host>
  1. 创建/data/wwwroot/123.cn/目录
[root@hanfeng webapps]# mkdir /data/wwwroot/123.cn/
[root@hanfeng webapps]# 
  1. 然后把appbase下的zrlog目录下的所有文件,全部移动到docbase下的/data/wwwroot/123.cn/目录下
[root@hanfeng webapps]# mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/
[root@hanfeng webapps]# 
  1. 绑定hosts,在window物理机的hosts文件中,加入虚拟机的IP和网址
192.168.202.130   www.123.cn
  1. 在windows物理机上ping www.123.cn,如果放到到的的虚拟机上,就可以去访问它了
  1. 然后重启tomcat服务
  • /usr/local/tomcat/bin/shutdown.sh
  • /usr/local/tomcat/bin/startup.sh
[root@hanfeng webapps]# /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@hanfeng webapps]# /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/local/jdk1.8/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@hanfeng webapps]# 
  1. 查看端口
[root@hanfeng webapps]# netstat -lntp |grep 80
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      3484/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      3484/java           
tcp6       0      0 :::80                   :::*                    LISTEN      3484/java           
[root@hanfeng webapps]# 
  1. 浏览器访问www.123.cn ,按ctrl+f5刷新

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏偏前端工程师的驿站

打造高效前端工作环境-tmuxinator

前言  虽然tmux能让我们方便组织工作环境,但每次重新打开会话时都需要手动重新创建窗口、窗格和执行各种程序,能不能像VS那样以工程为单位保存窗口、窗格和各种所...

27210
来自专栏java技术学习之道

详解Tomcat 配置文件server.xml

2692
来自专栏小狼的世界

Memcache学习笔记一

收获最大的部分,我觉得是在应用上如何更好的对缓存进行使用和处理,来解决 Cache Stamples 的问题。通常只进行一次缓存判断的逻辑,在应对高并发的访问时...

841
来自专栏互扯程序

分布式跟踪工具-pinpoint安装部署

博主无意间接触到了这款工具!而且使用的时候觉得特别爽!比其他的检测工具强的不是一丁半点(个人认为)! 所以在这里分享给大家使用!

1981
来自专栏惨绿少年

企业级Tomcat部署实践及安全调优

1.1 Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由...

3020
来自专栏Zchannel

搭建一个属于自己 可多平台同步的私有云盘 —— Seafile

5374
来自专栏python3

gitlab 注册runner

向GitLab-CI注册一个Runner需要两样东西:GitLab-CI的url和注册token。 其中,token是为了确定你这个Runner是所有工程都能够...

1431
来自专栏运维小白

Linux基础(day57)

14.4 exportfs命令 exportfs命令 常用选项 -a 全部挂载或者全部卸载 -r 重新挂载 -u 卸载某一个目录 -v 显示共享目录 以下操作在...

2517
来自专栏乐沙弥的世界

Linux 6 下安装 tomcat 8

1233
来自专栏calvin

通过 pxe(网络安装)完成centos 系统的网络安装

首先交代环境。本地2台主机,一台windows主机,一台等待安装centos的主机。2台主机在同一个局域网。通过路由器自动获取ip上网。 网上大多数pxe安装...

3011

扫码关注云+社区

领取腾讯云代金券