六tomcat

news2024/12/26 22:15:36

​​​​​​在这里插入图片描述

Java Web环境搭建

1. 初识Tomcat

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。Tomcat 是 Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行 Tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。

  • Tomcat端口:关闭端口 8005 启动监听端口 8080
  • Tomcat:采用了同步阻塞的模式
  • 配置文件: /usr/local/tomcat/conf/server.xml
  • 网页打包目录:/usr/local/tomcat/webapps/
  • 网页目录:/usr/local/tomcat/webapps/ROOT/WEB-INF/
  • JDK 是解析器 用来解析并执行其中的JSP脚本

2. Java Web环境:Nginx+JDK+Tomcat+MySQL

3. 环境部署流程

1. 安装JDK(Java解析器)
  1. 首先安装gcc

    # yum -y install gcc
    
  2. 将软件包上传、解压、并移至指定位置

    cp -r /root/tomcat/jdk1.7.0_25/ /usr/local/jdk/
    
  3. 查看java是否安装成功

    # java -version
      env | grep tomcat
      env | grep jdk
      echo $PATH
    
    
2. 安装Tomcat
  1. 将软件包上传、解压、并复制到指定目录下

    # cp -a 解压目录 /usr/local/tomcat
    cp -r /root/tomcat/apache-tomcat-7.0.42 /usr/local/tomcat/  
    
    
  2. 配置 JDK和Tomcat 的环境变量

    • JDK和Tomcat不是通过编译或二进制包安装,因此没有环境变量来提供安装过程中生成的相关文件路径。设置环境变量是为了让命令在执行时能够通过查找环境变量找到相应的文件,从而使得在Linux环境下可以无需安装即可直接执行相关命令
     # vim /etc/profile
    # 添加以下内容
    

export JAVA_HOME=/usr/local/jdk
export TOMCAT_HOME=/usr/local/tomcat
export JAVA_BIN=/usr/local/jdk/bin
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin: T O M C A T H O M E / b i n e x p o r t C L A S S P A T H = TOMCAT_HOME/bin export CLASSPATH= TOMCATHOME/binexportCLASSPATH=JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

source /etc/profile


3. **将Tomcat的启动脚本赋予执行权限**

```bash
# chmod +x /usr/local/tomcat/bin/*
  1. 开启Tomcat

    /usr/local/tomcat/bin/catalina.sh start
    netstat -antp # 查看端口,确认是否启动
    
  2. 在客户端访问页面进行测试 192.168.10.20:8080

3. 安装MySQL数据库
  1. 安装依赖包ncurses-devel

    # yum -y install ncurses-devel gcc
    
  2. 将MySQL文件进行传输到192.168.20.10上进行安装

    # useradd -r -s /sbin/nologin mysql
    # ./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=gbk,gb2312
    # make
    # make install
    
  3. 生成配置文件

    # cp -a support-files/my-medium.cnf /etc/my.cnf
    # ln -s /usr/local/mysql/bin/* /usr/local/bin/
    # ln -s /usr/local/mysql/sbin/* /usr/local/sbin/
    
  4. 初始化数据库,生成授权表

    # cd /usr/local/mysql
    # ./bin/mysql_install_db --user=mysql
    
  5. 生成启动管理脚本,启动MySQL并设置开机自启

    # cd ~/mysql-5.1.55/support-files
    # cp -a mysql.server /etc/init.d/mysqld
    # chmod +x /etc/init.d/mysqld
    # chkconfig --add mysqld
    # chkconfig mysqld on
    # service mysqld start|stop|restart
    
  6. 为数据库的管理用户root设置登录密码

    # mysqladmin -uroot password 123456
    
  7. 登录数据库,查看是否安装正确

4. 安装Nginx
  1. 解压Nginx

    tar -xf nginx-1.27.6.tar.gz
    
  2. 安装Nginx依赖包

    yum -y install pcre-devel zlib-devel gcc
    
  3. 添加用户

    useradd -r -s /sbin/nologin nginx
    
  4. 编译并安装

        ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx/
     make
     make install
     
    
  5. 修改Nginx配置文件

    vim /usr/local/nginx/conf/nginx.conf
    user nginx;
    upstream tomcat { # 添加负载调度(为了后期扩展更多Tomcat服务器方便)
      server 192.168.10.20:8080;
    }
    location / { # 添加反向代理
      proxy_pass http://tomcat;
    }
    
  6. 重启服务

    /usr/local/nginx/conf/nginx -t
    /usr/local/nginx/sbin/nginx -s reload
    
    
  7. 在客户端进行测试,输入Nginx地址,打开的为Tomcat部署的网站

4. 部署JAVA的WAR包
  1. /usr/local/tomcat/conf/server.xml 配置文件中的 server 区域中添加内容

    vim /usr/local/tomcat/conf/server.xml
    
    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
      <Context path="" docBase="xbz.war" debug="0" privileged="true"/>
    </Host>
    
  2. 将war包拷贝到webapps目录中

cp -r /root/tomcat/xbz.war /usr/local/tomcat/webapps/


3. **删除网站的ROOT目录**

```bash
cd /usr/local/tomcat/webapps/
rm -rf *
  1. 重启Tomcat服务

    /usr/local/tomcat/bin/catalina.sh stop
    /usr/local/tomcat/bin/catalina.sh start
    
  2. 测试

    使用客户端浏览访问Nginx服务的端口

    注意:原本的 Tomcat 使用8080端口进行访问,也可以将端口修改为80使用IP直接访问,修改 /usr/local/tomcat/conf/server.xml 配置中的8080 改变为 80(切记不要和其他web服务器冲突)

5. 创建多个Tomcat实例(拓展)
  1. 首先将Tomcat进行停止

    /usr/local/tomcat/bin/catalina.sh stop
    
  2. 拷贝原来的Tomcat到另外一个目录,如tomcat-2,清除logs目录

    cd /usr/local/
    cp -r tomcat tomcat2
    rm -rf tomcat2/logs/*
    
  3. 修改Tomcat-2中的 /conf/server.xml 文件,把shutdown和Connector端口修改成另外的数值,关闭端口修改为 8006,连接端口修改为8090

    vim /usr/local/tomcat2/conf/server.xml
    
    <Server port="8006" shutdown="SHUTDOWN">
      <Connector port="8090" protocol="HTTP/1.1"
                 connectionTimeout="20000"
                 redirectPort="8443"/>
    </Server>
    
  4. 修改startup.sh和shutdown.sh文件

   vim /usr/local/tomcat/bin/startup.sh
  vim /usr/local/tomcat/bin/shutdown.sh 
 在第一行均加入 export CATALINA_HOME=/usr/local/tomcat2

  1. 启动Tomcat

    /usr/local/tomcat/bin/catalina.sh start
    /usr/local/tomcat2/bin/catalina.sh start
    # netstat -antp # 查看8080和8090端口是否正常启动
    
  2. 查看结果

    浏览 http://192.168.10.20:8080http://192.168.10.20:8090

    可以直接将8090写入配置好的Nginx负载均衡中

课外扩展

  1. 遇到问题时,首先要明确需要检查的对象,包括文件、数据库内容以及日志等,进而采取有效的排查方法。解决问题的能力和速度是运维人员的核心价值所在
  2. 例子:如何正确进行邮件服务连接数据库的错误排查?
    在排查邮件服务连接数据库失败的问题时,需要按照从源端到目标端的顺序进行检查。首先,确认配置文件中是否有数据库相关的信息,如数据库驱动、IP地址、账号密码等是否填写正确。其次,手动使用MySQL命令测试导入的账号密码是否能成功连接数据库。最后,检查数据库内部,包括导入的SQL文件是否成功、数据库是否存在、表是否存在以及用户信息是否准确无误。通过这些步骤,可以系统地定位并解决连接数据库失败的问题。
  3. 链路级负载是更加底层的负载方式,它不涉及匹配,仅通过链路接口来分配数据包。
  4. 环境变量在系统中非常重要,它们根据用户登录或对应shell环境的不同,让同一个变量具备不同的值。
  5. C、C++、C#、Java是 编译型编程语言(如Shell、Python)是解释型语言。解释型语言只需解析器就能执行,而编译型编程语言则需要编译器将代码编译成二进制后才能运行。LAMP环境等部署的服务器主要适配解释型语言


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

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

相关文章

redis集成到spring boot中使用

&#xff08;一&#xff09;添加依赖 redis服务器在官网中公开了自己使用的协议--RESP&#xff0c;所以我们可以使用这个协议来访问redis服务器&#xff0c;但是如果我们要自己实现库&#xff0c;那肯定是非常麻烦的&#xff0c;所以我们可以使用网上的库&#xff0c;我们直接调…

读数据工程之道:设计和构建健壮的数据系统08主要架构概念

1. 域和服务 1.1. 域是你正在为其构建的现实世界主题区域 1.2. 服务是一组功能&#xff0c;其目标是完成一项任务 1.3. 一个域可以包含多个服务 1.4. 确定领域中应包含的内容 1.4.1. 确定领域应该包含什么以及要包括哪些服务时&#xff0c;最好的建议是简单地去与用户和利益…

SQLAlchemy入门:详细介绍SQLAlchemy的安装、配置及基本使用方法

SQLAlchemy是一个流行的Python SQL工具包和对象关系映射&#xff08;ORM&#xff09;框架&#xff0c;它为开发人员提供了一种高效、灵活的方式来与数据库进行交互。本文将详细介绍SQLAlchemy的安装、配置及基本使用方法&#xff0c;并通过代码示例和案例分析&#xff0c;帮助新…

C++ | Leetcode C++题解之第478题在圆内随机生成点

题目&#xff1a; 题解&#xff1a; class Solution { private:mt19937 gen{random_device{}()};uniform_real_distribution<double> dis;double xc, yc, r;public:Solution(double radius, double x_center, double y_center): dis(0, 1), xc(x_center), yc(y_center),…

Web前端高级工程师培训:异步处理专题

异步处理专题 课前准备 工具 编辑器 VSCode浏览器 Chorme 前置知识 ES6基础语法 课堂主题 同步及异步概念方块运动的实现promise的用法then的返还值Async 函数 和 await 课堂目标 理解并学会使用promise使用方式以及async 、await的使用 同步异步概念 js是单线程 单线程…

动态规划-多状态问题——LCR.090.打家劫舍

1.题目解析 题目来源&#xff1a;LCR.090.打家劫舍——力扣 测试用例 2.算法原理 1.状态表示 每一个房子都有两个状态&#xff1a;被偷与不被偷&#xff0c;因此需要两个dp表f/g来表示被偷与不被偷&#xff0c;其中f[i]/g[i]表示小偷走到第i个位置的最大偷钱数 2.状态转移方程…

【开源物联网平台】Fastbee系统稳定性和压测报告

目录 一、机器准备 二、压测步骤 2.1 去除认证&#xff0c;修改clientid识别问题 2.2 添加重发布脚本 三、压测结果 四、压测工具使用 一、机器准备 准备两台服务器&#xff0c;一台为部署fastbee服务端应用&#xff0c;另一台为客户端压力机。其中&#xff1a; fastbee…

TensorRT-LLM七日谈 Day3

今天主要是结合理论进一步熟悉TensorRT-LLM的内容 从下面的分享可以看出&#xff0c;TensorRT-LLM是在TensorRT的基础上进行了进一步封装&#xff0c;提供拼batch&#xff0c;量化等推理加速实现方式。 下面的图片更好的展示了TensorRT-LLM的流程&#xff0c;包含权重转换&…

动态规划-简单多状态dp问题——面试题17.16.按摩师

多状态问题的核心就是每个位置不止有一个状态&#xff0c;因此需要多个dp表表示不同状态对应位置的值&#xff0c;然后根据题目考虑特定情况写出状态转移方程即可 1.题目解析 题目来源&#xff1a;面试题17.16.按摩师——力扣 测试用例 2.算法原理 1.状态表示 这里与路径问…

红米AC2100路由器原官方固件关闭IPv6防火墙

红米AC2100路由器原官方固件关闭IPv6防火墙 问题背景 我家里宽带开通了IPv6&#xff0c;并且获得了公网的IPv6地址。在同一Wi-Fi内部&#xff0c;可以使用公网IPv6正常访问。 但是&#xff0c;当我切换为手机流量&#xff0c;也就是公网环境&#xff0c;访问就失败了。 问题…

苹果最新论文:LLM只是复杂的模式匹配 而不是真正的逻辑推理

大语言模型真的可以推理吗&#xff1f;LLM 都是“参数匹配大师”&#xff1f;苹果研究员质疑 LLM 推理能力&#xff0c;称其“不堪一击”&#xff01;苹果的研究员 Mehrdad Farajtabar 等人最近发表了一篇论文&#xff0c;对大型语言模型 &#xff08;LLM&#xff09; 的推理能…

<<迷雾>> 第11章 全自动加法计算机(5)--顺序取数 示例电路

顺序地从存储器里取数的电路方案. info::操作说明 在开始之前, 地址计数器 AC 需要清零, 以指向地址 0000. 按一下开关 KAR, 将 AC 当前的地址锁存到 AR 地址寄存器. 按住 KRD, 不要松开(注: 系统中使用的是普通开关, 无需按住), 再按一下 KDR, 数据保存到寄存器 DR 中, 最后,…

Mapstruct的使用备忘【代替BeanUtils高效率属性拷贝】

文章目录 Mapstruct的使用备忘【代替BeanUtils高效率属性拷贝】1. 引入mapstruct依赖2. 数据准备2-1 准备一个子类&#xff0c;TestData2-2 准备两个类&#xff0c;SourceData&#xff0c;TargetData&#xff0c;属性完全一样 3. 定义Mapper接口【注&#xff1a;这里的Mapper是…

AIGC毕设项目分享:基于RAG的数字人对话系统及其应用

本研究的主要目标是设计并实现一个基于检索增强生成&#xff08;RAG&#xff09;技术的数字人对话系统&#xff0c;旨在提升数字人系统在多轮对话中的上下文管理、情境感知能力以及动态内容生成效果。系统结合了深度学习中的最新大语言模型技术&#xff0c;通过引入RAG框架来增…

概率论基础01_事件概率

目录 一、事件 1、概率 1.1基本事件 1.3必然事件 1.4不可能事件 1.5样本空间 1.6样本点 2、事件间的关系 2.1包含关系 2.2并集 2.3交集 2.4差集 2.5互斥事件 2.6对立事件 2.7完备事件组 3、运算律 3.1交换律 3.2结合律 3.3分配律 3.4对偶律 二、概率 1、…

10.MySql全局参数优化

从上图可以看出SQL及索引的优化效果是最好的&#xff0c;而且成本最低&#xff0c;所以工作中我们要在这块花更多时间。 一、全局参数 配置文件my.ini(windows)或my.cnf(mac)的全局参数&#xff1a; 假设服务器配置为&#xff1a; CPU&#xff1a;32核 内存&#xff1a;64G…

2025推荐选题|基于MVC的农业病虫害防治平台的设计与实现

作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参与学生毕业答辩指导&#xff0c;…

机器视觉AI场景为什么用Python比C++多?

好多开发者在讨论机在机器视觉人工智能领域的时候&#xff0c;纠结到底是用Python还是C&#xff0c;实际上&#xff0c;Python 和 C 都有广泛的应用&#xff0c;选择 Python而不是 C 可能有以下一些原因&#xff1a; 语言易学性和开发效率 语法简洁&#xff1a; Python 语法简…

【部署篇】Redis-01介绍‌

一、Redis介绍‌ 1、什么是Redis&#xff1f; ‌Redis&#xff0c;英文全称是Remote Dictionary Server&#xff08;远程字典服务&#xff09;&#xff0c;Redis是一个开源的、使用‌ANSI C语言编写的‌Key-Value存储系统&#xff0c;支持网络、可基于内存亦可持久化。‌ 它提…

Android Compose 控件基本属性

本文的代码由上一篇文章的Demo进一步书写完成, 传送门:Android Compose的基本使用-CSDN博客 _____________________________________________________________________________ 以下代码分别列举了控件的: 内边距,外边距,内容居中,渐变自定义边框,宽度权重,string资源引用等…