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,會看到安裝嚮導,其實就是一個配置數據庫的過程html

    輸入圖片說明

  2. 檢查mysql服務是否正常啓動java

[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打開的網頁,填寫數據庫的信息(系統信箱自定義便可),以後就能訪問了,密碼爲 hanfnegmysql

    輸入圖片說明

  2. 正常訪問搭建的博客,並能夠在文章後臺發佈文章nginx

    輸入圖片說明

總結

  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刷新

輸入圖片說明

相關文章
相關標籤/搜索