JDK 安装:
# 选择版本:
yum list all | grep jdk
# 安装openjdk-1.8.0:
yum install java-1.8.0-openjdk.x86_64 -y
# rpm包的jdk安装:
下载JDK
# 添加环境变量:
vim /etc/profile.d/jdk.sh
export JAVA_HOME=/use/java/default
export PATH=$JAVA_HOME/bin:$PATH
source jdk.sh
# 检测安装后的openjdk的版本:
[root@node-2 ~]# java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
tomcat 安装:
################# RPM 安装####################
# 安装 Tomcat 软件依赖:
yum install tomcat tomcat-admin-webapps tomcat-webapps -y
# 查看 yum 安装tomcat 到哪里:
rpm -ql tomcat
# 启动tomcat:
systemctl enable tomcat.service
systemctl start tomcat.service
################ tar 安装 ########################
# 源码安装:
cd /data/src/
wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-8/v8.5.55/bin/apache-tomcat-8.5.55.tar.gz
tar -zxf apache-tomcat-8.5.55.tar.gz && mv apache-tomcat-8.5.55 /data/soft/
ln -sv /data/soft/apache-tomcat-8.5.55 /data/soft/tomcat
# 添加系统账号(小权限用户来启动应用):
useradd -r www
chown -R www.www ./
su - www -c \'/data/soft/tomcat/bin/catalina.sh start\'
ps aux | grep tomcat
目录结构
目录 |
说明 |
bin |
服务启动,停止相关 |
conf |
配置文件 |
lib |
库目录 |
logs |
日志目录 |
webapps |
应用程序,应用部署 |
work |
JSP 编译后的结果文件 |
配置文件:
文件名 |
说明 |
server.xml |
主配置文件 |
web.xml |
每个webapp只有部署后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为:WEB-INF/目录中,此文件为所有的webapps提供默认部署相关的配置 |
context.xml |
每个webapp 都可以专用的配置文件, 它通常由专用的配置文件context.xml来定义,其存放位置为web-inf/目录中,此文件为所有的webapps提供默认配置. |
tomcat-user.xml |
用户认证的账号和密码文件 |
catalina.policy |
当使用-security选项启动tomcat时,用于为tomcat设置安全策略. |
catalina.properties |
java属性的定义文件, 用于设定加载器路径,以及一些与JVM调优相关参数 |
logging.properties |
日志系统相关的配置,log4j |
部署打包:
# 介绍参数:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
appBase # 代码目录
unpackWARs # 自动解压
autoDeploy # 自动部署
#部署Deploy:
1 部署: 将webapp的源文件放置到目标目录, 通过web.xml和context.xml 文件中的路径就可以访问该webapp,通过类加载器加载其特有的类和依赖的类到JVM上
1.1 ) 自动部署 Auto Deploy: Tomcat发现多了这个应用就把它加载起来.
1.2 ) 手动部署 :
1.2.1 ) 冷部署: 将webapp放到指定目录,才去启动Tomcat
1.2.2 ) 热部署: Tomcat 服务不停止,需要依赖工具manager,ant脚本,TCD(tomcat client deployer)等
2 反部署 undeploy: 停止webapp的运行,并从JVM上清楚已经加载的类,从tomcat实例上卸载掉webapp
3 启动start: 是webapp能够访问
4 停止stop : webapp 不能访问,不能提供服务,但是JVM并不清除它.
添加一个应用:
# cd
常见开发项目目录组成
# mkdir projects/myapp/{WEB-INF,classes,lib} -pv
mkdir: 已创建目录 "projects"
mkdir: 已创建目录 "projects/myapp"
mkdir: 已创建目录 "projects/myapp/WEB-INF"
mkdir: 已创建目录 "projects/myapp/classes"
mkdir: 已创建目录 "projects/myapp/lib"
常见应用首页,内容就用上面的test.jsp
# vi projects/myapp/index.jsp
手动复制项目目录到webapps目录下去
# cp -r projects/myapp/ /usr/local/tomcat/webapps/
使用http://YourIP:8080/myapp/访问试试看
配置详解 server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
</Service>
</Server>
## 安全建议: 关闭此端口. 8005是Tomcat的管理端口,默认监听在127.0.0.1上。SHUTDOWN这个字符串接收到后就会关闭此Server。
<Server port="8005" shutdown="SHUTDOWN">
** 这个管理功能建议禁用,改shutdown为一串猜不出的字符串。
<Server port="8005" shutdown="aldfjfgfgdfasxcvbgjywrtyehefghdfgsdgsd">
## 用户认证,配置文件是conf/tomcat-users.xml。
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
打开tomcat-users.xml,我们需要一个角色manager-gui。
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="manager-gui"/>
<user username="wayne" password="wayne" roles="manager-gui"/>
</tomcat-users>
*** Tomcat启动加载后,这些内容是常驻内存的。如果配置了新的用户,需要重启Tomcat。
访问manager的时候告诉403,提示中告诉去manager的context.xml中修改
# 允许访问的IP或者网络(allow里面加入 192\\.168\\.\\d+\\.d+|0\\.0\\.0\\.0|10\\.\\d+\\.\\d+\\.\\d+ )
vim /data/soft/tomcat/webapps/manager/META-INF/context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\\.\\d+\\.\\d+\\.\\d+|::1|0:0:0:0:0:0:0:1|192\\.168\\.\\d+\\.d+|0\\.0\\.0\\.0|10\\.\\d+\\.\\d+\\.\\d+" />
<Manager sessionAttributeValueClassNameFilter="java\\.lang\\.(?:Boolean|Integer|Long|Number|String)|org\\.apache\\.catalina\\.filters\\.CsrfPreventionFilter\\$LruCache(?:\\$1)?|java\\.util\\.(?:Lin
ked)?HashMap"/>
</Context>
访问manager 页面,测试各种功能:
/data/soft/tomcat/bin/catalina.sh stop
/data/soft/tomcat/bin/catalina.sh start
# 浏览器访问:
http://IP:8080/ 页面上功能即可使用
虚拟主机配置:
1 Service 实例配置:一般情况下一个server实例配置一个service,name属性相当于该Service的ID.
<Service name="Catalina">
2 连接器配置:
* 8080是http端口,8443是https端口:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
3 引擎配置:
* defaultHost指向内部定义某虚拟主机,缺省虚拟 主机可以改动,默认localhost.
*** 在defaultHost这里,可以更改主机的缺省默认主机id,必须是下面Host 区块里面的,默认访问就是制定的ID.一定要一样
<Engine name="Catalina" defaultHost="localhost">
4 虚拟主机配置:
4.1 ) name 必须是主机名,用主机名来匹配.
4.2 ) appBase 当期主机的网页根目录, 相对于CATALINA_HOME,也可以使用绝对路径.
4.3 ) unpachWARs 是否自动解压war格式.
4.4 ) autoDeploy 热部署,自动加载并运行应用.
4.5 ) 创建网站根目录(/data/webapps/ROOT),创建内部文件夹(classes,lib,WEB-INF,index.jsp)
mkdir -p /data/webapps/ROOT && mkdir -pv /data/webapps/ROOT/{classes,lib,WEB-INF}, 再创建一个index.jsp.
<Host name="node1.magedu.net" appBase="/data/webapps" unpackWARs="true" autoDeploy="false">
</Host>
*** 修改配置记得要重启.
/data/soft/tomcat/bin/catalina.sh configtest
/data/soft/tomcat/bin/catalina.sh stop
/data/soft/tomcat/bin/catalina.sh start
""" index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp例子</title>
</head>
<body>
node1.magedu.net 后面的内容是服务器端动态生成字符串,最后拼接在一起
<%
out.println("hello jsp");
%>
</body>
</html>
"""
5 Context 配置:
5.1 ) 路径映射.
5.2 ) 应用独立配置,例如单独配置应用日志, 单独配置应用访问控制.
5.3 ) 代码如下:
<Host name="node1.magedu.net" appBase="/data/webapps" unpackWARs="true" autoDeploy="false">
<Context path="/test" docBase="/data/test" reloadable="" />
</Host>
mkdir /data/myappv1 # 创建一个版本myappv1
cp -rf webapps/ROOT/* myappv1/ # cp 内容到新版本目录
ln -sv myappv1 test #给新版本做个软连接,
** 重启tomcat后
使用http://node1.magedu.com:8080/test/
5.4 ) 配置说明:
path指的是访问的路径
docBase,可以是绝对路径,也可以是相对路径(相对于Host的appBase)
reloadable,true表示如果WEB-INF/classes或META-INF/lib目录下.class文件有改动,就会将WEB应用重新加载。
生成环境中,会使用false来禁用。
*** 注意:这里特别使用了软链接,原因就是以后版本升级,需要将软链接指向myappv2,重启Tomcat。如果新版上
线后,出现问题,重新修改软链接到上一个版本的目录,并重启,就可以实现回滚。