tomcat工作任务训练

news2024/11/19 3:36:01

文章目录

  • 1.安装jdk1.8 +tomcat9.0 发布java项目
    • 部署java环境
    • 部署tomcat
    • 启动tomcat,测试访问
    • 上传项目
    • 安装数据库,建库建户
    • web页面配置jpress
    • 测试写文章,上传附件
  • 2.tomcat多实例安装 比如 8080 8081 8082 发布3个论坛项目 war包也给你了
    • tomcat多实例含义
    • 复制目录
    • 修改配置文件
    • 测试访问
  • 3 工作任务:上面8080端口打开网站不安全 ,如果做到隐藏内网服务器,减少攻击 ,就是用nginx 做反向代理实现 也是面试问道题目
    • 安装配置nginx
    • 创建代理配置文件
    • 检查并启动nginx
    • 网页访问
  • 4 实战演示 :结果打开www.a.com 自动打开上面的java网站 使用nginx 均衡 3台tomcat 实现 打开论坛
    • 修改hosts文件
    • 网页访问www.it.com
    • 查看tomcat日志检查
  • 5 实战演示 : 修改tomcat默认发布目录

1.安装jdk1.8 +tomcat9.0 发布java项目

部署java环境

yum install java-1.8.0 -y
java -version

部署tomcat

mkdir /data/soft -p
cd /data/soft/
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.84/bin/apache-tomcat-8.5.84.tar.gz --no-check-certificate
tar xf apache-tomcat-8.5.84.tar.gz  -C /opt
cd /opt
ln -s apache-tomcat-8.5.84 tomcat

启动tomcat,测试访问

/opt/tomcat/bin/startup.sh

浏览器器访问http://192.168.169.180:8080/

在这里插入图片描述

上传项目

确保server.xml配置里面unpackWARs和autoDeploy是开启状态
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">

-bash-4.2# cd  /opt/tomcat/webapps
-bash-4.2# ll
总用量 20316
drwxr-x--- 15 root root     4096 1223 17:08 docs
drwxr-x---  7 root root       99 1223 17:08 examples
drwxr-x---  6 root root       79 1223 17:08 host-manager
-rw-r--r--  1 root root 20797013 1223 23:02 jpress-web-newest.war
drwxr-x---  6 root root      114 1223 17:08 manager
drwxr-x---  3 root root      223 1223 17:08 ROOT
-bash-4.2# ll  # 上传后几秒会自动解压
总用量 20316
drwxr-x--- 15 root root     4096 1223 17:08 docs
drwxr-x---  7 root root       99 1223 17:08 examples
drwxr-x---  6 root root       79 1223 17:08 host-manager
drwxr-x---  6 root root       86 1223 23:03 jpress-web-newest
-rw-r--r--  1 root root 20797013 1223 23:02 jpress-web-newest.war
drwxr-x---  6 root root      114 1223 17:08 manager
drwxr-x---  3 root root      223 1223 17:08 ROOT

安装数据库,建库建户

安装略

-bash-4.2# mysql -uroot -p123456   # 登录
 
# 建数据库
MariaDB [(none)]> create database jpress DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)
# 建用户
MariaDB [(none)]> grant all on jpress.* to jpress@'192.168.169.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
# 刷新
MariaDB [(none)]>  flush privileges;
Query OK, 0 rows affected (0.00 sec)

web页面配置jpress

访问http://192.168.169.180:8080/jpress/
前提:项目文件夹名字要改成jpress,否则访问不到
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重启一下tomcat

/opt/tomcat/bin/shutdown.sh
/opt/tomcat/bin/startup.sh
访问http://192.168.169.180:8080/jpress/admin在这里插入图片描述
在这里插入图片描述

测试写文章,上传附件

在这里插入图片描述
上传文件的路径/opt/tomcat/webapps/jpress/attachment/20221223
在这里插入图片描述
文章内容在数据库的位置:

MariaDB [jpress]> select * from jpress_content\G;
*************************** 1. row ***************************
              id: 1
           title: 再见,2022
            text: <p>再见2022</p>
<p>你好2023</p>
<p><img src="/jpress/attachment/20221223/3c92605b2bb44a6a8aa7fa0f713d9093.jpeg" alt="" width="192" height="108"></p>
         summary: NULL
         link_to: NULL
 markdown_enable: 0
       thumbnail: NULL
          module: article
           style: NULL
         user_id: 1
          author: NULL
      user_email: NULL
         user_ip: NULL
      user_agent: NULL
       parent_id: NULL
       object_id: NULL
    order_number: 0
          status: normal
         vote_up: 0
       vote_down: 0
            rate: NULL
      rate_count: 0
           price: 0.00
  comment_status: NULL
   comment_count: 0
    comment_time: NULL
      view_count: 0
         created: 2022-12-23 23:46:16
        modified: 2022-12-23 23:46:16
            slug: 再见_2022
            flag: NULL
             lng: NULL
             lat: NULL
   meta_keywords: NULL
meta_description: NULL
         remarks: NULL
1 row in set (0.00 sec)

ERROR: No query specified

2.tomcat多实例安装 比如 8080 8081 8082 发布3个论坛项目 war包也给你了

tomcat多实例含义

本质就是复制多个tomcat目录,然后修改为不同的端口并启动
代码一致,但是公用一个数据库

复制目录

-bash-4.2# cd /opt
-bash-4.2# ll
总用量 0
drwxr-xr-x 9 root root 220 1223 17:08 apache-tomcat-8.5.84
lrwxrwxrwx 1 root root  20 1223 17:09 tomcat -> apache-tomcat-8.5.84
-bash-4.2#  cp -a apache-tomcat-8.5.84 tomcat_01
-bash-4.2#  cp -a apache-tomcat-8.5.84 tomcat_02
-bash-4.2#  cp -a apache-tomcat-8.5.84 tomcat_03

修改配置文件

sed -i 's#8005#8006#g'  tomcat_01/conf/server.xml 
sed -i 's#8009#8010#g'  tomcat_01/conf/server.xml
sed -i 's#8080#8081#g'  tomcat_01/conf/server.xml 
sed -i 's#8005#8007#g'  tomcat_02/conf/server.xml 
sed -i 's#8009#8011#g'  tomcat_02/conf/server.xml
sed -i 's#8080#8082#g'  tomcat_02/conf/server.xml
sed -i 's#8005#8008#g'  tomcat_03/conf/server.xml 
sed -i 's#8009#8012#g'  tomcat_03/conf/server.xml
sed -i 's#8080#8083#g'  tomcat_03/conf/server.xml

测试访问

ss -lntup|grep java
在这里插入图片描述

http://192.168.169.180:8081/jpress
http://192.168.169.180:8082/jpress
http://192.168.169.180:8083/jpress

3 工作任务:上面8080端口打开网站不安全 ,如果做到隐藏内网服务器,减少攻击 ,就是用nginx 做反向代理实现 也是面试问道题目

安装配置nginx

-bash-4.2# cat /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key

-bash-4.2# yum install nginx -y

创建代理配置文件

-bash-4.2#  cat /etc/nginx/conf.d/proxy.conf
upstream java {
    server 192.168.169.180:8081;
    server 192.168.169.180:8082;
    server 192.168.169.180:8083;
}
server {
    listen       80;
    server_name  www.oldzhang.com;
    root   html;
    index  index.html index.htm;
    location / {
        proxy_pass http://java;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

检查并启动nginx

-bash-4.2# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
-bash-4.2# systemctl start nginx

网页访问

要修改windows的host文件,此处忽略,直接用ip代替
在这里插入图片描述

4 实战演示 :结果打开www.a.com 自动打开上面的java网站 使用nginx 均衡 3台tomcat 实现 打开论坛

修改hosts文件

C:\Windows\System32\drivers\etc\hosts文件中添加:

192.168.169.180   www.a.com
-bash-4.2# vim /etc/nginx/conf.d/proxy.conf
upstream java {
    server 192.168.169.180:8081;
    server 192.168.169.180:8082;
    server 192.168.169.180:8083;
}
server {
    listen       80;
    server_name   www.it.com;
    root   html;
    index  index.html index.htm;
    location / {
        proxy_pass http://java;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

网页访问www.it.com

在这里插入图片描述

查看tomcat日志检查

# 检查是否做到了负载均衡,随机访问其中一台tomcat服务器
tail -f /opt/tomcat_01/logs/localhost_access_log.2022-12-24.txt
tail -f /opt/tomcat_02/logs/localhost_access_log.2022-12-24.txt
tail -f /opt/tomcat_02/logs/localhost_access_log.2022-12-24.txt

5 实战演示 : 修改tomcat默认发布目录

默认发布路径为:tomcat/webapps/目录
修改tomcat/conf/server.xml文件

# name 虚拟主机名,对应目录 /conf /Catalina /localhost
# unpackWARs 是否自动解压war文件,true表示把war文件先展开再运行。false则直接运行war文件
# autoDeploy,默认为true,如果有新的WEB应用放入appBase并且Tomcat在运行的情况下,自动载入应用
# appBase应用程序基本目录,即存放应用程序的目录.一般为appBase="webapps" ,相对于CATALINA_HOME而言的,也可以写绝对路径。

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true"

改成

<Host name="localhost"  appBase="/root/webfile/webapps"
      unpackWARs="true" autoDeploy="true"

引申: 修改默认访问项目

<Host name="localhost"  appBase="/root/webfile/webapps" unpackWARs="true" autoDeploy="true">
<!-- 设置默认项目名称 -->
<Context path="" docBase="/root/webfile/web" reloadable="true"/> 
 
# Context表示一个web应用程序,通常为WAR文件
# path代表用浏览器访问的时候的的路径,如http://localhost:8080/web来访问path=”/web”
# docBase应用程序的路径或者是WAR文件存放的路径,也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径。
# reloadable这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重启tomcat的情况下改变应用程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/112650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(memcpy memmove memcmp memset)内存操作函数详解

目录 &#x1f355;注意&#xff1a;内存操作函数隶属于头文件&#xff0c;因此在使用任何内存操作函数之前都必须引用 &#x1f95e;memcpy函数 &#x1f35e;memcpy函数的初步认识及使用 &#x1f373;样例示范&#xff1a; &#x1f9c8;代码呈现&#xff1a; &#x1f9c…

浏览器原理二三事

目录 1. 如何理解 JavaScript 是单线程的 2. 进程与线程 2.1 在浏览器中&#xff0c;如何理解进程和线程的关系&#xff1f; 2.2 浏览器的五种进程 2.2.1 浏览器主进程&#xff08;Browser 进程&#xff09; 2.2.2 浏览器渲染进程&#xff08;Renderer 进程&#xff09; …

论文投稿指南——中文核心期刊推荐(航空、航天2)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

Linux——【磁盘管理和LVM卷组管理】

前言&#xff1a; Linux 磁盘管理好坏直接关系到整个系统的性能问题&#xff0c;目前市场上的磁盘分类有&#xff1a;IDE磁盘&#xff08;多用于PC机&#xff09;、SATA磁盘、SAS磁盘、SSD磁盘等这么几种分类&#xff0c;企业中服务器大多为后面的两种&#xff0c;SATA磁盘多用…

二叉树11:完全二叉树的节点个数

主要是我自己刷题的一些记录过程。如果有错可以指出哦&#xff0c;大家一起进步。 转载代码随想录 原文链接&#xff1a; 代码随想录 leetcode链接&#xff1a;222. 完全二叉树的节点个数 题目&#xff1a; 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数…

24行代码简单实现qq空间自动点赞

什么是Auto.js&#xff1f; Auto.js是基于JavaScript语言运行在Android平台上的工具。它依赖于无障碍服务。 它可以做什么&#xff1f; 解放双手&#xff0c;让手机自动打游戏、自动签到、自动领红包等等等等 它有什么优点&#xff1f; 不需要root权限&#xff08;Android…

Python pandas有几千个库函数,你用过几个?(3)

上一篇链接&#xff1a; Python pandas有好几百个库函数&#xff0c;你都用过吗&#xff08;2&#xff09;_Hann Yang的博客-CSDN博客 R(read_)&#xff1a; Function26~45 Types[Function][25:45] [read_clipboard, read_csv, read_excel, read_feather, read_fwf, read_gb…

目标检测算法——mmdetection下面的deformable-detr运行

1、环境 包版本mmcv-full1.4.2mmdet2.19.1torch1.10.0cu113torchvision0.11.1cu1132、文档 mmet官方文档 mmcv官方文档 源码下载 3、数据集 自定义数据集 4、修改代码 4.1、生成文件 打开mmdetection-master/tools下面执行train.py文件 其中配置文件--config在 mmdetec…

STM32中断使用NVIC

抢占优先级和响应优先级 值越小优先级越高&#xff0c;抢占优先级高就可以的打断抢占优先级低的&#xff1b;但同一个抢占优先级&#xff0c;高响应优先级并不能打断低响应优先级&#xff1b;当然中断同时发生的响应优先级高的先执行。简单理解为&#xff1a;抢占优先级能控制…

RV1126笔记十七:吸烟行为检测及部署<五>

若该文为原创文章,转载请注明原文出处。 ubuntu16.04上搭建转化成RKNN环境并把onnx转成RKNN模型(ubuntu16.04) onnx模型转rknn模型需要用到py3.8,所以搭建环境在转换,下面全部操作都是虚拟机下进行。 注意:转模型用py3.6, 训练用py3.8 一、miniconda安装 1、下载地址…

论文投稿指南——中文核心期刊推荐(自然科学总论)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

基于python的AD-census立体匹配算法实现

文章目录前言一、AD-census是什么&#xff1f;1.代价计算2.代价聚合3.视差优化4.视差后处理二、基于python的AD-census立体匹配算法实现前言 AD-Census算法来自于中国学者Xing Mei等在ICCV2011发表的论文《On Building an Accurate Stereo Matching System on Graphics Hardwar…

多类型随机图形生成方法及应用研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

Linux-5 基础命令

Linux-5 基础命令 查看类命令 此类命令仅能查看文件中的内容 ls是用来查看目录中的内容cat是用来查看文件中的内容 查看文件 cat 选项 -n&#xff1a;显示文件内容的行数-A&#xff1a;显示文件中的特殊字符&#xff08;如果从Windows拷贝配置文件到Linux&#xff0c;很容易出…

化学试剂Biotin-PEG-COOH,Biotin-PEG-acid,生物素-聚乙二醇-羧基

英文名称&#xff1a;Biotin-PEG-COOH&#xff0c;Biotin-PEG-acid 中文名称&#xff1a;生物素-聚乙二醇-羧基 生物素-PEG-COOH是一种含有生物素和羧酸的线性杂双功能PEG试剂。它是一种有用的带有PEG间隔基的交联或生物结合试剂。生物素能以高特异性和亲和力与亲和素和链霉亲…

C++:STL:常用容器(上):string

1&#xff1a;string容器 1.1 string基本概念 本质&#xff1a; string是C风格的字符串&#xff0c;而string本质是一个类 string和char* 区别 1&#xff1a;char* 是一个指针 2&#xff1a;string是一个类&#xff0c;类内部封装了 char* 管理这个字符串&#xff0c;是一个 …

5G无线技术基础自学系列 | 5G网络接入问题分析

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 5G网络的接入失败或者接入时延过大都会…

实现安卓LED设备驱动:不写一行代码

文章目录一、前言二、准备工作2.1 内核版本2.2 内核文档&#xff1a;bindings->leds2.3 文档解析&#xff1a; leds-gpio.txt三、编写DTS3.1 查原理图&#xff0c;挑选GPIO3.2 编写DTS文件四、编译测试4.1 编译dt.img4.2 烧录dt.img五、基于fs的测试5.1 测试命令5.2 **点灯效…

将单向链表按照目标值value 划分成左边小,中间等,右边大的形式,给定一个单链表,判断单链表的值是否是回文结构【图文解释包你看懂】

将单向链表按照目标值value 划分成左边小&#xff0c;中间等&#xff0c;右边大的形式 例如 1 -> 3 -> 5-> 3 -> 7 按照value 3划分 1-> 3-> 3 -> 5 -> 7 解题思路&#xff1a;给定值为 value 用6个变量&#xff0c;分别表示 小于value 的Head sH &…

2023年天津中德应用技术大学专升本专业课考试具体安排及准考证

2023年天津中德应用技术大学高职升本科专业课考试准考证下载及考生须知 一、准考证下载打印 12月24日12点开始&#xff0c;专业课报名审核通过的考生&#xff0c;登录学校专业课报名系统&#xff08;114.115.135.236/jobgroup/f&#xff09;&#xff0c;点击“准考证”&#xf…