从零开始学习Linux部署Java web项目

2023-05-16

前言

最近越来越发现需要学习的东西太多了,前几天公司服务器出现问题,需要对服务器硬件进行维护,当然服务器上的服务需要部署到另一个服务器上。这对于我来说是很陌生的,虽然这件工作没有让我去做,但是还是很好奇web项目是如何部署到服务器的。其实很早之前就想学习这些,但是一直没有行动。所以趁着这股兴奋劲,就决定去学习一下,并做此次总结。

准备工作

虚拟机 : VMware10
Linux : CentOS-7-x86_64-DVD
JDK : java 1.7
Xmanager Enterprise (Xshell) : Xmanager Enterprise 5( Xshell 5)
Tomcat : Tomcat-8.5

可去官网下载,由于官网下载文件相对较慢,我把文件上传到百度网盘了,链接:http://pan.baidu.com/s/1eR4ivkQ 密码:g0j8。

VMware安装

对于VMware的安装没什么可说的,直接下一步就可以了,在最后会出现一个填注册码的地方,这个软件是收费的,所以我们需要破解,在上传的VMware10安装包中,有一个vm10keygen.exe可执行文件,该文件是生成注册码序列的,直接将Serial后的一串字符复制填写即可破解使用。

这里写图片描述

CentOS7安装

在VMware上安装Linux,需要先创建一个虚拟机。打开VMware后点击文件-新建-虚拟机(接下来上图了,看图更清晰)

这里写图片描述

之后我们选择制自定义,当然如果你不想麻烦的话可以选择典型安装,这个也是默认的安装的方式。点击下一步

这里写图片描述

硬件的兼容性我们直接选择默认的的就行。

这里写图片描述

在这里就出现了选择安装的操作系统的方式,有光盘,iso文件及稍后安装操作系统。在这里选择了第三项先稍后安装操作系统。

这里写图片描述

这里就是选择要安装的操作系统,以及操作系统的版本。显然选择Linux,CentOS 64位就好了

这里写图片描述

这里给虚拟机命名及选择安装位置,点击下一步就会出现处理器设置,以及虚拟机内存设置,可以直接选择默认的就行了。再点击下一步就会出现网络类型设置,网络类型选择NAT,之后就一路下一步就可以了。

这里写图片描述

走到上面注意一下,这里选择磁盘大小,根据自己的使用设置,默认是20G,磁盘存储选择中间的那一项将虚拟磁盘存储为单个文件。

这里写图片描述
上面选择虚拟磁盘存储的位置,可以选择上面虚拟机的安装位置就可以,当然也可以按你自己意愿选择位置。再下一步就出现完成的按钮,点击完成即可。此时硬件信息都给你罗列出来了,你可以选择你创建的虚拟机右键设置,去更改这些选项。如下图

这里写图片描述

最后需要点击上图DVD选项,选择使用ISO文件,并选择你iso文件所在的地方,点击确定。然后选择开启虚拟机就开始进行安装了

这里写图片描述

出现上面图示,通过上下键选择第一项Install CentOS 7然后回车。

这里写图片描述

出现上面语言选择,我这里选择了默认语言英语,你可以选择中文。然后就出现一些设置项如下

这里写图片描述

上面选项的配置如DATE,KEYBOADY,LANGUAGE SUPPORT等不作介绍,可以自己设置。主要介绍下磁盘分区

这里写图片描述

如果你想省事就直接尊重第一项Automatically就可以,它会自己帮助你分配,选择自己配置,第二个选项。

这里写图片描述

上面分区模式选择标准方式,及第一项。

这里写图片描述

点击左下角那个加号即可自己增加。之后选择网络选项设置网络

这里写图片描述

如上图将右上角设置为ON模式,会出现下面IP地址等信息。确定之后选择右下角Begin Installation

这里写图片描述

到这里就正式安装系统了,上面有设置用户的,你可以设置root用户密码,及创建自己用户,登录时验证。(Xshell远程登录时需要用户名密码)后面就耐心等待安装就可以了,时间相对较长。

JDK安装

为了真实模拟服务器,我用Xshell 5登录到Linux系统,用root用户登录的。

Xshell:\> 

Connecting to 192.168.199.130:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Wed Dec  7 08:46:57 2016 from 192.168.199.1
ABRT has detected 1 problem(s). For more info run: abrt-cli list --since 1481071617
[root@xiehui ~]# java -version
java version "1.7.0_75"
OpenJDK Runtime Environment (rhel-2.5.4.2.el7_0-x86_64 u75-b13)
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
[root@xiehui ~]# 

登录之后,我们通过java -version命令可以看到CentOS 操作系统默认安装的是有JDK的,当然如果你不想使用这个版本的JDK,可以自己安装。

Tomcat 安装

我们先进入home目录下,创建tomcat8文件夹

[root@xiehui /]# cd home
[root@xiehui home]# mkdir tomcat8
[root@xiehui home]# ls
tomcat8  xiehui

然后将apache-tomcat-8.5.8.tar.gz复制到新创建的文件夹中,解压文件

[root@xiehui tomcat8]# tar -zvxf apache-tomcat-8.5.8.tar.gz

解压之后,我们进入解压的文件

[root@xiehui apache-tomcat-8.5.8]# ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work

bin目录中存放Tomcat的一些脚本文件,最重要的也是用的最多就是启动和关系tomcat服务脚本。
conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml
webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录
logs:存放Tomcat执行时的日志文件
那么我们进入bin目录将tomcat启动

[root@xiehui apache-tomcat-8.5.8]# cd bin
[root@xiehui bin]# ./startup.sh
Using CATALINA_BASE:   /home/tomcat8/apache-tomcat-8.5.8
Using CATALINA_HOME:   /home/tomcat8/apache-tomcat-8.5.8
Using CATALINA_TMPDIR: /home/tomcat8/apache-tomcat-8.5.8/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/tomcat8/apache-tomcat-8.5.8/bin/bootstrap.jar:/home/tomcat8/apache-tomcat-8.5.8/bin/tomcat-juli.jar
Tomcat started.

执行后我们发现最后有提示Tomcat started,表示服务已经启动。然后通过下面命令查看服务详细信息

[root@xiehui bin]# ps -ef|grep tomcat
root      5110     1 54 11:12 pts/0    00:00:21 java -Djava.util.logging.config.file=/home/tomcat8/apache-tomcat-8.5.8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath /home/tomcat8/apache-tomcat-8.5.8/bin/bootstrap.jar:/home/tomcat8/apache-tomcat-8.5.8/bin/tomcat-juli.jar -Dcatalina.base=/home/tomcat8/apache-tomcat-8.5.8 -Dcatalina.home=/home/tomcat8/apache-tomcat-8.5.8 -Djava.io.tmpdir=/home/tomcat8/apache-tomcat-8.5.8/temp org.apache.catalina.startup.Bootstrap start
root      5143  4533  0 11:12 pts/0    00:00:00 grep --color=auto tomcat
[root@xiehui bin]# 

通过上面命令,我们可以看到启动用户,进程id,配置等信息。对于结束服务我们可以在bin目录执行./shutdown.sh。也可以使用下面命令

[root@xiehui bin]# kill -9 5110
[root@xiehui bin]# ps -ef|grep tomcat
root      5211  4533  0 11:18 pts/0    00:00:00 grep --color=auto tomcat

kill -9后面的数字就是服务的进程号,如果想启动再次执行./shutdown.sh就可以了。再次把服务打开,然后在本机访问Linux Tomcat ,发现并不能访问,但是在Linxu内部的浏览器却是可以的,这种原因一般是防火墙的问题。关闭下防火墙就可以访问了

[root@xiehui sysconfig]# systemctl stop firewalld

因为配置的是NAT,即使本地和虚拟机不在一个网段也是可以访问的。安装好Tomcat后,在webapps下面自带一个demo

[root@xiehui apache-tomcat-8.5.8]# cd webapps/
[root@xiehui webapps]# ls
docs  examples  host-manager  manager  ROOT
[root@xiehui webapps]# 

发现此时打开了部署的web项目。
这里写图片描述

部署项目只需要把把项目复制到Tomcat的Webapps下即可。这也是最简单的一种方式。如果我们想更改我们的tomcat服务接口,那么可以到tomcat下的conf目录,里面有个server.xml文件。重要的配置信息在这里

  <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
  <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

在配置文件中有一个unpackWARs参数,如果设置为false即可以部署war包项目,tomcat会自动解压文件。还可以在server.xml中使用Context标签指定项目在任何位置。

<Context path="定web应用的虚拟路径名" docBase="要部署的Web应用的源路径(实际位置)" reloadable="true" /> 

到这里,通过自己的学习并实践将项目部署掌握了,从此部署项目So easy。应了那句话自己动手丰衣足食。
最后再发几个常用命令

df -h   查看磁盘使用信息
vi filename 查看文件输入后进入命令行模式,命令行模式输入I进入插入模式,此时可更改文件内容,更改完成,按Esc退出编辑模式到命令行模式
: wq (输入「wq」,存盘并退出vi) 
: q! (输入q!, 不存盘强制退出vi) 
cat /proc/version  查看正在运行的内核版本
cat /etc/issue       显示的是发行版本信息
lsof -i:端口号         查看占用某端口的进程
ps aux | grep 进程号        根据进程ID查看进程详细信息
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l   物理CPU的个数
cat /proc/cpuinfo |grep "processor"|wc -l               逻辑CPU的个数
cat /proc/cpuinfo |grep "cores"|uniq                查看CPU内核数
top  查看系统负载,CPU,存储,进程等详细的使用信息
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从零开始学习Linux部署Java web项目 的相关文章

  • JaxB2Marshaller 未将 XML 绑定到 Kotlin 数据类

    我正在编写一个批处理作业来解析 XML 提取字段并将它们保存在数据库中 解析 XML 时 它会选取 2 个根元素 但将所有字段保留为空 因此在我的数据库中 我有 2 条记录将为空字段 似乎无法弄清楚为什么它无法读取元素 TIA Bean f
  • Android - 检测电容式触摸屏上的触摸压力?

    我听说过 MotionEvent e float press e getPressure 但这只会在没有触摸时返回 0 当我的手指触摸屏幕时返回 1 是否可以找到手指在触摸电容屏上施加的压力值 或者我的预感是否正确 即这只适用于电阻屏幕 M
  • 为 Nimbus 外观设计简单的单元渲染器

    我有一个简单的单元格渲染器 它由一些组成JLabels 渲染器本身扩展JPanel 并且我正在尝试让它在 Nimbus 的外观和感觉中合理地渲染 基本上发生的事情是在lighter行 正如 Nimbus 所具有的交替行着色 我的特定单元格渲
  • log4j2 SMTP Appender:如何包含另一个级别的先前消息?

    我正在使用 log4j2 beta9 并且有以下配置 其中一部分
  • 如何通过双击图标来执行JAVA程序?

    我写了一个java程序 现在我想在没有 IDE Eclipse 等的情况下打开我的控制台 java 应用程序 只需双击桌面上的可执行版本即可 我已将 java 项目导出为 Runnable JAR 文件 但无法打开 当我尝试使用cmd打开应
  • 有没有办法在@Service上使用@ControllerAdvice

    我有一个项目需求 但我没有任何需求 Controller or RestController但我需要为我的服务层提供一个全局异常处理程序 所以我需要配置 ControllerAdvice on Service 请告诉我是否还有其他方法可以做
  • Java setLocation() 事故

    我正处于创建一个程序来操作员工 客户系统的开始阶段 现在我刚刚创建了登录 GUI 但我遇到了一些问题 setLocation 方法 我将其设置为 250 250 但这使我的 GUI 高度变得非常疯狂 如果有人能够解决这个问题 我的代码如下
  • 如何将多个值存储到一个键(java)

    我搜索一个可以存储多个键值对的数据结构 数据基本上是这样的 1 value 1 2 value 2 于是我想到了使用HashMap 遗憾的是 这对我不起作用 因为一个键可能会出现多个值 在上面的例子中 1 value 2 可能是另一个条目
  • C++:Linux平台上的线程同步场景

    我正在为 Linux 平台实现多线程 C 程序 其中我需要类似于 WaitForMultipleObjects 的功能 在搜索解决方案时 我发现有一些文章描述了如何在 Linux 中实现 WaitForMultipleObjects 功能
  • egit:设置gitignore忽略所有eclipse项目文件

    我在 github 上有一个项目 我想从中删除所有与 eclipse 相关的文件 并允许克隆它的人使用他们想要的任何 ide 这是该项目 https github com vedi0boy Archipelo https github co
  • 使用 GSON 将 JSON 字符串转换为 Java 对象

    我正在尝试将 json 解析为 java 根据 jsonlint com 我有以下字符串 该字符串是有效的 json private final static String LOC JSON lat1 39 737567 lat2 32 7
  • 调用本机方法时返回 java.lang.UnsatisfiedLinkError

    我正在尝试为第三方 DLL 制作 Java 包装器 我创建了自己的 DLL 充当 JNI 和第三方 DLL 之间的中间人 在java中我加载这个DLL很好但是错误java lang UnsatisfiedLinkError sixense
  • 使用 testcontainer 作为 Dockerfile 的一部分运行测试

    我的 dockerfile 看起来像这样 FROM maven 3 jdk 11 slim COPY pom xml COPY src src RUN mvn clean install 这意味着构建的一部分是单元测试的执行 一些单元测试使
  • 无法使用 Jsoup HTML 解析器 Java 实现某些功能

    我无法使用 Jsoup Java 库解析以下场景的一些文本 1 This is b My Text b some other b b text as well b b b non empty tag1 b other text 预期输出 s
  • Android 自定义相机 - 在矩形内裁剪图像

    我有一个自定义相机应用程序 它有一个居中的矩形视图 如下所示 当我拍照时 我想忽略矩形之外的所有内容 该视图与我的 XML 视图中的 Camera Preview 或 SurfaceView 没有任何联系 如下所示
  • java中的Anagram算法

    我想做字谜算法但是 这段代码不起作用 我的错在哪里 例如 des 和 sed 是字谜 但输出不是字谜 同时我必须使用字符串方法 不是数组 public static boolean isAnagram String s1 String s2
  • Spring MVC 和复选框

    我正在使用 Spring MVC 3 0 并且不能完全看到这个问题的所有部分 我的控制器将生成一个域对象列表 假设有一个简单的 User 对象 具有firstName lastName age 和role 属性 我想在表中输出该用户列表 每
  • 无法以联觉方式绘制像素、Pi 数

    我想将 pi 数字的每个数字打印为彩色像素 因此 我得到一个带有 pi 数字的输入 然后将其解析为一个列表 每个节点包含一个数字 我知道 稍后我将使用一个数组 但我从来没有把它画到屏幕上 有人能帮我看看我错在哪里吗 import java
  • 应用程序中 GC 长时间暂停

    我当前运行的应用程序需要最大堆大小为 16GB 目前我使用以下标志来处理垃圾收集 XX UseParNewGC XX UseConcMarkSweepGC XX CMSInitiatingOccupancyFraction 50 XX Di
  • 用于读取文件的 Bash 脚本

    不知道为什么最后一行没有从脚本中删除 bin bash FILENAME 1 while read line do cut d f2 echo line done lt FILENAME cat file 1 test 2 test 3 t

随机推荐

  • ADRC——ESO扩张状态观测器simulink实现(含代码)

    2022 12 10改 我重新搭建了一个simulink模型文件 xff0c 已上传网盘 xff1a xff08 有问题请评论提出 xff0c 有空会改正 xff09 链接 xff1a https pan baidu com s 1EIfz
  • ADRC——TD微分跟踪器simulink实现(含代码)

    1 理论基础 参照 从PID技术到 34 自抗扰控制 34 技术 对于离散系统 xff1a 其中 xff0c h为采样时间 r确定跟踪速度 xff0c 称为速度因子 xff1b h0起对噪声的滤波作用 xff0c 成为滤波因子 fst函数定
  • ADRC——一阶ESO扩张状态观测器simulink实现及C语言代码

    理论部分见我之前的博客 xff0c 一阶ESO相比起来实现更简单 xff0c 也更好理解 xff0c 可帮助新手入门使用 虽然常见的物理系统 xff0c 绝大多都是二阶系统 xff0c 如F 61 ma 做位置控制时 xff0c 一般用二阶
  • ubuntu 安装scipy出现的问题

    遇到的问题 xff1a no lapack blas resources found 解决方法 xff0c 安装lapack sudo apt get install liblapack dev 然后重新安装scipy xff0c 这次遇到
  • 【软考高项笔记】第2章 信息技术发展2.2 新一代信息技术及应用(★)

    2 2 新一代信息技术及应用 xff08 xff09 2 2 1 物联网IOT 通过信息传感设备 xff0c 将物品和互联网相连接 xff0c 进行信息交换和通信 1 技术基础 物联网架构 感知层 xff1a 传感器 网络层 xff1a 互
  • Ubuntu12.04的汉化

    博主装上了Ubuntu12 04后进入系统才发现是英文版 xff0c 看着挺费劲的 xff0c 所以需要汉化一下 本文适用于ubuntu 12 04英文版的系统 1 进入ubuntu系统 xff0c 在顶部齿状标志找到system 2 在p
  • freertos优化版printf、sprintf、snprintf

    优化版printf sprintf snprintf printf stdarg c 当调用标准 C 库函数时 xff0c 栈空间使用量可能会急剧上升 xff0c 特别是 IO 与字符串处理函数 xff0c 比如 sprintf 在 Fre
  • 分享一下我参加开发者大会以来自己的总结(仅供参考)

    手机游戏设计 1选材类型符合移动平台特性 2剧情背景知名度高 3选材定义自己的用户 xff0c 用户觉得游戏的玩法 游戏设计法则 xff08 无需全部实现 xff0c 根据自己游戏类型找和适合法则结合 xff09 法则 1 xff1a 富有
  • 时钟周期、机器周期、指令周期的概念及三者之间的关系;定时器及计数器

    时钟周期 时钟周期也称为振荡周期 xff0c 定义为时钟脉冲的倒数 可以这样来理解 xff0c 时钟周期就是单片机外接晶振的倒数 xff0c 例如12M的晶振 xff0c 它的时间周期就是1 12 us xff0c 是计算机中最基本的 最小
  • 自旋锁-原理

    跟互斥锁一样 xff0c 一个执行单元要想访问被自旋锁保护的共享资源 xff0c 必须先得到锁 xff0c 在访问完共享资源后 xff0c 必须释放锁 如果在获取自旋锁时 xff0c 没有任何执行单元保持该锁 xff0c 那么将立即得到锁
  • openvslam------slam解读系列

    是什么 openvslam是日本先进工业科技研究 xff08 National Institute of Advanced Industrial Science and Technology xff09 所于2019年5月20日开源的视觉S
  • Hadoop编程学习1--WordCount

    span class hljs keyword package span org apache hadoop examples span class hljs keyword import span java io IOException
  • p2p传输实时视频流

    HYP2P是好游科技开发的p2p sdk xff0c 利用nat穿透的原理实现p2p打洞 xff0c 主要用于实时音视频的传输 使用时可以配置成tcp模式或udp模式 xff0c tcp模式会自动帮您解决丢包 乱序 重传问题 中转模式则是基
  • 笑谈Android图表------MPAndroidChart

    MPAndroidChart是一款基于Android的开源图表库 xff0c MPAndroidChart不仅可以在Android设备上绘制各种统计图表 xff0c 而且可以对图表进行拖动和缩放操作 xff0c 应用起来非常灵活 MPAnd
  • 详谈高大上的图片加载框架Glide -应用篇

    在Android设备上 xff0c 加载网络图片一直是一个头疼的问题 xff0c 因为Android设备种类繁多 xff08 当然最主要的是配置 xff09 xff0c 处理的稍不周到轻则应用卡顿 xff0c 严重者就会出现OOM的 xff
  • 微信小程序开发环境搭建

    微信小程序可谓是今天最火的一个名词了 xff0c 一经出现真是轰炸了整个开发人员 xff0c 当然很多App开发人员有了一个担心 xff0c 微信小程序的到来会不会给移动端App带来一个寒冬 xff0c 身为一个Android开发者我是不相
  • 实现APP定位功能

    源码传送门 若你不小心点击进入GitHub了捎带给个star 前言 最近更新项目中用的百度定位SDK时遇见了一个奇葩的问题 当升级SDK后百度定位一直返回505 通过百度定位官网查看该码表示AK非法或者不存在 很纠结 于是自己又写了一个de
  • Linux系统命令行创建新文件

    linux命令行创建文件 方法有许多 xff0c 下面简单介绍一下 方法1 使用cat命令 cat span class token operator gt span sample1 span class token punctuation
  • Java利器之UML类图详解

    前言 UML xff08 Unified Modeling Language xff09 中文统一建模语言 xff0c 是一种开放的方法 xff0c 用于说明 可视化 构建和编写一个正在开发的 面向对象的 软件密集系统的制品的开放方法 UM
  • 从零开始学习Linux部署Java web项目

    前言 最近越来越发现需要学习的东西太多了 xff0c 前几天公司服务器出现问题 xff0c 需要对服务器硬件进行维护 xff0c 当然服务器上的服务需要部署到另一个服务器上 这对于我来说是很陌生的 xff0c 虽然这件工作没有让我去做 xf