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

news2024/11/24 20:43:52


目录

一.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.coloradmin.cn/o/2091298.html

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

相关文章

为什么使用雪花算法,有什么优缺点,如何解决?为什么不使用UUID的方法,如何解决系统回拨的问题?

为什么使用雪花算法,有什么优缺点,如何解决?为什么不使用UUID的方法,如何解决系统回拨的问题? 生成的id应该满足下面的条件: 首先是全局唯一,不能出现重复的ID之后是总体应该是递增的&#xf…

8个平面设计必备素材网站,免费下载。

平面设计师应该去哪里找免费可商用素材网站?我推荐这8个,赶紧收藏好。 1、菜鸟图库 菜鸟图库-免费设计素材下载 菜鸟图库是一个非常大的素材库,站内包含设计、办公、自媒体、图片、电商等各行业素材。网站还为新手设计师提供免费的素材&…

基于django的失物招领系统的设计与实现/ 基于Python的失物招领系统的设计与实现/失物招领管理系统

失物招领系统的设计与实现 摘要:伴随着我国全面推动信息化的趋势,我国的很多行业都在朝着互联网的方向进发。结合计算机技术的失物招领系统能够很好地解决传统失物招领存在的问题,能够提高管理员管理的效率,改善服务质量。优秀的失物招领系统…

感染了后缀为.Wormhole勒索病毒如何应对?数据能够恢复吗?

引言: 在当今日益复杂的网络安全环境中,勒索病毒成为了企业和个人面临的一大威胁。其中,.Wormhole勒索病毒以其独特的传播机制和强大的加密能力,尤为引人注目。本文将深入探讨.Wormhole勒索病毒的特点、感染途径、危害以及相应的…

XSS LABS 靶场初识

关注这个靶场的其他相关笔记:XSS - LABS —— 靶场笔记合集-CSDN博客 0x01:XSS LABS 靶场简介 XSS LABS 靶场是一个专注于跨站脚本攻击(Cross-Site Scripting,XSS)教育和训练的平台。平台中有一系列精心设计的关于 XS…

若依框架 MyBatis 改为 MyBatis-Plus 的实现步骤

本文只做了简单的实现,具体的细节需根据自己的需求进一步实现。如果实现中遇到问题欢迎留言讨论。 引入 MyBatis-Plus 引入相关依赖(pom.xml) 推荐先直接在顶级 pom.xml 中直接依赖,等调试通过之后,在去按需依赖&…

【hot100篇-python刷题记录】【三数之和】

R7-双指针篇 思路: 三个元素,代表需要3个指针,利用双指针收缩的思想,我们可以设置k,i,j三个元素指针。 k代表最外层的循环,循环一遍数组。(为了降低时间复杂度以及搜索难度,我们先将nums sort…

移动硬盘文件夹变成白色无法正常访问,怎么恢复?

在使用移动硬盘时,有时会遇到文件夹变白的情况。这通常意味着文件夹已经损坏或无法正常访问。本文将分析移动硬盘文件夹变白的原因,并提供相应的恢复方法。 一、原因分析 文件系统损坏:移动硬盘的文件系统可能因多种原因而损坏,如…

001集——CAD—C#二次开发入门——开发环境基本设置

CAD C#二次开发首先需要搭建一个舒服的开发环境,软件安装后,需要修改相关设置。本文为保姆级入门搭建开发环境教程,默认已成功安装vs和cad 。 第一步:创建类库 第二步:进行相关设置,如图: 下一…

milvus资源限制 benchmarker压测 qps优化

根据milvus 资源限制的官网,我们得出百万数据资源限制。 1.dev 环境 对接不同的配置最大的qps 如下(dev的机器内存很小) 2.于是认为当前的性能是匹配的,然后加上资源限制,配置 压测结果如下 {"run_id": "13292982fee74f64…

基于springboot+vue的民族文化推广系统设计与实现---附源码92323

摘 要 在全球化和信息化日益加深的当下,保护和推广民族文化显得尤为重要。民族文化不仅是一个国家或地区的独特标识,更是其历史、传统和智慧的结晶。然而,随着现代社会的快速发展,许多传统文化和习俗面临着被遗忘和消失的风险。因…

ssh---配置密钥对验证

1.在客户端创建密钥对 ssh-keygen -t ecdsa秘钥存放位置(生成密钥时的用户的工作目录下) 2.将公钥文件上传至服务器 3.在服务器中导入公钥文本 4.在客户机设置ssh代理功能,实现免交互登录 5.测试

Python自适应光学模态星形小波分析和像差算法

🎯要点 🎯星形小波分析像差测量 | 🎯对比傅里叶和小波分析 | 🎯定义多尺度图像质量度量,矩阵数据 | 🎯像差校正算法 | 🎯受激发射损耗显微镜布局 | 🎯干涉仪分支校准,求…

Java 虚方法表(虚函数)

虚方法表 Java 中的虚方法表(Virtual Method Table, VMT)是实现动态方法分派和多态的重要机制。它帮助 Java 运行时系统(JVM)决定在继承体系中调用哪一个方法的具体实现。 什么是虚方法表? 虚方法表是一个类的内部数…

Linux学习笔记(4)----通过网口灯判断网速是千兆还是百兆

网卡PHY 移植注意事项 注意RTL8211F的LED0,LED1,LED2,软件是可以自定义的,比如百兆,千兆,是亮哪个灯,黄灯或者绿灯,还有传输时是闪烁哪个灯,要注意硬件上是怎么驱动灯的…

获取当前计算机的处理器架构platform.machine()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 获取当前计算机的处理器架构 platform.machine() 选择题 关于以下代码的输出结果说法正确的是? import platform print("【执行】print(platform.machine())") prin…

Websocket测试工具,在线调试 - 在线工具

WebSocket 测试工具是用于测试 WebSocket 连接、发送和接收消息的工具。它们通常提供一个简单的用户界面,使开发人员能够快速验证 WebSocket 服务器的功能和性能。 在线Websocket测试工具体验地址:https://ewbang.com/websocket/index.html 什么是 WebSo…

具身智能(Embodied Intelligence)概述

目录 一、引言 二、具身感知 三、具身交互 四、具身智能体 五、虚拟到现实 一、引言 最近无论是斯坦福机器人炒虾,还是特斯拉官宣机器人进厂,都赚足了眼球,实力证明了具身智能(Embodied Intelligence)的火爆。…

SEO之网站结构优化(十四-内部链接及权重分配2)

初创企业搭建网站的朋友看1号文章;想学习云计算,怎么入门看2号文章谢谢支持: 1、我给不会敲代码又想搭建网站的人建议 2、“新手上云”能够为你开启探索云世界的第一步 博客:阿幸SEO~探索搜索排名之道 4、翻页过多 稍大型的商务…

无心剑中译莎士比亚《无君相伴浸寒冬》

莎士比亚十四行诗第98首 Sonnet 98 无君相伴浸寒冬 From you have I been absent in the spring, When proud pied April, dressed in all his trim, Hath put a spirit of youth in every thing, That heavy Saturn laughed and leapt with him. Yet nor the lays of birds,…