Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何在Ubuntu中安装Apache Tomcat

如何在Ubuntu中安装Apache Tomcat

原创
作者头像
用户7639835
修改于 2021-08-27 03:37:59
修改于 2021-08-27 03:37:59
5.5K00
代码可运行
举报
文章被收录于专栏:技术知识分享技术知识分享
运行总次数:0
代码可运行

如果要运行包含Java服务器页面编码或Java servlet的网页,可以使用Apache Tomcat 。 它是Apache Software Foundation发布的开源Web服务器和servlet容器

Tomcat可以作为独立产品使用,具有自己的Web服务器,也可以与其他Web服务器(如ApacheIIS)结合使用。 最新版本的Tomcat是9.0.14 ,它构建在Tomcat 88.5之上,并实现了Servlet 4.0,JSP 2.2。

在本教程中,我们将向您展示如何在Ubuntu 18.10和旧版本的Ubuntu中安装Apache Tomcat 9

第1步:安装Java

要运行Java Web应用程序,Tomcat需要在服务器上安装Java。 为了满足这个要求,我们将安装OpenJDK ,如图所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo apt update
$ sudo apt install default-jdk

第2步:创建Tomcat用户

出于安全原因, Tomcat应该与非特权用户(即非root用户)一起运行。 这就是为什么我们将创建将运行该服务的用户和组tomcat。 首先创建tomcat组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo groupadd tomcat

接下来,我们将创建一个tomcat用户,该用户将成为tomcat组的成员。 这个用户的home位置是/ opt / tomcat,因为这是我们要安装Tomcat的地方。 shell设置为/ bin / false

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

现在我们准备继续下一步并下载Tomcat。

第3步:安装Apache Tomcat

要下载最新的软件包,请访问Tomcat的下载页面并获取最新版本。

在编写本教程时,最新版本的Tomcat9.0.14 。 要下载该版本,请将当前目录更改为其他目录。 例如,您可以使用/ tmp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cd /tmp

然后使用wget命令下载Tomcat存档:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ wget http://apache.cbox.biz/tomcat/tomcat-9/v9.0.14/bin/apache-tomcat-9.0.14.tar.gz
$ wget https://www.apache.org/dist/tomcat/tomcat-9/v9.0.14/bin/apache-tomcat-9.0.14.tar.gz.sha512

如果要验证可以运行的文件的sha512总和:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sha512sum apache-tomcat-9.0.14.tar.gz
$ cat apache-tomcat-9.0.14.tar.gz.sha512

两个文件的结果值(哈希)应该相同。

如前所述,我们将在/ opt / tomcat中安装Tomcat。 我们必须创建该目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo mkdir /opt/tomcat

现在我们可以在新目录中提取下载的包:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo tar xzvf apache-tomcat-9.0.14.tar.gz -C /opt/tomcat --strip-components=1

现在导航到/ opt / tomcat ,我们将更新文件夹所有权和权限:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cd /opt/tomcat

并将/ opt / tomcat的组所有者设置为tomcat

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo chgrp -R tomcat /opt/tomcat

接下来我们将更新tomcat组对conf目录的读访问权限,并为目录设置执行权限:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo chmod -R g+r conf
$ sudo chmod g+x conf

接下来我们将创建webappsworktemplogs目录的tomcat用户所有者:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo chown -R tomcat webapps/ work/ temp/ logs/

现在已经设置了适当的权限和所有权,我们准备创建一个systemd启动文件,这将帮助我们管理Tomcat进程。

第4步:为Tomcat创建SystemD服务文件

因为我们想要将Tomcat作为服务运行,所以我们需要一个可以帮助我们轻松管理流程的文件。 为此,我们将创建一个systemd服务文件。 Tomcat必须知道Java在您的系统中的位置。

要查找该位置,请使用以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo update-java-alternatives -l

该命令的输出将显示JAVA_HOME的位置。

查找Java主页

现在,使用该信息,我们准备创建我们的Tomcat服务文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo vim  /etc/systemd/system/tomcat.service

将以下代码粘贴到文件中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

确保将JAVA_HOME设置为系统的JAVA_HOME 。 准备好后,保存文件并关闭它。 现在,使用下面的命令,重新加载systemd守护程序,以便它可以找到我们的新服务文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo systemctl daemon-reload

然后启动Tomcat服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo systemctl start tomcat

您可以使用以下方式验证服务状态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo systemctl status tomcat

验证Apache Tomcat状态

您现在可以使用系统的IP地址,然后使用服务默认端口8080在浏览器中测试Tomcat

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://ip-address:8080

您应该看到的结果类似于下图中显示的结果:

Apache Tomcat网页

如果您没有看到上述输出,则可能需要在防火墙中允许端口8080 ,如图所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo ufw allow 8080

如果您希望Tomcat在系统启动时启动,请运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ systemctl enable tomcat

第5步:配置Apache Tomcat

Tomcat有一个预安装的Web管理器应用程序。 为了使用它,我们需要在tomcat-users.xml文件中设置身份验证。 使用您喜欢的文本编辑器打开并编辑该文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo vim /opt/tomcat/conf/tomcat-users.xml

我们将添加一个能够访问管理管理界面的用户。 要在<tomcat-users> </tomcat-users>标记之间配置此类用户,请添加以下行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<user username="Username" password="Password" roles="manager-gui,admin-gui"/>

确保更改:

  • 用户名 - 与您要进行身份验证的用户。
  • 密码 - 使用您希望用于身份验证的密码。

配置Apache Tomcat

由于默认情况下对Host ManagerManager的访问受到限制,我们将要删除或更改这些限制。 要进行此类更改,您可以加载以下文件:

对于经理应用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo vim /opt/tomcat/webapps/manager/META-INF/context.xml

对于主机管理器应用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo vim /opt/tomcat/webapps/host-manager/META-INF/context.xml

在这些文件中,您可以注释IP限制或允许您的公共IP地址。 出于本教程的目的,我对该行进行了评论:

允许Apache Tomcat访问

要进行实时更改,请使用以下命令重新加载tomcat服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo systemctl restart tomcat 

您现在可以通过访问http:// ipaddress:8080 / manager / 来测试经理应用。 提示输入用户名和密码时,请使用先前配置的用户名和密码。 之后您应该看到的界面如下所示:

访问Apache Tomcat Manager

要访问主机管理器 ,您可以使用http:// ip-address:8080 / host-manager /

访问Apache Tomcat Virtual Host Manager

使用虚拟主机管理器,您可以为Tomcat应用程序创建虚拟主机。

第6步:通过创建测试文件来测试Apache Tomcat

您可以通过在/ opt / tomcat / webapps / ROOT /目录中创建测试文件来检查一切是否正常运行。

让我们创建这样的文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo vim /opt/tomcat/webapps/ROOT/howtoing.jsp

在该文件中粘贴以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<html>
<head>
<title>Howtoing post:TomcatServer</title>
</head>
<body>

<START OF JAVA CODES>
<%
    out.println("Hello World! I am running my first JSP Application");
    out.println("<BR>Howtoing is an Awesome online Linux Resource.");
%>
<END OF JAVA CODES>

</body>
</html>

保存文件并设置所有权,如图所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo chown tomcat: /opt/tomcat/apache-tomcat-8.5.14/webapps/ROOT/howtoing.jsp

现在使用http:// ip-address:8080 / howtoing.jsp在浏览器中加载该文件。

测试Apache Tomcat

而已! 您已完成Apache Tomcat服务器的设置并运行了第一个Java代码。 我们希望这个过程简单明了。 如果您遇到任何问题,请通过下面的评论表分享您的问题。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【第十六篇】Flowable事件之结束事件
  结束事件顾名思义就是流程结束的事件,除了前面遇到的空结束事件外,结束事件还包括如下几种:
用户4919348
2022/04/13
2.5K0
【第十六篇】Flowable事件之结束事件
【第十五篇】Flowable事件-信号事件
我们可以把信息的作用域由原来的golbal全局的调整为processInstance,测试后发现还是执行了,说明在启动事件信息的作用域其实是不起作用的。
用户4919348
2022/04/13
2.1K0
【第十五篇】Flowable事件-信号事件
2023最新版本Activiti7系列-多实例详解
多实例活动是为业务流程中的某个步骤定义重复的一种方式。在编程概念中,多实例与 for each 结构相匹配:它允许对给定集合中的每个项目按顺序或并行地执行某个步骤或甚至一个完整的子流程。
用户4919348
2023/08/11
1.2K0
2023最新版本Activiti7系列-多实例详解
【第十四篇】Flowable事件-错误事件
  错误事件可以用做一个流程的开始事件或者作为一个任务或者子流程的边界事件,错误事件没有提供作用中间事件的功能,这一点和前面介绍的定时器事件和消息事件还有区别的。
用户4919348
2022/04/13
1.8K0
【第十四篇】Flowable事件-错误事件
Flowable深入浅出-1 Flowable简介
先来看下百度百科的定义: 由BPMI(The Business Process Management Initiative)开发了一套标准叫业务流程建模符号(BPMN – Business Process Modeling Notation)。在 BPMI Notation Working Group超过2年的努力,于2004年5月对外发布了BPMN 1.0 规范。后BPMI并入到OMG组织,OMG于2011年推出BPMN2.0标准,对BPMN进行了重新定义**(Business Process Model and Notation**)。BPMN的主要目标是提供一些被所有业务用户容易理解的符号,从创建流程轮廓的业务分析到这些流程的实现,直到最终用户的管理监控。BPMN也支持提供一个内部的模型可以生成可执行的BPEL4WS。因此BPMN的出现,弥补了从业务流程设计到流程开发的间隙。 BPMN定义了一个业务流程图(Business Process Diagram),该业务流程图基于一个流程图(flowcharting),该流程图被设计用于创建业务流程操作的图形化模型。而一个业务流程模型(Business Process Model),指一个由图形对象(graphical objects)组成的网状图,图形对象包括活动(activities)和用于定义这些活动执行顺序的流程控制器(flow controls)。 大白话理解: BPMN是一套符号的标准,这些符号描述了如果做一个业务,并且这个业务在做的过程中被人监控和控制。业务人员和开发人员通过这套图形可以很好的完成协作。
全栈程序员站长
2022/08/31
1.1K0
Flowable深入浅出-1 Flowable简介
七、springboot整合flowable(工作流)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143284.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/31
2.8K0
七、springboot整合flowable(工作流)
流程图绘制
在 IDEA 中,当我们安装了这个插件之后,新建文件的时候,就有相应的选项,如下图:
程序员NEO
2023/10/12
5910
流程图绘制
activiti的简单使用说明
java Doc https://www.activiti.org/javadocs/
用针戳左手中指指头
2021/03/02
2.1K0
activiti的简单使用说明
【第十八篇】Flowable之多人会签
1.在用户任务节点绑定了一个监听器,监听create行为,该监听器我们是通过UEL表达式来实现的,mulitiInstanceTaskListener是我们注入到Spring容器中的对象
用户4919348
2022/04/13
4.6K0
【第十八篇】Flowable之多人会签
Flowable学习笔记(一、入门)
Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据,等等。这个章节将用一个可以在你自己的开发环境中使用的例子,逐步介绍各种概念与API。
三分恶
2020/07/16
5.8K0
flowable流程详解
Flowable引擎需要流程定义为BPMN 2.0格式,这是一个业界广泛接受的XML标准。 在Flowable术语中,我们将其称为一个流程定义(process definition)。一个流程定义可以启动多个流程实例(process instance)。流程定义可以看做是重复执行流程的蓝图。
全栈程序员站长
2022/08/26
2.3K0
flowable流程详解
Spring Boot + flowable 快速实现工作流
来源:https://blog.csdn.net/duan18888/article/details/124881904 今天分享一个不错的工作流引擎:flowable! 1. flowable-ui部署运行 flowable-6.6.0 运行 官方demo 参考文档: “ https://flowable.com/open-source/docs/bpmn/ch14-Applications/ ” 1、从官网下载flowable-6.6.0 : https://github.com/flowable/fl
程序猿DD
2023/04/04
1.3K0
Spring Boot + flowable 快速实现工作流
最近进行的一次技术选型(工作流引擎)及相关知识介绍
最近有个新项目,需要实现类似工作流引擎的效果,如果不知道是啥,看完本文就懂了。公司内其实也有些自研的,可能就是不像开源的这些那样,还支持这个那个规范,都是基于需求定制开发的,扩展性稍微差点。所以,这次其实几个同事,分工调研了几个开源的和公司内的,开源的包括activiti、flowable、camunda,我这边主要调研了flowable、camunda,同事调研了activiti和公司内部的。
低级知识传播者
2022/03/28
2.2K0
最近进行的一次技术选型(工作流引擎)及相关知识介绍
SpringBoot+flowable快速实现工作流,so easy!
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/03/04
3.3K0
【第一篇】Flowable的基本操作
  创建一个基本的maven工程,可以是Eclipse也可以是其他IDEA。然后添加两个依赖
用户4919348
2022/04/13
1.8K0
【第一篇】Flowable的基本操作
请假要组长和经理同时审批该怎么办?来看看工作流中的会签功能!
松哥最近正在录制 TienChin 项目视频~采用 Spring Boot+Vue3 技术栈,里边会涉及到各种好玩的技术,小伙伴们来和松哥一起做一个完成率超 90% 的项目,戳戳戳这里-->TienChin 项目配套视频来啦。 ---- 1. 会签流程图 2. 请假处理 2.1 前端提交请假流程 2.2 服务端处理请假请求 2.3 服务端返回待审批数据 2.4 服务端批准 OR 拒绝 2.5 服务端返回流程数据 2.6 前端渲染审批数据 3. 或签 今天松哥和小伙伴们介绍一下 Spring Security
江南一点雨
2022/09/08
6750
请假要组长和经理同时审批该怎么办?来看看工作流中的会签功能!
Activiti Exploer工作流控制台使用指南!使用Activiti Explorer定义部署执行工作流
Activiti Explorer简介 Activiti Explorer: Activiti控制台,是一个web应用程序 从Activiti的官方网站下载Activiti的压缩zip文件时,Activiti控制台在 ${Activiti_home}/wars文件夹下面 该控制台的目的并不是创建一个完善的web应用程序,仅仅是为客户端用户准备的应用程序.对于该控制台,使用了一个内存数据库,也可以换成自定义的数据库(查看WEB-INF文件夹下面的applicationContext.xml文件) 登录控制
攻城狮Chova
2022/01/22
1.2K0
Activiti Exploer工作流控制台使用指南!使用Activiti Explorer定义部署执行工作流
我也没想到 Springboot + Flowable 开发工作流会这么简单
公司内部的OA系统最近要升级改造,由于人手不够就把我借调过去了,但说真的我还没做过这方面的功能,第一次接触工作流的开发,还是有点好奇是个怎样的流程。
程序员小富
2020/08/28
8670
我也没想到 Springboot + Flowable 开发工作流会这么简单
activiti6环节流程图_activiti流程图
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说activiti6环节流程图_activiti流程图,希望能够帮助大家进步!!!
Java架构师必看
2022/06/13
2.6K0
activiti6环节流程图_activiti流程图
Flowable学习笔记(二、BPMN 2.0-基础 )
业务流程模型和标记法(BPMN, Business Process Model and Notation)是一套图形化表示法,用于以业务流程模型详细说明各种业务流程。
三分恶
2020/07/16
4.7K0
推荐阅读
相关推荐
【第十六篇】Flowable事件之结束事件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验