手动搭建 Java Web 环境

news2024/11/5 9:50:14

操作场景

本文档介绍如何在 Linux 操作系统的腾讯云云服务器(CVM)上手动搭建 Java Web 环境。

进行手动搭建 Java Web 环境,您需要熟悉 Linux 命令,例如 CentOS 环境下通过 YUM 安装软件 等常用命令,并对所安装软件使用、配置和兼容性比较了解。

注意

腾讯云建议您可以通过云市场的镜像环境部署 Java Web 环境,手动搭建 Java Web 环境可能需要较长的时间。具体步骤可参考 镜像部署 Java Web 环境。

示例软件版本

本文搭建的 Java Web 环境组成版本及说明如下:

Linux:Linux 操作系统,本文以 CentOS 7.6 为例。

Apache Tomcat:Web 应用服务器,本文以 Apache Tomcat 8.5.100 为例。

JDK:Java 开发工具包,本文以 JDK 1.8.0_221 为例。

前提条件

已购买 Linux 云服务器。如果您还未购买云服务器,请参考 快速配置 Linux 云服务器。

操作步骤

步骤1:登录 Linux 实例

使用标准方式登录 Linux 实例(推荐)。您也可以根据实际操作习惯,选择其他不同的登录方式:

使用远程登录软件登录 Linux 实例

使用 SSH 登录 Linux 实例

步骤2:安装 JDK

1. 下载 JDK 源码包,您可前往 Java SE 下载 页面选择需要的版本。

说明

请先将 JDK 源码包下载到本地,再上传至云服务器,否则会出现解压错误。

若您使用机器为 Windows 操作系统,可通过 WinSCP 上传文件。

若您使用机器为 Mac 或 Linux 操作系统,可通过 SCP 上传文件。

2. 执行以下命令,新建 JDK 安装目录。

 

mkdir /usr/java

3. 执行以下命令,将 JDK 源码包解压到指定位置。

 

tar xzf jdk-8u221-linux-x64.tar.gz -C /usr/java

4. 执行以下命令,打开 profile 文件。

 

vim /etc/profile

5. 按 i 切换至编辑模式,在 export PATH USER ... 后另起一行,根据您实际使用的 JDK 版本添加以下内容。

 

export JAVA_HOME=/usr/java/jdk1.8.0_221(您的 JDK 版本)

export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib

export PATH=$JAVA_HOME/bin:$PATH

添加完成后,如下图所示:



6. 按 Esc,输入 :wq,保存文件并返回。

7. 执行以下命令,读取环境变量。

 

source /etc/profile

8. 执行以下命令,查看 JDK 是否已经安装成功。

 

java -version

返回如下信息,则表示安装成功。



步骤3:安装 Tomcat

1. 执行以下命令,下载 Tomcat 源码包,您可根据实际需求下载不同版本 Tomcat。

说明

本文提供的下载网址是外部源,若出现下载链接失效等错误或需要其他 Tomcat 版本时,可前往 Apache 官网 获取更多安装信息。

 

wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.100/bin/apache-tomcat-8.5.100.tar.gz

2. 执行以下命令,解压 Tomcat 源码包。

 

tar xzf apache-tomcat-8.5.100

3. 执行以下命令,将解压后的文件夹下的文件移动到 /usr/local/tomcat/ 目录下。

 

mv apache-tomcat-8.5.100 /usr/local/tomcat/

4. 执行以下命令,打开 server.xml 文件。

 

vim /usr/local/tomcat/conf/server.xml

5. 找到 <Host ... appBase="webapps">,按 i 切换至编辑模式,将 appBase="webapps" 替换为以下内容:

 

appBase="/usr/local/tomcat/webapps"

6. 按 Esc,输入 :wq,保存文件并返回。

7. 执行以下命令,新建 setenv.sh 文件。

 

vi /usr/local/tomcat/bin/setenv.sh

8. 按 i 切换至编辑模式,输入以下内容,设置 JVM 的内存参数。

 

JAVA_OPTS='-Djava.security.egd=file:/dev/./urandom -server -Xms256m -Xmx496m -Dfile.encoding=UTF-8'

9. 按 Esc,输入 :wq,保存文件并返回。

10. 执行以下命令,启动 Tomcat。

 

/usr/local/tomcat/bin/startup.sh

显示结果如下,则成功启动。



验证环境配置

1. 执行以下命令,创建测试文件。

 

echo Hello World! > /usr/local/tomcat/webapps/ROOT/index.jsp

2. 在本地浏览器中访问如下地址,查看环境配置是否成功。同时需确保实例已绑定的安全组中放通8080端口,即在入站规则中添加放通协议端口为 TCP:8080的规则,具体操作请参见 添加安全组规则。

 

http://云服务器实例的公网 IP:8080

显示结果如下,则说明环境配置成功。



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

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

相关文章

WPF+MVVM案例实战与特效(二十四)- 粒子字体效果实现

文章目录 1、案例效果2、案例实现1、文件创建2.代码实现3、界面与功能代码3、总结1、案例效果 提示:这里可以添加本文要记录的大概内容: 2、案例实现 1、文件创建 打开 Wpf_Examples 项目,在 Views 文件夹下创建窗体界面 ParticleWindow.xaml,在 Models 文件夹下创建粒子…

「Mac畅玩鸿蒙与硬件18」鸿蒙UI组件篇8 - 高级动画效果与缓动控制

高级动画可以显著提升用户体验&#xff0c;为应用界面带来更流畅的视觉效果。本篇将深入介绍鸿蒙框架的高级动画&#xff0c;包括弹性动画、透明度渐变和旋转缩放组合动画等示例。 关键词 高级动画弹性缓动自动动画缓动曲线 一、Animation 组件的高级缓动曲线 缓动曲线&#…

Golang--数组、切片、映射

1、数组 1.1 数组类型 var 数组名 [数组大小]数据类型 package main import "fmt"func main(){//1、定义一个数组var arr1 [5]intarr1[0] 100arr1[1] 200fmt.Println(arr1) //[100 200 0 0 0] } 1.2 数组的初始化方式 package main import "fmt" func …

Android音频进阶之PCM设备创建(九十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+…

【已解决】C# NPOI如何设置单元格格式

前言 设置单元格格式我们做表格必须要的一步&#xff0c;那么如何对单元格进行设置呢&#xff1f;直接上图看看效果图先&#xff0c;我做的是一个居中然后字体变化的操作&#xff0c;其他的查他的手册即可。 解决方法 直接上代码 IWorkbook excelDoc new XSSFWorkbook();…

系统学习算法:专题一 双指针

题目一&#xff1a; 算法原理&#xff1a; 首先我们可以对这道题目进行题目分类&#xff0c;像这种对数组以某种标准而进行一定的划分的题目&#xff0c;我们统称为数组分块问题&#xff0c;其中使用到的算法就是双指针算法&#xff0c;这里的指针并非真正int*这种&#xff0c…

Python异常检测 - LSTM(长短期记忆网络)

系列文章目录 Python异常检测- Isolation Forest&#xff08;孤立森林&#xff09; python异常检测 - 随机离群选择Stochastic Outlier Selection (SOS) python异常检测-局部异常因子&#xff08;LOF&#xff09;算法 Python异常检测- DBSCAN Python异常检测- 单类支持向量机(…

【双指针】【数之和】 LeetCode 633.平方数之和

算法思想&#xff1a; 双指针枚举i,j&#xff1b;类似三数之和 class Solution { public:bool judgeSquareSum(int c) {long long sum0;vector<int> dp;dp.push_back(0);long long start1;while(sum < c){sum start *start;if(sum>c) break;else dp.push_back(…

前端Nginx的安装与应用

目录 一、前端跨域方式 1.1、CORS(跨域资源共享) 1.2、JSONP(已过时) 1.3、WebSocket 1.4、PostMessage 1.5、Nginx 二、安装 三、应用 四、命令 4.1、基本操作命令 4.2、nginx.conf介绍 4.2.1、location模块 4.2.2、反向代理配置 4.2.3、负载均衡模块 4.2.4、通…

Openlayers高级交互(18/20):根据feature,将图形适配到最可视化窗口

本示例的目的是介绍如何在vue+openlayers中使用extent,使用feature fit的方式来适配窗口。当加载到页面上几个图形要充分展示在窗口的时候,可以用这种方式来平铺到页面中。 效果图 专栏名称内容介绍Openlayers基础实战 (72篇)专栏提供73篇文章,为小白群体提供基础知识及示…

每日OJ题_牛客_相差不超过k的最多数_滑动窗口_C++_Java

目录 牛客_相差不超过k的最多数_滑动窗口 题目解析 C代码 Java代码 牛客_相差不超过k的最多数_滑动窗口 相差不超过k的最多数_牛客题霸_牛客网 (nowcoder.com) 描述&#xff1a; 给定一个数组&#xff0c;选择一些数&#xff0c;要求选择的数中任意两数差的绝对值不超过 …

初始JavaEE篇——多线程(5):生产者-消费者模型、阻塞队列

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 文章目录 阻塞队列生产者—消费者模型生产者—消费者模型的优势&#xff1a;生产者—消费者模型的劣势&#xff1a; Java标准库中的阻…

后端eclipse——文字样式:UEditor富文本编辑器引入

目录 1.富文本编辑器的优点 2.文件的准备 3.文件的导入 导入到项目&#xff1a; 导入到html文件&#xff1a; ​编辑 4.富文本编辑器的使用 1.富文本编辑器的优点 我们从前端写入数据库时&#xff0c;文字的样式具有局限性&#xff0c;不能存在换行&#xff0c;更改字体…

Rust移动开发:Rust在Android端集成使用介绍

Andorid调用Rust 目前Rust在移动端上的应用&#xff0c;一般作为应用sdk的提供&#xff0c;供各端使用&#xff0c;目前飞书底层使用Rust编写通用组件。 该篇适合对Android、Rust了解&#xff0c;想看如何做整合&#xff0c;如果想要工程源码&#xff0c;可以评论或留言有解疑…

推荐一款高级的安装程序打包工具:Advanced Installer Architect

AdvanCEd Installer Architect是一款高级的安装程序打包工具&#xff0c;我们有时候可能用nsis用的多&#xff0c;Advanced Installer Architect也是一款打包工具&#xff0c;有兴趣的朋友也可以试试。有了Advanced Installer Architect你就可以创建MSI打包。 主要功能 *先进的…

关于Linux系统调试和性能优化技巧有哪些?

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于Linux系统调试和性能优化技巧的相关内容…

MySQL中,GROUP BY 分组函数

文章目录 示例查询&#xff1a;按性别分组统计每组信息示例查询&#xff1a;按性别分组显示详细信息示例查询&#xff1a;按性别分组并计算平均年龄,如果你还想统计每个性别的平均年龄&#xff0c;可以结合AVG()函数&#xff1a;说明 示例查询&#xff1a;按性别分组统计每组信…

Docker:容器编排 Docker Compose

Docker&#xff1a;容器编排 Docker Compose docker-composedocker-compose.ymlservicesimagecommandenvironmentnetworksvolumesportshealthcheckdepends_on 命令docker compose updocker compose down其它 docker-compose 多数情况下&#xff0c;一个服务需要依赖多个服务&a…

.net Core 使用Panda.DynamicWebApi动态构造路由

我们以前是通过创建controller来创建API&#xff0c;通过controller来显示的生成路由&#xff0c;这里我们讲解下如何不通过controller&#xff0c;构造API路由 安装 Panda.DynamicWebApi 1.2.2 1.2.2 Swashbuckle.AspNetCore 6.2.3 6.2.3添加ServiceAction…

交换机如何实现2.5G网络传输速率和网络变压器有关吗

华强盛电子导读&#xff1a;I19926430038 交换机实现2.5G网络传输速率涉及多个因素&#xff0c;其中包括硬件设计、端口支持、传输介质以及网络协议等。网络变压器在其中扮演了一个重要的角色&#xff0c;但并不是唯一的因素。 1. **硬件设计**&#xff1a;交换机需要有支持2.…