• tomcat部署和优化(二)----- 轻松搭建博客、状态页优化、虚拟主机配置


    一、tomcat

    1、自建博客           

    1. [root@zzzcentos1 ~]#systemctl stop firewalld
    2. [root@zzzcentos1 ~]#setenforce 0
    3. [root@zzzcentos1 ~]#cd /data/
    4. [root@zzzcentos1 data]#rz -E
    5. rz waiting to receive.
    6. [root@zzzcentos1 data]#ls
    7. apache-tomcat-9.0.16 apache-tomcat-9.0.16.tar.gz jdk-8u291-linux-x64.tar.gz jpress-v3.2.1.war
    8. [root@zzzcentos1 data]#systemctl start tomcat
    9. [root@zzzcentos1 data]#cp jpress-v3.2.1.war /usr/local/tomcat/webapps/
    10. [root@zzzcentos1 data]#cd /usr/local/tomcat/webapps/
    11. [root@zzzcentos1 webapps]#ls
    12. docs examples host-manager jpress-v3.2.1 jpress-v3.2.1.war manager ROOT test test.html test.jsp
    13. [root@zzzcentos1 webapps]#ln -s jpress-v3.2.1 jpress
    14. [root@zzzcentos1 webapps]#ll
    15. [root@zzzcentos1 webapps]#cat >/etc/yum.repos.d/mysql.repo <<EOF
    16. > [mysql57-community]
    17. > name=MySQL 5.7 Community Server
    18. > baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
    19. > enabled=1
    20. > gpgcheck=0
    21. > EOF
    22. [root@zzzcentos1 webapps]#yum -y install mysql-community-server
    1. [root@zzzcentos1 webapps]#systemctl start mysqld
    2. [root@zzzcentos1 webapps]#ss -ntap |grep 3306
    3. LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=4082,fd=21))
    4. [root@zzzcentos1 webapps]#mysql -u root
    5. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
    6. [root@zzzcentos1 webapps]#grep password /var/log/mysqld.log #过滤密码
    7. 2024-03-01T05:34:17.775889Z 1 [Note] A temporary password is generated for root@localhost: R/nj%#.u3=5V
    8. 2024-03-01T05:39:18.713499Z 2 [Note] Access denied for user 'root'@'localhost' (using password: NO)
    9. [root@zzzcentos1 webapps]#mysql -uroot -p'R/nj%#.u3=5V'
    10. mysql: [Warning] Using a password on the command line interface can be insecure.
    11. Welcome to the MySQL monitor. Commands end with ; or \g.
    12. Your MySQL connection id is 4
    13. Server version: 5.7.44
    14. Copyright (c) 2000, 2023, Oracle and/or its affiliates.
    15. Oracle is a registered trademark of Oracle Corporation and/or its
    16. affiliates. Other names may be trademarks of their respective
    17. owners.
    18. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    19. mysql> set global validate_password_policy=0; #修改密码策略
    20. Query OK, 0 rows affected (0.00 sec)
    21. mysql> set global validate_password_length=1; #修改密码策略
    22. Query OK, 0 rows affected (0.01 sec)
    23. mysql> alter user root@'localhost' identified by 'Admin@123'; #设置用户密码
    24. Query OK, 0 rows affected (0.00 sec)
    25. mysql> quit;
    26. Bye
    1. [root@zzzcentos1 webapps]#mysql -uroot -p'Admin@123'
    2. mysql: [Warning] Using a password on the command line interface can be insecure.
    3. Welcome to the MySQL monitor. Commands end with ; or \g.
    4. Your MySQL connection id is 4
    5. Server version: 5.7.44 MySQL Community Server (GPL)
    6. Copyright (c) 2000, 2023, Oracle and/or its affiliates.
    7. Oracle is a registered trademark of Oracle Corporation and/or its
    8. affiliates. Other names may be trademarks of their respective
    9. owners.
    10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    11. mysql> CREATE DATABASE blog;
    12. ERROR 1007 (HY000): Can't create database 'blog'; database exists
    13. mysql> GRANT all ON blog.* TO 'bloguser'@'%' IDENTIFIED BY 'admin123';
    14. Query OK, 0 rows affected, 1 warning (0.00 sec)
    15. mysql> GRANT all ON blog.* TO 'bloguser'@'localhost' IDENTIFIED BY 'admin123';
    16. Query OK, 0 rows affected, 1 warning (0.00 sec)
    17. mysql> flush privileges;
    18. Query OK, 0 rows affected (0.01 sec)
    19. mysql> quit
    20. Bye
    21. [root@zzzcentos1 webapps]#

    1. cat >/etc/yum.repos.d/mysql.repo <<EOF
    2. [mysql57-community]
    3. name=MySQL 5.7 Community Server
    4. baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
    5. enabled=1
    6. gpgcheck=0
    7. EOF

    1. set global validate_password_policy=0;
    2. set global validate_password_length=1;
    3. #修改密码策略
    4. mysql> alter user root@'localhost' identified by 'Admin@123';

    1. CREATE DATABASE blog;
    2. GRANT all ON blog.* TO 'bloguser'@'%' IDENTIFIED BY 'admin123';
    3. GRANT all ON blog.* TO 'bloguser'@'localhost' IDENTIFIED BY 'admin123';
    4. flush privileges;

    去浏览器访问:

    服务器可以查看图片上传的位置:

    mysql 中 mysql 、admin 这些软件是工具,mysql端口号3306 

    2、破解密码:

    ①进入配置文件:

    看到密码被清空了

    1. [root@zzzcentos1 webapps]#vim /etc/my.cnf
    2. skip-grant-tables # 末尾加入
    3. [root@zzzcentos1 webapps]#systemctl restart mysqld
    4. [root@zzzcentos1 webapps]#mysql -uroot
    5. mysql> update mysql.user set authentication_string='' where user='root' and host='localhost';
    6. Query OK, 1 row affected (0.04 sec)
    7. Rows matched: 1 Changed: 1 Warnings: 0
    8. mysql> flush privileges;
    9. Query OK, 0 rows affected (0.03 sec)
    10. mysql> quit
    11. Bye
    12. [root@zzzcentos1 webapps]#pwd
    13. /usr/local/tomcat/webapps
    14. [root@zzzcentos1 webapps]#vim /etc/my.cnf
    15. skip-grant-tables #删除它
    16. [root@zzzcentos1 webapps]#systemctl restart mysqld
    17. [root@zzzcentos1 webapps]#pwd
    18. /usr/local/tomcat/webapps
    19. [root@zzzcentos1 webapps]#mysql -uroot

    如果再想设置密码

    show databases可以查看系统数据库有什么内容;存放了用户信息(用户名和用户密码)

    3. 状态页

    默认的管理页面被禁用

    • server status 状态页

    • manger app 管理项目

    • host manger 配置虚拟主机的设置

    (一) server status 状态页

    状态页比较重要,对权限有要求,不能通过远端进入

    我们可以根据状态页的提示信息进入配置文件进行修改

    ①开启状态页  修改conf/conf/tomcat-users.xml

    1. root@zzzcentos1 manager]#pwd
    2. /usr/local/tomcat/webapps/manager
    3. [root@zzzcentos1 manager]#cd /usr/local/tomcat/conf/
    4. [root@zzzcentos1 conf]#vim tomcat-users.xml
    5. [root@zzzcentos1 conf]#systemctl restart tomcat
    6. [root@zzzcentos1 conf]#

    1. <role rolename="manager-gui"/>
    2. <user username="tomcat" password="tomcat" roles="manager-gui"/>

    ②去浏览器访问

    修改完之后,去浏览器看还是不可以,只允许通过安装Tomcat的服务器本地进行登录

    然后我们去安装Tomcat的服务器的虚拟机看:

    tomcat 开启允许远程状态页

    1. [root@zzzcentos1 webapps]#cd manager/
    2. [root@zzzcentos1 manager]#ls
    3. images index.jsp META-INF status.xsd WEB-INF xform.xsl
    4. [root@zzzcentos1 manager]#cd META-INF/
    5. [root@zzzcentos1 META-INF]#ls
    6. context.xml
    7. [root@zzzcentos1 META-INF]#pwd
    8. /usr/local/tomcat/webapps/manager/META-INF
    9. [root@zzzcentos1 META-INF]#vim context.xml
    10. [root@zzzcentos1 META-INF]#systemctl restart tomcat
    11. [root@zzzcentos1 META-INF]#

    由于状态页比较重要,在设置登录权限时需要注意哪些地址可以访问,一般不建议开启远程登录

    (二)manger app 管理项目

    Apache Tomcat的Manager App界面是一个基于Web的管理工具,用于管理和监控部署在Tomcat服务器上的Web应用程序。访问路径为/manager/html

    (三)host manger 配置虚拟主机的设置

    解决办法与状态页一样

    tomcat 开启允许远程登录

    4.常见配置详解——端口安全

    在conf/server.xml 有以下内容

    [root@zzzcentos1 META-INF]#vim /usr/local/tomcat/conf/server.xml

    8005是Tomcat的管理端口,默认监听在127.0.0.1上。无需验证就可发送SHUTDOWN (大小写敏感)这个字符串,tomcat接收到后就会关闭此Server

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <Server port="8005" shutdown="SHUTDOWN">
    3.  <Service name="Catalina">
    4.    <Connector port="8080" protocol="HTTP/1.1"
    5.               connectionTimeout="20000"
    6.               redirectPort="8443" />
    7.    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    8.    <Engine name="Catalina" defaultHost="localhost">
    9.      <Host name="localhost"  appBase="webapps"
    10.            unpackWARs="true" autoDeploy="true">
    11.      </Host>
    12.    </Engine>
    13.  </Service>
    14. </Server>

    8005是Tomcat的管理端口,默认监听在127.0.0.1上。无需验证就可发送SHUTDOWN (大小写敏感)这个字符串,tomcat接收到后就会关闭此Server

    1. [root@centos7 ~]#telnet 127.0.0.1 8005 #优雅的关闭
    2. Trying 127.0.0.1...
    3. Connected to 127.0.0.1.
    4. Escape character is '^]'.
    5. SHUTDOWN #执行命令关闭tomcat
    6. Connection closed by foreign host.

    此管理功能建议禁用,可将SHUTDOWN改为一串猜不出的字符串实现或者port修改成 0,会使用随机端口  如:36913

    port设为-1等无效端口,将关闭此功能此行不能被注释,否则无法启动tomcat服务

    一般不动,不修改

    <Server port="8005" shutdown="xxxxxxxx">

    5.tomcat 端口号

    8080: 默认接收 http 请求的端口

    8005: 安全端口,可以关闭tomcat

    8009: apache 和 tomcat 联动 AJP 协议

    6.虚拟主机配置

    就需要使用到 Tomcat 虚拟主机。例如现在新增两个域名 www.kgc.com,www.accp.com希望通过这两个域名访问到不同的项目内容。(即一台服务器有两个域名)

    1. [root@zzzcentos1 data]#mkdir /data/web{1,2,3}/ROOT/ -p
    2. [root@zzzcentos1 data]#echo web1 www.a.com > /data/web1/ROOT/index.html
    3. [root@zzzcentos1 data]#echo web2 www.b.com > /data/web2/ROOT/index.html
    4. [root@zzzcentos1 data]#echo web3 www.c.com > /data/web3/ROOT/index.html
    5. [root@zzzcentos1 data]#cat /data/web1/ROOT/index.html
    6. web1 www.a.com
    7. [root@zzzcentos1 data]#cat /data/web2/ROOT/index.html
    8. web2 www.b.com
    9. [root@zzzcentos1 data]#cat /data/web3/ROOT/index.html
    10. web3 www.c.com
    11. [root@zzzcentos1 data]#vim /usr/local/tomcat/conf/server.xml
    12. </Host>
    13. 165 <Host name="www.a.com" appBase="/data/web1"
    14. 166 unpackWARs="true" autoDeploy="true">
    15. 167 </Host>
    16. 168 <Host name="www.b.com" appBase="/data/web2"
    17. 169 unpackWARs="true" autoDeploy="true">
    18. 170 </Host>
    19. 171 <Host name="www.c.com" appBase="/data/web3"
    20. 172 unpackWARs="true" autoDeploy="true">
    21. 173 </Host>
    22. [root@zzzcentos1 data]#systemctl restart tomcat.service
    23. [root@zzzcentos1 data]#
    24. 另一台机器
    25. [root@zzzcentos2 ~]#systemctl stop firewalld
    26. [root@zzzcentos2 ~]#setenforce 0
    27. [root@zzzcentos2 ~]#vim /etc/hosts
    28. [root@zzzcentos2 ~]#cat /etc/hosts
    29. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    30. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    31. 192.168.246.7 www.a.com www.b.com www.c.com
    32. [root@zzzcentos2 ~]#curl www.a.com:8080
    33. web1 www.a.com
    34. [root@zzzcentos2 ~]#curl www.b.com:8080
    35. web2 www.b.com
    36. [root@zzzcentos2 ~]#curl www.c.com:8080
    37. web3 www.c.com
    38. [root@zzzcentos2 ~]#

    检测:

    7.Context配置

    Context作用:

    • 路径映射:将url映射至指定路径,而非使用appBase下的物理目录,实现虚拟目录功能

    • 应用独立配置,例如单独配置应用日志、单独配置应用访问控制

    1. #映射指定路径
    2. <Context path="/test" docBase="/data/test" reloadable="true" />
    3. #映射站点的根目录
    4. <Context path="/" docBase="/data/website" reloadable="true" />
    5. #还可以添加日志等独立的配置
    6. <Context path="/test" docBase="/data/test" reloadable="true" >
    7.  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    8.               prefix="localhost_test_log" suffix=".txt"
    9.               pattern="%h %l %u %t "%r" %s %b" />
    10. </Context>

    说明:

    • path:指的是访问的URL路径,如果path与appBase下面的子目录同名,context的docBase路径优先更高

    • docBase:可以是磁盘文件的绝对路径,也可以是相对路径(相对于Host的appBase)

    • reloadable:true表示如果WEB-INF/classes或META-INF/lib目录下.class文件有改动,就会将WEB应用重新加载。生产环境中,建议使用false来禁用

    去检测:

    1. [root@zzzcentos1 data]#vim /usr/local/tomcat/conf/server.xml
    2. <Context path="/test" docBase="/data/test" reloadable="true" />
    3. #添加这一行,如果访问test就去/data/test下面
    4. [root@zzzcentos1 data]#systemctl restart tomcat #重启tomcat服务
    5. [root@zzzcentos1 data]#systemctl status tomcat
    6. [root@zzzcentos1 data]#mkdir test/
    7. [root@zzzcentos1 data]#cd test/
    8. [root@zzzcentos1 test]#echo welcome to test > index.html
    9. 另一台主机检测
    10. [root@zzzcentos2 ~]#curl www.a.com:8080/test/
    11. welcome to test
    12. [root@zzzcentos2 ~]#

    9.tomcat +nginx 动静分离

    实验:单机反向代理

     

    利用 nginx 反向代理实现全部转发至指定同一个虚拟主机

    客户端curl www.a.com 访问nginx服务,nginx服务通过配置反向代理proxy_pass www.a.com:8080,最终客户端看到的是www.a.com

    实验:7-3 做客户机,7-2做代理服务器,7-1 tomcat 服务器  数据传输从7-3到7-2到7-1

    7-1参考tomcat虚拟主机配置

    ① 7-2做代理服务器配置

    1. [root@zzzcentos2 ~]#systemctl stop firewalld
    2. [root@zzzcentos2 ~]#setenforce 0
    1. [root@zzzcentos2 ~]#rpm -q nginx
    2. 未安装软件包 nginx
    3. [root@zzzcentos2 ~]#yum install epel-release.noarch -y
    4. [root@zzzcentos2 ~]#yum install nginx -y
    5. [root@zzzcentos2 ~]#systemctl start nginx
    6. [root@zzzcentos2 ~]#systemctl status nginx

    进入/etc/nginx/nginx.conf编辑

    7-3客户机配置

    1. [root@localhost ~]#rpm -q nginx
    2. 未安装软件包 nginx
    3. [root@localhost ~]#systemctl stop firewalld
    4. [root@localhost ~]#setenforce 0
    5. [root@localhost ~]#
    6. [root@localhost ~]#yum install epel-release.noarch -y
    7. [root@localhost ~]#yum install nginx -y #安装nginx服务
    8. [root@localhost ~]#systemctl start nginx #开启nginx服务
    9. [root@localhost ~]#systemctl status nginx
    1. [root@zzzcentos3 ~]#rpm -q nginx
    2. nginx-1.20.1-10.el7.x86_64
    3. [root@zzzcentos3 ~]#vim /etc/hosts
    4. [root@zzzcentos3 ~]#cat /etc/hosts
    5. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    6. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    7. 192.168.246.8 www.a.com www.b.com www.c.com

    检测:

    代理服务器那里写什么就显示什么

    10.tomcat补充内容:

    1. #这些为注释的信息。它定义了Tomcat服务器中的角色(roles)和用户(users),以及这些
    2. #用户所归属的角色。(角色的含义相当于用户组)
    3. <role rolename="tomcat"/>
    4. #定义了一个名为 "tomcat" 的角色,这个角色可以对应于Tomcat服务器预定义的一些权限,比如
    5. #访问管理界面或部署应用等。
    6. <role rolename="role1"/>
    7. #定义了一个名为 "role1" 的自定义角色,可以根据实际需求赋予特定权限。
    8. <user username="tomcat" password="" roles="tomcat"/>
    9. #定义了一个用户名为 "tomcat" 的用户,并设置了初始密码(这里需要在实际使用时替换为强密码)
    10. #该用户归属于 "tomcat" 角色,因此拥有与该角色关联的所有权限。
    11. <user username="both" password="" roles="tomcat,role1"/>
    12. #定义了一个用户名为 "both" 的用户,同样设置了初始密码。这个用户同时属于 "tomcat"
    13. #和 "role1" 两个角色,因此拥有这两个角色合并后的所有权限。
    14. <user username="role1" password="" roles="role1"/>
    15. #定义了一个仅属于 "role1" 角色的用户。

    1. PS Eden Space
    2. '这是年轻代(Young Generation)的一部分,主要用于存储新创建的对象。当前已使用的内
    3. 存大小为210.02 MB,占其总容量(225.50 MB)的约93%'
    4. PS Old Gen
    5. '这是老年代(Old Generation),存放长期存活或晋升过来的对象。当前已使用的内存大小
    6. 25.57 MB,占其总容量(629.50 MB)的4%'
    7. PS Survivor Space
    8. '同样是年轻代的一部分,用于保存在年轻代中经历过一次GC但尚未被回收的对象。当前已使用的
    9. 内存大小为7.54 MB,占其总容量(45.00 MB)的16%'
    10. Code Cache
    11. '非堆内存区域,用于存储JIT编译后的机器码。当前已使用的内存大小为12.97 MB,占其最大可
    12. 扩展容量(240.00 MB)的5%'
    13. Compressed Class Space
    14. '另一个非堆内存区域,当类空间过大时,经过压缩的类会被存放到此区域以节省内存。当前已使
    15. 用的内存大小为6.58 MB,占其最大容量(1024.00 MB)的0%,这里的“0%”可能是显示错误,因
    16. 为已经使用了6.58 MB的空间。'
    17. Metaspace
    18. '从Java 8开始取代了永久代(PermGen),用于存储类元数据信息。这里显示的最大容量为“-0.00 MB”,
    19. 这意味着Metaspace的大小可以动态调整,不受固定上限限制;当前已使用的内存大小为54.99 MB'

  • 相关阅读:
    C++数据类型范围
    基础算法---差分
    第二十章 多线程
    MySQL(基础篇)——函数、约束
    36、Flink 的 WindowAssigner之滑动窗口示例
    springboot停车场车辆定位管理可视化分析系统的设计与实现毕业设计源码101702
    Trello与Notion的开源替代项目管理利器Focalboard本地安装与远程访问
    遨博机械臂——ROS通讯机制
    RAW、RGB、YUV 图像格式区别
    sonic-ios-bridge(sib)使用
  • 原文地址:https://blog.csdn.net/zzzxxx520369/article/details/136392964