Tomcat部署
一、补充,
1. system启动和绝对路径启动
1.绝对路径使用脚本启动,使用which命令可以查看路径
[root@haoxx ~]# which nginx
/usr/sbin/nginx
2.使用systemctl启动,有的程序有,有的没有
也是调用绝对路径,可以使用systemctl cat nginx查看
[root@haoxx ~]# systemctl stop nginx
3.如果程序自带没有system控制,可以自己编写
具体操作看文章以下内容(二、3.1)
2. location匹配规则default;
- 访问nginx服务,如果匹配不到,默认会访问第一个.conf配置
- 如何指定能,如下
server {
listen 80 default; ### 如果匹配不到,则匹配www.wp.com
server_name www.wp.com;
root /soft;
location / {
index index.html;
}
}
3. 截止现在二阶段面试题总结
重点:
1.backup服务(rsync,lsync)
2.nfs服务,公有云NAS OSS
3.nginx服务
负载均衡调度算法
LVS的四种网络模式
会话保持如何做
loction匹配优先级
你优化过nginx那些东西
如何实现的负载均衡
4.HTTP状态码
5.HTTPS加密流程
6.网站访问流程:
DNS解析
TCP三次握手
HTTP请求
HTTP响应
nginx 动态处理流程+静态处理流程
TCP的四次挥手
7....待补充
二、部署tomcat
注意点:
对应的tomcat的版本,要安装对应的java环境(jdk)
去tomcat官网找Please see the README file for packaging information说明文档
1.安装对应版本java环境
- 本次安装tomcat,需要java8以上版本,如果只想装jdk可以查看java8里的jdk版本
安装jdk1.8-1.8.0_181-fcs.x86_64
2.下载部署tomcat
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98.tar.gz
mkdir /soft/
tar xf apache-tomcat-9.0.98.tar.gz -C /soft
ln -s /soft/apache-tomcat-9.0.98 /soft/tomcat
启动:/soft/tomcat/bin/startup.sh
查看:netstat -tupln | grep :8080
停止:/soft/tomcat/bin/shutdown.sh
3.配置tomcat以system启动控制
- 注意如果使用system控制,则无法使用绝对路径控制
- 同理,如果使用绝对路径启动,那么system无法stop和其他操作,需要先kill掉
# systemctl cat nginx 复制过来修改一下
# 配置system启动脚本
cat >/usr/lib/systemd/system/tomcat.service<<'EOF'
[Unit]
Description=Apache Tomcat Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/soft/tomcat/bin/startup.sh
ExecStop=/soft/tomcat/bin/shutdown.sh
ExecRetart=/soft/tomcat/bin/shutdown.sh && sleep2 && /soft/tomcat/bin/startup.sh
[Install]
WantedBy=multi-user.target
EOF
##### systemctl daemon-reload 使配置文件生效
##### systemctl启动测试
三、tomcat的配置文件
tomcat目录:
tomcat软件目录结构:
bin ---主要包含启动和关闭tomcat的脚本(启停java脚本依赖jar包文件)
conf ---tomcat配置文件的目录(站点配置:server.xml)
lib ---tomcat运行时需要加载的jar包
logs ---tomcat日志存放位置
temp ---tomcat临时存放文件路径
webapps ---tomcat默认站点目录
work ---tomcat运行时产生的缓存文件
tomcat主配置文件:
/tomcat/conf/server.xml ,是xml格式 \
[root@oldboyedu ~]# cat /soft/tomcat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<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>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/>
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="diy.tomcat.com" appBase="/code/tomcat"
unpackWARs="true" autoDeploy="true">
<Context docBase="/code/tt" path="/abc" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="diy_tomcat" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
------------------------------------------------
如果想增加类似于nginx的server区块则,复制粘贴以下模块,修改一些参数即可
域名diy.tomcat.com、代码目录/code/tomcat、日志文件名称diy_tomcat.log
<Host name="diy.tomcat.com" appBase="/code/tomcat"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="diy_tomcat" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
---------------------------------------------下方配置文件详解
1. server区块
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
1. `<Server>`:这是配置文件的根元素,代表整个Tomcat服务器的配置。
2. `port="8005"`:指定Tomcat服务器关闭端口,通过这个端口发送SHUTDOWN命令可以安全地关闭服务器。
3. `shutdown="SHUTDOWN"`:这是关闭服务器时使用的命令。
4. `<Listener>`:定义了服务器启动时需要加载的监听器。例如:
- `VersionLoggerListener`:记录Tomcat版本信息。
- `AprLifecycleListener`:用于处理Apache Portable Runtime库的生命周期事件。
- `JreMemoryLeakPreventionListener`:防止JRE内存泄漏。
- `GlobalResourcesLifecycleListener`:管理全局资源的生命周期。
- `ThreadLocalLeakPreventionListener`:防止线程局部变量(ThreadLocal)内存泄漏。
2. Globa区块
<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自带监控等等
`<GlobalNamingResources>`:定义全局命名资源,这些资源可以被整个服务器访问。
`<Resource>`:定义了一个名为"UserDatabase"的资源,这是一个用户数据库,可以被更新和保存。它使用`MemoryUserDatabaseFactory`工厂类,并指向`conf/tomcat-users.xml`文件。
3. service区块
<Service name="Catalina">
`<Service>`:定义了一个服务,服务名是"Catalina",这是Tomcat的默认服务
4. Connector区块
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/>
类似linten 8080;
`<Connector>`:定义了一个连接器,用于处理HTTP请求。参数包括:
- `port="8080"`:HTTP请求的端口。
- `protocol="HTTP/1.1"`:使用的HTTP协议版本。
- `connectionTimeout="20000"`:连接超时时间(毫秒)。
- `redirectPort="8443"`:当使用SSL时,重定向到的端口。
- `maxParameterCount="1000"`:允许的最大参数数量。
5. Engine区块
<Engine name="Catalina" defaultHost="localhost">
`<Engine>`:定义了一个引擎,引擎名是"Catalina",这是Tomcat的默认引擎。默认本机localhost
6. Realm区块
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
`<Realm>`:定义了一个Realm,用于安全控制。这里有两个Realm:
7. host区块
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
</Host>
## 如果不是自动解压war包,必须在代码目录下创建一个ROOT目录,资源放到ROOT下,固定写法
cat webapps/ROOT/index.html
## 定义代码目录,
`<Host>`:定义了一个虚拟主机,主机名是"localhost",应用基础路径是"webapps"。参数包括:
- `appBase="webapps"`:应用程序的基础目录。
- `unpackWARs="true"`:是否自动解压WAR文件。
- `autoDeploy="true"`:是否自动部署应用程序。
8. Valve区块
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
`<Valve>`:定义了一个阀门,用于访问日志记录。参数包括:
- `className="org.apache.catalina.valves.AccessLogValve"`:阀门的类名。
- `directory="logs"`:日志文件的目录。
- `prefix="localhost_access_log"`:日志文件的前缀。
- `suffix=".txt"`:日志文件的后缀。
- `pattern="%h %l %u %t \"%r\" %s %b"`:日志记录的格式。
9.Context区块
用户访问diy.oldboy.com:8080/abc去服务器/code/tt找资源,类似于 location /abc {
<!--访问diy.oldboy.com:8080/tt这个uri,获取/code/tt中页面资源,不存在该目录会报错 无
法启动Tomcat 需要提前创建-->
<Context docBase="/code/tt" path="/abc" reloadable="true" />
10.配置启动,测试
配置:<Host name="diy.tomcat.com" appBase="/code"
操作:
mkdir /code/ROOT/
在/code/ROOT/新建资源,或者把war包放到/code下,会自动解压
hosts劫持
访问测试
四、tomcat自带管理页面
- 默认不可以使用,需要配置
- 需要在配置文件里,给用户授权角色
配置:
- 打开默认页的全局资源限制:
- 默认不可以使用,需要配置
- 需要在配置文件里,给用户授权角色
# 添加角色,授权用户角色,可以参考上方官方配置说明图片
Tomcat自带的管理页面
管理功能
监控功能
1.所有的管理页面,都将权限赋予给了角色,而角色的名称是固定的: manager-gui admin-gui
2.需要添加一个用户,将用户捆绑至对应的角色,这样用户就可以访问到对应的页面
[root@web01 ROOT]# vim /soft/tomcat/conf/tomcat-users.xml
...
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="123456" roles="manager-gui,admin-gui"/>
</tomcat-users>
3.由于项目默认允许127.0.0.1访问,所以配置好了角色和用户也无法正常访问:
[root@web01 ROOT]# vim /soft/tomcat/webapps/host-manager/META-INF/context.xml
[root@web01 ROOT]# vim /soft/tomcat/webapps/manager/META-INF/context.xml
默认状态,
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
修改后的状态:10\.0\.0\.\d
或者:d+\.\d+\.\d+\.\d+|
#允许所有ip或者10网段的ip
4. 重启tomcat并访问
5.浏览器可以管理,点点也可以增加server业务(不过web页面配置的是临时的,不写入主配置文件)
五、Tomcat部署zrlog项目
1.配置tomcat文件
配置tomcat文件,加一个<Host模块,配置
vim /soft/tomcat/conf/server.xml
...
<Host name="zrlog.oldboy.com" appBase="/zrlog"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="zrlog_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
.......
2.下载代码.war包,部署
zrlog官网: https://zrlog.com/
1.wget下载war包,
2.mv改名为ROOT.var
3.然后mv移动到/zrlog下,会自动解压
也不用新建ROOT目录了,一箭双雕
4.ls查看是否解压
5.去数据库服务器创建zrlog库
如果配置了数据库远程授权部分省略直接创建zrlog库即可
MariaDB [(none)]> create database zrlog charset utf8;
MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'xxxxxx';
6.重启服务,hosts劫持浏览器访问,安装代码
http://zrlog.oldboy.com:8080/
7.登录,发表文章测试