目录
一、自建博客
1. 项目背景
2. 操作示例
二、状态页
1. 概述
2. server status 信息状态页
3. manager app 项目管理状态页
4. host manger 虚拟主机管理状态页
三、常见配置
1. 端口8005/tcp安全配置管理
2. tomcat端口号
3. 虚拟主机设置
4. Context配置
一、自建博客
1. 项目背景
在当今互联网时代,博客已经成为人们分享知识、观点和经验的重要平台。Java作为一种广泛应用于企业级应用开发的编程语言,具有强大的生态系统和丰富的工具库,因此使用Java构建自己的博客平台是一个常见的选择。
2. 操作示例
① 自建数据库yum仓库
[root@localhost ~]# vim /etc/yum.repos.d/mysql.repo
[mysql57-community]
name=MySQL 5.7 community server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1 #该仓库是启用状态,可以被 Yum 使用来获取软件包和元数据信息
gpgcheck=0 #不校验
② yum安装mysql
[root@localhost ~]# yum install -y mysql-community-server
③ 启动数据库,修改密码策略,修改密码
[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# ss -natp | grep mysql
LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=2996,fd=21))
[root@localhost ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@localhost ~]# grep password /var/log/mysqld.log
2024-03-03T12:53:22.236160Z 1 [Note] A temporary password is generated for root@localhost: C?Cb!T8yVuho
2024-03-03T12:59:23.653530Z 2 [Note] Access denied for user 'root'@'localhost' (using password: NO)
[root@localhost ~]# mysql -uroot -p
Enter password: #复制C?Cb!T8yVuho
mysql> set global validate_password_policy=0; #复杂性没有要求
Query OK, 0 rows affected (0.01 sec)
mysql> set global validate_password_length=1; #长度没有要求
Query OK, 0 rows affected (0.00 sec)
mysql> alter user root@'localhost' identified by 'abc123'; #修改密码
Query OK, 0 rows affected (0.00 sec)
修改密码也可以:
mysqladmin -uroot -p'C?Cb!T8yVuho' password '新密码'
④ 创建数据库
[root@localhost ~]# mysql -u root -p'abc123'
mysql> grant all on blog.* to 'bloguser'@'%' identified by 'abc123';
mysql> grant all on blog.* to 'bloguser'@'localhost' identified by 'abc123';
mysql> flush privileges;
⑤ 准备项目包
[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# systemctl start tomcat.service
[root@localhost webapps]# ls
docs examples host-manager jpress-v3.2.1 jpress-v3.2.1.war manager ROOT test
[root@localhost webapps]# ln -s jpress-v3.2.1 jpress
⑥ 访问站点目录注册登录
二、状态页
1. 概述
Tomcat状态页是一个Web页面,它提供了有关Tomcat运行状态和性能的信息。通过查看状态页,你可以了解Tomcat的线程池使用情况、JVM内存使用情况、当前正在运行的应用程序等信息。默认的管理页面被禁用,启用方法如下:
2. server status 信息状态页
① 默认情况下状态页是无法查看的
② 配置文件添加角色密码
[root@localhost ~]# cd /usr/local/tomcat/conf/
[root@localhost conf]# ls
Catalina catalina.properties jaspic-providers.xml logging.properties tomcat-users.xml web.xml
catalina.policy context.xml jaspic-providers.xsd server.xml tomcat-users.xsd
[root@localhost conf]# vim tomcat-users.xml #加下面两行,指定用户和密码
44 <role rolename="manager-gui"/>
45 <user username="tomcat" password="tomcat" roles="manager-gui"/>
[root@localhost conf]# systemctl restart tomcat.service
#修改全局配置文件需要重启服务生效
③ 本机登录查看
④ 远程查看状态页
[root@localhost ~]# cd /usr/local/tomcat/webapps/manager/META-INF/
[root@localhost META-INF]# ls
context.xml
[root@localhost META-INF]# vim context.xml
20 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.\d+\.\d+\.\d+" />
#添加允许的192主机地址
[root@localhost META-INF]# systemctl restart tomcat.service
注意:一般不建议开启远程访问,可以指定允许特定地址。
3. manager app 项目管理状态页
① 管理现有web应用程序
② 可视化部署
4. host manger 虚拟主机管理状态页
① 配置文件添加角色密码
[root@localhost ~]# cd /usr/local/tomcat/conf/
[root@localhost conf]# vim tomcat-users.xml
45 <role rolename="admin-gui"/>
46 <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
[root@localhost conf]# systemctl restart tomcat.service
② 添加远程查看状态页主机地址
[root@localhost META-INF]# cd /usr/local/tomcat/webapps/host-manager/META-INF/
[root@localhost META-INF]# ls
context.xml
[root@localhost META-INF]# vim context.xml
20 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.\d+\.\d+\.\d+" />
[root@localhost META-INF]# systemctl restart tomcat.service
③ 访问状态页
三、常见配置
1. 端口8005/tcp安全配置管理
8005是Tomcat的管理端口,默认监听在127.0.0.1上。无需验证就可发送SHUTDOWN (大小写敏感)这个字符串,tomcat接收到后就会关闭此Server。
① 关闭8005端口
[root@localhost ~]# telnet 127.0.0.1 8005 #优雅的关闭
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SHUTDOWN
Connection closed by foreign host.
此管理功能建议禁用,可将SHUTDOWN改为一串猜不出的字符串实现;或者将port设为-1等无效端口,将关闭此功能此行不能被注释(!表示注释),否则无法启动tomcat服务
② 示例:修改配置文件
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
22 <Server port="8005" shutdown="xxxxxxxxxxxx">
或者
22 <Server port="-1" shutdown="SHUTDOWN">
2. tomcat端口号
8080: 默认接收 http 请求的端口
8005: 安全端口,可以关闭tomcat
8009: apache 和 tomcat 联动 AJP 协议
3. 虚拟主机设置
可能有时候多个项目需要运行,肯定不可能是一台服务器上运行多个 Tomcat 服务,这样会消耗太多的系统资源。此时,就需要使用到Tomcat虚拟主机。
现在新增两个域名希望通过这两个域名访问到不同的项目内容:
① 创建虚拟主机相关目录
[root@localhost ~]# mkdir /data/web{1,2,3}/ROOT/ -p #默认页面在ROOT目录下
[root@localhost ~]# echo web1 > /data/web1/ROOT/index.html
[root@localhost ~]# echo web2 > /data/web2/ROOT/index.html
[root@localhost ~]# echo web3 > /data/web3/ROOT/index.html
[root@localhost ~]# chown -R tomcat.tomcat /data/
② 修改全局配置文件
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
165 <Host name="www.a.com" appBase="/data/web1"
166 unpackWARs="true" autoDeploy="true">
167 </Host>
168 <Host name="www.b.com" appBase="/data/web2"
169 unpackWARs="true" autoDeploy="true">
170 </Host>
171 <Host name="www.c.com" appBase="/data/web3"
172 unpackWARs="true" autoDeploy="true">
173 </Host>
#找到host主机项,注意根目录中一定要有ROOT这是默认的主目录
#注意默认的结束</HOST>这段要在默认结束的后面加上
[root@localhost ~]# systemctl restart tomcat.service
③ 客户端添加域名解析
[root@localhost ~]# vim /etc/hosts
192.168.190.102 www.a.com www.b.com www.c.com
④ 客户端访问对应域名
[root@localhost ~]# curl www.a.com:8080
web1
[root@localhost ~]# curl www.b.com:8080
web2
[root@localhost ~]# curl www.c.com:8080
web3
4. Context配置
Context是Tomcat中用于配置Web应用程序的组件。每个Web应用程序都必须在一个Context中进行配置。Context元素用于指定Web应用程序的上下文路径、Web应用程序的基本目录、类加载器、Session管理器等等。在Context中,你可以配置Web应用程序的各种行为,例如安全性、会话管理、JNDI 等等。
Context作用:
- 路径映射:将url映射至指定路径,而非使用appBase下的物理目录,实现虚拟目录功能
- 应用独立配置,例如单独配置应用日志、单独配置应用访问控制
格式:
#映射指定路径
<Context path="/test" docBase="/data/test" reloadable="true" />
#映射站点的根目录
<Context path="/" docBase="/data/website" reloadable="true" />
#还可以添加日志等独立的配置
<Context path="/test" docBase="/data/test" reloadable="true" >
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_test_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Context>
说明:
- path:指的是访问的URL路径,如果path与appBase下面的子目录同名,context的docBase路径优先更高
- docBase:可以是磁盘文件的绝对路径,也可以是相对路径(相对于Host的appBase)
- reloadable:true表示如果WEB-INF/classes或META-INF/lib目录下.class文件有改动,就会将WEB应用重新加载。生产环境中,建议使用false来禁用。
示例:
① 添加web文件
[root@localhost ~]# cd /data
[root@localhost data]# mkdir test
[root@localhost data]# echo test > test/index.html
② 修改配置文件
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
165 <Host name="www.a.com" appBase="/data/web1"
166 unpackWARs="true" autoDeploy="true">
167 <Context path="/test" docBase="/data/test" reloadable="false" />
168 </Host>
#如果访问www.a.com/test/那么就替换成"/data/test
[root@localhost ~]# systemctl restart tomcat.service
③ 客户端访问
[root@localhost ~]# curl www.a.com:8080/test/
test