有特定的组织形式、层次型的目录结构;主要包含了servlet代码文件、JSP页面文件、类文件、部署描述符文件等;
/usr/1ocal/tomcat/webapps/app1/html
webapp归档格式:java
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
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
deploy:部署,将webapp的源文件旋转于目标目录、配置tomcat服务器可以基于context.xml文件中定义的路径来访问此webapp;将其特有类经过class loader装载至tomcat;mysql
有两种方式:linux
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/
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 "%r" %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/
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 "%r" %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
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 "%r" %s %b" />
</Host>
catalina.sh conftest
catalina.sh stop
catalina.sh start
ss -tnl
客户端测试
curl web1.test.com:8080 -I|grep 403
动静分离
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
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
nginx >> apache> tomcat nginx作负载均衡 apache管理tomcat apache只作链接请求