从零开始学习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项目 的相关文章

  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 通过 Visual Studio 2017 使用远程调试时 Linux 控制台输出在哪里?

    我的Visual Studio 2017 VS2017 成功连接Linux系统 代码如下 include
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 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