Tomcat.md

Tomcat

Tomcat的目錄結構:

  • bin:腳本及啓動時用到的類
  • 1ib:類庫
  • conf:配置文件
  • webapps:應用程序默認部署目錄
  • work:工做目錄
  • temp:臨時文件目錄

配置文件

  • server.xml:主配置文件
  • context.xml:每一個webapp均可以有專用的配置文件,這些配置文件一般位於webapp應用程序目錄下的WEB-INF目錄中,用於定義會話管理器、JDBC等;conf/context.xml是爲各webapp提供默認配置;
  • web.xml:每一個webapp「部署」以後才能被訪問:此文件則用於爲全部的webapp提供默認部署相關的配置:
  • tomcat-users.xml:用戶認證的帳號和密碼配置文件:
  • catalina.policy:當使用-security選項啓動tomcat實例時會讀取此配置文件來實現其安全運行策略;
  • catalina.properties:Java屬性的定義文件,用於設定類加戴器路徑等,以及一些]Vm性能相關的調優參數;
  • logging.properties:日誌相關的配置信息:

Java WebAPP組織結構:

有特定的組織形式、層次型的目錄結構;主要包含了servlet代碼文件、JSP頁面文件、類文件、部署描述符文件等;
/usr/1ocal/tomcat/webapps/app1/html

  • /:webapp的根目錄:
  • WEB-INF/:當前webapp的私有資源目錄,一般存放當前webapp自用的web.xml;
  • META-INF/:當前webapp的私有資源目錄,一般存放當前webapp自用的context.xml;
  • classes/:此webapp的私有類
  • 1ib/:此webapp的私有類,被打包爲jar格式類:
  • index.jsp:webapp的主頁

webapp歸檔格式:java

  • .war:webapp
  • .jar:EJB的類
  • .rar:資源適配器
  • .ear:企業級應用程序:

安裝JDK

mkdir -p /usr/local/java
tar xf jdk-8u191-linux-x64.tar.gz -C /usr/local/java
ln -sv /usr/local/java/jdk1.8.0_191 /usr/local/java/latest
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/java/latest
export PATH=$JAVA_HOME/bin:$PATH

. /etc/profile.d/java.sh
java

安裝Tomcat

cd /usr/local/
tar xf apache-tomcat-8.5.37.tar.gz -C /usr/local/
ln -sv apache-tomcat-8.5.37/ tomcat
cat /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH

. /etc/profile.d/tomcat.sh
catalina.sh conftest
catalina.sh start
ss -tnlp
ps aux|grep java

客戶端測試
firefox http://192.168.100.101:8080

部署(deployment)webapp相關的操做:

  • deploy:部署,將webapp的源文件旋轉於目標目錄、配置tomcat服務器可以基於context.xml文件中定義的路徑來訪問此webapp;將其特有類經過class loader裝載至tomcat;mysql

    有兩種方式:linux

    • 自動部署:auto deploy
    • 手動部署:
      一、冷部署:把webapp複製到指定位置,然後才啓動tomcat;
      二、熱部署:在不中止tomcat的前提下進行的部分;部署工具:manager、ant腳本、tcd(tomcat client deployer)等;
  • undeploy:反部署,中止webapp,並從tomcat實例拆除其部分文件和部署名:nginx

  • stop:中止,再也不向用戶提供服務;web

  • start:啓動處於「中止」狀態的webapp:sql

  • redeploy:從新部署;shell

示例一

手動添加一個測試應用程序apache

建立webapp特有的目錄結構vim

mkdir myapp/{lib,classed,WEB-INF,META-INF} -pv
tree myapp/

提供webapp各文件

vim myapp/index.jsp <%@ page language="java" %> <%@ page import="java.util.*" %> <html> <head> <title>JSP Test Page</title> </head> <body> <% out.println("This is JSP test Page."); %> </body> </html> tree /usr/local/tomcat/work/ less work/Catalina/localhost/myapp/org/apache/jsp/index_jsp.java 客戶端測試 firefox http://192.168.100.101:8080/myapp/ 

tomcat自帶的應用程序:

manager app:webapp管理工具
host manager:Virtual Hosts管理工具

vim /usr/local/tomcat/conf/tomcat-users.xml
<tomcat-users>
  <role rolename="manager-gui"/>
  <role rolename="admin-gui"/>
  <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
</tomcat-users>

catalina.sh stop
catalina.sh start

客戶端訪問
firefox http://127.0.0.1:8080/
firefox http://127.0.0.1:8080/host-manager/
firefox http://127.0.0.1:8080/manager/

定義一個虛擬主機

cp server.xml{,.backup}
vim server.xml
 <Host name="web1.test.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="web1_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        </Host>
		
mkdir -pv /data/{webapps,logs}
cp -r /usr/local/tomcat/webapps/myapp/* /data/webapps/ catalina.sh configtest catalina.sh stop catalina.sh start ss -tnl 客戶端測試 echo web1.test.com 192.168.100.101 >> /etc/hosts firefox http://web1.test.com:8080/ 

部署一個shopxx虛擬主機

vim server.xml
<Host name="web1.test.com" appBase="/data/webapps" unpackWARs="true" autoDeploy="false">
       <Context path="" docBase="ROOT" reloadable="true" />
       <Context path="/shop" docBase="shopxx" reloadable="true" />
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs"
               prefix="web1_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        </Host>

mv /root/shopxx-3.0Beta/ /data/webapps
 ln -sv shopxx-3.0Beta/ shopxx

catalina.sh conftest
catalina.sh stop
catalina.sh start
ss -tnl

yum install mariadb-server mariadb -y
systemctl start mariadb
ss -tnl|grep 3306

mysql

grant ALL on shopxx.* TO shopuser@'127.0.0.1' IDENTIFIED BY 'shoppass';
FLUSH PRIVILEGES;

客戶端測試

firefox http://web1.test.com:8080/shop

![enter de

1

enter description here

2

enter description here

3

enter description here

4

enter description here

5

作訪問控制

vim server.xml
 <Host name="web1.test.com" appBase="/data/webapps" unpackWARs="true" autoDeploy="true">
       <Context path="" docBase="ROOT" reloadable="true">
        <Valve className="org.apache.catalina.valves.RemoteAddrValve" 
        deny="192\.168\.100\.101" />
        </Context>
       <Context path="/shop" docBase="shopxx" reloadable="true" />
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs"
               prefix="web1_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        </Host>

catalina.sh conftest
catalina.sh stop
catalina.sh start
ss -tnl

客戶端測試

curl web1.test.com:8080 -I|grep 403

LNMT

動靜分離
client >> http >>nginx >> reverse_proxy >> http >> tomcat(http connector)

yum install -y nginx
vim nginx.conf
        location ~* \.(jsp|do)$ {
                proxy_pass http://web1.test.com:8080;
        }

nginx -t 
nginx -s reload

firefox http://192.168.100.101/index.html
firefox http://192.168.100.101/index.jsp

LAMT

client >> http>> httpd>> reverse_proxy>> {http|ajp} >>tomcat {http connector|ajp connector}

反代模塊
主 proxy_module
子 proxy_module_http proxy_module_ajp

yum install httpd -y

查看httpd有哪些模塊
httpd -M
less /etc/httpd/conf.modules.d/00-proxy.conf

#proxy_module_http
vim /etc/httpd/conf.d/vhosts.conf
<VirtualHost *:80>
        ServerName web1.test.com
        ProxyVia On
        ProxyRequests Off
        ProxyPreserveHost On
        <Proxy *>
                Require all granted
        </Proxy>
        ProxyPass / http://192.168.100.101:8080/
        ProxyPassReverse / http://192.168.100.101:8080/
        <Location />
                Require all granted
        </Location>
</VirtualHost>

httpd -t 
systemctl restart httpd

#proxy_module_ajp
vim /etc/httpd/conf.d/vhosts.conf
<VirtualHost *:80>
        ServerName web1.test.com
        ProxyVia On
        ProxyRequests Off
        ProxyPreserveHost On
        <Proxy *>
                Require all granted
        </Proxy>
#		ProxyPass /status !
        ProxyPass / ajp://192.168.100.101:8009/
        ProxyPassReverse / ajp://192.168.100.101:8009/
        <Location />
                Require all granted
        </Location>
</VirtualHost>

httpd -t
systemctl restart httpd

firefox http://web1.test.com
firefox http://192.168.100.101

LNAMT

nginx >> apache> tomcat nginx作負載均衡 apache管理tomcat apache只作鏈接請求

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息