Java项目怎么从零部署到Linux服务器上?


目录

一.Java环境(JDK)安装

二.数据库(MySQL)安装

三.部署上线

▐ 部署Jar包

▐ 运行程序

▐ 开放端口


一个Java项目首先需要一个支持它编译的Java环境,因此首先要保证服务器上安装的有相应的JDK

一.Java环境(JDK)安装

Ubantu的发行版本举例,下文中的所有命令,如果本身就是root的权限的话就不需要加前面的sudo,如果是高版本的Ubantu的话,成功安装软件后会有一个弹窗提示重启,这个时候按下输入esc即可

首先更新当前的软件包

sudo apt-get update

安装JDK

我们可以打开软件包的列表查看jdk相关的包,我们可以通过该命令了解到我们可安装的版本

apt list | grep "jdk"

然后根据我们项目的需求安装对应的JDK,笔者这里以JDK17为例。一般来说我们在服务器上安装JDK的时候都会选择安装openjdk,首先需要清楚一个概念openjdk和甲骨文官方的jdk是不一样的,我们选择openjdk是因为它有以下的一些优点:

  • 免费:OpenJDK是一个开源项目,任何人都可以免费使用和修改。
  • 兼容性:OpenJDK旨在与Oracle JDK保持高度兼容,这意味着大多数Java应用程序可以在OpenJDK上运行而无需修改。
  • 定制性:由于OpenJDK的开源特性,企业可以根据自己的特定需求定制JDK,例如优化性能或安全性。
sudo apt install openjdk-17-jdk

在安装过程中,可能会提示你是否要进行继续安装,这个时候就需要按 'y' 进行确认

在安装完成后,可以通过查看jdk的版本来验证我们是否安装成功

java -version

如下图则是安装成功的样子 

二.数据库(MySQL)安装

对于一个Java项目当然要有对应的数据库支持服务,一般选择受用最广的MySQL,则我们需要在服务器上安装mysql-server

首先,还是在软件库中查找mysql-server,我们可以在里面看见我们可以安装的版本

apt list | grep "mysql-server"

然后是通过命令正式的安装mysql

sudo apt install mysql-server

安装过程中同样需要我们确认是否进行继续安装,一般来说这种需要我们确认的,统一选择 'y' 就可以了

安装完成后,我们可以查看其状态来验证我们是否安装成功

sudo systemctl status mysql

如下图所示的样子就说明我们按照成功了

 数据库安装好了后是默认没有密码的,这个时候我们可以通过以下命令直接连接上mysql服务

 sudo mysql

连接成功后,使⽤alter user命令修改密码,如下所示则是将root用户的密码改为了123456

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

修改完成后,如果你对密码还是不满意,就可以通过以下的命令继续修改密码,如下就是将root用户的密码改为了123321

set password for root@localhost = password('123321');

三.部署上线

▐ 部署Jar包

首先我们需要通过本地的Maven来对项目进行打包,如果Test代码中有与环境配置相关的操作(⽐如数据库相关的操作),打包可能会失败。点击下图①处的图标可以跳过测试,然后点击clean再点击package即可打包成功。

打包成功会看见Jar包的位置和成功结果

然后就是将这个Jar包放在服务器上,由于我们使用的是Xshell工具来连接的远程服务器,而Xshell工具是为我们提供了方便快捷的文件上传功能的,只需要将文件从本地的文件夹拖拽到Xshel窗口中,即可完成文件的上传(上传位置取决于当前Linux服务器中的路径)

如果上传中一直显示速度为0的话,那就是你服务器上没有安装相应的文件,使用以下命令安装即可

apt-get install lrzsz

如果是CentOS系统则使用以下命令

yum install -y lrzsz

在将Jar包保存在服务器中后可以通过ls命令查看

▐ 运行程序

我们可以通过JDK提供的命令来运行这个Jar包

java -jar jar包名

上述这种方式不太方便,当我们关闭这个命令窗口后,程序就结束运行了,因此我们需要将其设置为后台运行,使用nohup命令即可

nohup : 后台运⾏程序,⽤于在系统后台不挂断地运⾏命令,退出终端不会影响程序的运⾏

nohup java -jar jar包名 &

 对于这个命令,需要对一些参数做出说明

 nohup Command [ Arg … ] [ & ]
  • Command:要执⾏的命令。
  • Arg:⼀些参数,可以指定输出⽂件
  • &:让命令在后台执⾏,终端退出后命令仍旧执⾏

如何后续想要查看日志的话,使用tail命令即可

tail -f 日志文件

▐ 开放端口

为了让外界的服务能访问这个程序,我们要为外界访问开放其端口

将这个端口开放后,外界就可以进行访问了




 本次的分享就到此为止了,希望我的分享能给您带来帮助,创作不易也欢迎大家三连支持,你们的点赞就是博主更新最大的动力!如有不同意见,欢迎评论区积极讨论交流,让我们一起学习进步!有相关问题也可以私信博主,评论区和私信都会认真查看的,我们下次再见

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

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

相关文章

负载均衡 Ribbon 与 Fegin 远程调用原理

文章目录 一、什么是负载均衡二、Ribbon 负载均衡2.1 Ribbon 使用2.2 Ribbon 实现原理 (★)2.3 Ribbon 负载均衡算法 三、Feign 远程调用3.1 Feign 简述3.2 Feign 的集成3.3 Feign 实现原理 (★) 一、什么是负载均衡 《服务治理:Nacos 注册中心》 末尾提到了负载均…

第二十篇——行军篇:别指望外援,好好培养亲兵

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 微观层面,从驯服的视角,我们可以洞察到人性中非常…

leveldb源码剖析(二)——LSM Tree

LSM Tree LSM Tree:Log-Structured Merge Tree,日志结构合并树。是一种频繁写性能很高的数据结构。 LSM Tree将写入操作与合并操作分离,数据首先写入磁盘中的日志文件(WAL),随后写入内存缓存,…

UDP英译汉网络词典

这里我们用UDP实现一个简单的英译汉小词典。我们还是仿照前一篇的UDP编程,将各自的组件封装起来,实现高内聚低耦合。 一. 字典翻译功能实现 首先我们将我们的字典知识库放在txt文本中。 apple: 苹果 banana: 香蕉 cat: 猫 dog: 狗 book: 书 pen: 笔 ha…

云计算之ECS

目录 一、ECS云服务器 1.1 ECS的构成 1.2 ECS的实例规格 1.3 镜像 1.4 磁盘 1.5 安全组 1.6 网络 1.7 产品结构 二、块存储介绍 2.1 快存储定义 2.2 块存储性能指标 2.3 快存储常用操作-云盘扩容 2.4 块存储常见问题 三、快照介绍 3.1 快照定义 3.2 快照常见问题…

flume 使用 exec 采集容器日志,转储磁盘

flume 使用 exec 采集容器日志,转储磁盘 在该场景下,docker 服务为superset,flume 的sources 选择 exec , sinks选择 file roll 。 任务配置 具体配置文件如下: #simple.conf: A single-node Flume configuration#…

GPT-4o mini轻量级大模型颠覆AI的未来

GPT-4o mini发布,轻量级大模型如何颠覆AI的未来? 引言 随着人工智能技术的飞速发展,大型AI模型的发布已成常态。然而,庞大的计算资源和存储空间限制了它们在广泛场景中的应用。为满足市场需求,轻量级大模型应运而生&a…

TOMATO靶机漏洞复现

步骤一,我们来到tomato页面 什么也弄不了只有一番茄图片 弱口令不行,xxs也不行,xxe还是不行 我们来使用kali来操作... 步骤二,使用dirb再扫一下, dirb http://172.16.1.133 1.发现这个文件可以访问.我们来访问一下 /antibot_i…

【课程学习】信号检测与估计

文章目录 3.7-CRB延展到向量的形式3.8-参数变换形式的CRB CRB for transformation, pp45-463.9-高斯分布 CRLB for the General Gaussian Case3.7-CRB延展到向量的形式 0904 向量和变换形式的CRLB形式 估计参数真实值 θ \theta θ,估计值 θ ^ \hat \theta θ^ 与信号与系统…

C# NX二次开发-获取对象名称

UG软件是所有带标签对象都能设置名称和属性: 代码: theUf.Obj.AskName(body.Tag,out string name);name.NxListing(); 免责声明: 只用于参考,如果有什么问题不要找我呀。

【JAVA入门】Day27 - 单列集合体系结构综述

【JAVA入门】Day27 - 单列集合体系结构 文章目录 【JAVA入门】Day27 - 单列集合体系结构1.1 Collection 集合的基本方法1.2 Collection 集合的遍历方式1.2.1 迭代器遍历1.2.2 增强 for 遍历1.2.3 利用 Lambda 表达式进行遍历 1.3 List 集合的基本方法1.4 List 集合的遍历方式 J…

WordPress自适应美图网站整站打包源码

直接服务器整站源码数据库打包了,恢复一下就可以直接投入使用。保证好用易用,无需独立服务器就可以使用。 强调一下,我这个和其他地方的不一样、不一样、不一样。具体的看下面的说明。 现在网络上同样的资源包都是用的加密带后门的主题&…

年化收益37.7%的A股小市值策略,小市值和动量因子长期有效(附具体逻辑)

“ 原创内容第640篇,专注量化投资、个人成长与财富自由” 股票的“小市值”策略,就像ETF的趋势动量一样,长期有效。 这是一个很神奇的异象。 年化37.07%,夏普0.89。 这里我做了一些特殊的处理: 1、包括排除了科创板…

Pencils Protocol生态新进展,即将上线 Vault 产品

“极高的盈利预期、通证的持续回购与销毁,Vault产品的推出正在成为Pencils Protocol生态发展的重磅利好。” Pencils Protocol是目前Scroll生态TVL最高的DeFi平台 ,即便是行情整体较为平淡,其仍旧能够保持在3亿美元左右的锁仓价值&#xff0c…

day35-测试之性能测试JMeter的测试报告、并发数计算和性能监控

目录 一、JMeter的测试报告 1.1.聚合报告 1.2.html报告 二、JMeter的并发数计算 2.1.性能测试时的TPS,大都是根据用户真实的业务数据(运营数据)来计算的 2.2.运营数据 2.3.普通计算方法 2.4.二八原则计算方法 2.5.计算稳定性测试并发量 2.6…

Mybatis链路分析:JDK动态代理和责任链模式的应用

背景 此前写过关于代理模式的文章,参考:代理模式 动态代理功能:生成一个Proxy代理类,Proxy代理类实现了业务接口,而通过调用Proxy代理类实现的业务接口,实际上会触发代理类的invoke增强处理方法。 责任链功…

Mac 安装Hadoop教程(HomeBrew安装)

1. 引言 本教程旨在介绍在Mac 电脑上安装Hadoop,便于编程开发人员对大数据技术的熟悉和掌握。 2.前提条件 2.1 安装JDK 想要在你的Mac电脑上安装Hadoop,你必须首先安装JDK。具体安装步骤这里就不详细描述了。你可参考Mac 安装JDK8。 2.2 配置ssh环境…

【CVPR‘24】DeCoTR:使用 2D 和 3D 注意力增强深度补全

DeCoTR: Enhancing Depth Completion with 2D and 3D Attentions DeCoTR: Enhancing Depth Completion with 2D and 3D Attentions 中文解析摘要介绍方法方法3.1 问题设置3.2 使用高效的 2D 注意力增强基线3.3 3D中的特征交叉注意力点云归一化位置嵌入3.4 捕捉 3D 中的全局上下…

给鼠标一个好看的指针特效 鼠标光标如何修改形状?

许多爱美的小伙伴们都想着如何给自己的电脑打扮一下,用各种各样的途径来美化我们的电脑。今天我们给大家分享一下,如何美化鼠标效果,给鼠标指针修改成一个非常好看的形状~ 一起来看几组鼠标的效果,小编我给大家做了个录屏&#x…

linux文件——用户缓冲区——概念深度探索、IO模拟实现

前言:本篇文章主要讲解文件缓冲区。 讲解的方式是通过抛出问题, 然后通过分析问题, 将缓冲区的概念与原理一步一步地讲解。同时, 本节内容在最后一部分还会带友友们模拟实现一下c语言的printf, fprintf接口&#xff0c…