从0开始,让你的Spring Boot项目跑在Linux服务器
ztj100 2025-05-02 14:52 6 浏览 0 评论
1 搭建Linux服务器
1.1 购买阿里云服务器或安装虚拟机
这里建议是CentOS 7.X或CentOS 8.X,当然其他的Linux如deepin、Ubuntu也可以,只是软件环境的安装包和安装方式不同,跑项目都是差不多的
1.2 安装JDK1.8(CentOS 8为例)
下载JDK安装包:
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
选择:
jdk-8u291-linux-x64.tar.gz
安装:
[root@xxx local]# tar -zxvf jdk-8u291-linux-x64.tar.gz
[root@xxx local]# vim /etc/profile
修改环境变量:
export JAVA_HOME=/usr/local/jdk1.8.0_291
export JER_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
刷新配置文件并查看安装结果:
[root@xxx local]# source /etc/profile
[root@xxx local]# java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b15, mixed mode)
1.3 安装MySQL
参考这篇文章:
https://blog.csdn.net/Mr_YanMingXin/article/details/110858348
1.4 安装Maven(非必要)
为什么说安装Maven不是必要的呢?
因为Java具有跨平台的特性,可以在Windows环境下打包成Jar文件或者war文件,在Linux上一样可以直接运行!
Linux安装Maven的作用:
进行项目的编译和打包,当然也可以直接运行
安装步骤:
下载Maven安装包:
https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz
放到Linux上解压并修改配置文件:
[root@xxx local]# tar -zxvf apache-maven-3.8.1-bin.tar.gz
[root@xxx local]# vim /etc/profile
修改环境变量:
export MAVEN_HOME=/opt/apache-maven-3.8.1
export PATH=$MAVEN_HOME/bin:$PATH
刷新配置文件并验证:
[root@xxx local]# source /etc/profile
[root@xxx local]# mvn -v
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: /opt/apache-maven-3.8.1
Java version: 1.8.0_141, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_141/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.18.0-193.14.2.el8_2.x86_64", arch: "amd64", family: "unix"
别忘了!Maven配置阿里云镜像:
[root@xxx apache-maven-3.8.1]# pwd
/opt/apache-maven-3.8.1
[root@xxx apache-maven-3.8.1]# vim conf/settings.xml
大约是在第140多行左右:
<mirrors>
<!-- 阿里云仓库 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<!-- 中央仓库1 -->
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo1.maven.org/maven2/</url>
</mirror>
<!-- 中央仓库2 -->
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
</mirrors>
2 项目部署运行
2.1 项目编译打包(Windows环境下打包成jar文件)
项目的编译和打包一般有两种方式
(1)直接在IDEA中进行项目的打包
(2)使用命令行方式
在含有pom.xml文件的目录下使用cmd
执行mvn clean package命令
这样就代表成功啦,然后就会发现多了一个target目录和一个jar 文件
以上两个过程在Linux下也是一样的!(前提是Linux也安装了Maven)
2.2 部署运行
(1)方式一:可以是未编译成Jar文件情况下
cd到需要运行的项目主目录下,pom.xml文件的目录
[root@xxx placard_demo]# ll
-rw-r--r-- 1 root root 10519 May 27 08:17 placard_demo.iml
-rw-r--r-- 1 root root 5989 May 27 08:17 pom.xml
-rw-r--r-- 1 root root 1366 Apr 1 22:36 README.md
drwxr-xr-x 4 root root 30 Apr 1 10:21 src
drwxr-xr-x 5 root root 61 May 27 14:24 target
使用mvn spring-boot:run命令运行
如果长时间运行请使用nohup mvn spring-boot:run
(2)方式二:已经有Jar文件情况下
cd到需要运行的项目主目录的target目录下,jar文件的目录
[root@xxx target]# ll
total 56372
drwxr-xr-x 6 root root 92 May 27 14:23 classes
drwxr-xr-x 2 root root 28 Jun 27 15:06 maven-archiver
drwxr-xr-x 3 root root 35 May 27 14:23 maven-status
-rw-r--r-- 1 root root 42572685 Jun 27 15:07 placard_demo-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 15147851 Jun 27 15:07 placard_demo-0.0.1-SNAPSHOT.jar.original
drwxr-xr-x 3 root root 17 May 27 14:24 test-classes
使用java -jar xxx.jar命令运行
如果长时间运行请使用nohup java -jar xxx.jar
2.3 注意事项
使用nohup运行时会产生一个日志文件nohup.out,包含项目运行时的全部控制台日志输入,所以报错信息就可以根据它来查看。
2.4 常见问题
(1)jar文件无法运行
Linux的文件权限分为可读、可写、可执行,分别用r、w、x表示
所以无法运行可能是权限的问题,使用ll或ls -a命令查看jar文件的权限
改变权限:
chmod 777 xx.jar 或 chmod ugo+x xx.jar
当然这是一种不太安全的行为,因为把所有用户都赋予了对该文件的全部权限,相对安全的做法请自字百度下chmod 的用法。
(2)查看后台进程
ps -ef|grep java
然后大家就可以利用客户端测试啦!欢迎留言点赞!
相关推荐
- Java 8 新特性全面解读:解锁现代编程的魅力
-
Java8新特性全面解读:解锁现代编程的魅力Java8作为Java语言发展史上里程碑式的版本,不仅带来了诸多新特性,更深刻地改变了我们编写代码的方式。无论是简洁的Lambda表达式,还是强大的S...
- 教程:克隆公司饭卡 然后优雅地“蹭饭”
-
最近借了Proxmark3来娱乐性的玩下RFID技术,工资甚低的我只好拿公司饭卡实验,优雅地蹭几顿。物业大叔表打我啊!以下操作纯属学习目的,初学难免错误较多,望斧正。首先了解M1卡的结构:请参考htt...
- 新课标高中教材1030个短语大汇总(高中新课标英语词汇)
-
1.anamountof+不可数名词许多...
- 看完这篇文章你就懂 AQS 了(赛科龙aqs401参数详情)
-
前言谈到并发,我们不得不说AQS(AbstractQueuedSynchronizer),所谓的AQS即是抽象的队列式的同步器,内部定义了很多锁相关的方法,我们熟知的ReentrantLock、Ree...
- Java 8新特性全面解析:开启现代化编程之旅
-
Java8新特性全面解析:开启现代化编程之旅Java8作为Java语言发展历程中的重要里程碑,在2014年正式发布。它的到来标志着Java从传统面向对象编程向支持函数式编程迈进的重要一步。在这一版...
- Java 8新特性全面剖析:让代码更优雅、更高效
-
Java8新特性全面剖析:让代码更优雅、更高效Java8,作为Java语言发展史上的一座里程碑,带来了众多令人振奋的新特性。这些新特性不仅极大地提升了开发效率,还让代码变得更优雅、更简洁。今天,我...
- 线程安全编程方法总结(线程安全编程方法总结)
-
保护线程安全是多线程编程中的核心问题,关键在于控制共享资源的访问并协调线程间的执行顺序。以下是常用的基本方法及其适用场景:1.互斥锁(MutexLocks)机制:通过锁(如synchronize...
- 考勤数据标准化处理(考勤标准化管理制度)
-
经常做考勤的同学有没有遇到过这样的考勤数据呢?没错,从考勤机里导出来的,要统计那叫一个麻烦啊(有同学说可以导出txt文件,然后再处理会省事很多,有条件的小伙伴可以自己研究研究)看这表格数据其实挺规范的...
- SQL语句大全,所有的SQL都在这里(sql语句百度百科)
-
一、基础1、说明:创建数据库CREATEDATABASEdatabase-name2、说明:删除数据库dropdatabasedbname3、说明:备份sqlserver---创建备份数...
- 手搓Agno智能体使用Ollama模型(ollama本地智能体)
-
轻量化智能体开源框架Agno有兴趣了解WhatisAgno-Agno安装python3.12...
- 高级排序算法之快速排序(高效排序)
-
前言今天继续算法学习,本次学习的是高级排序之快速排序。本文代码部分存在调用公共方法,可在文章:...
- Linux cmp 命令使用详解(linux常用命令cp)
-
简介Linux中的...
- N张图告诉你K-DB为什么能全面兼容Oracle?
-
不是每一款数据库都能全面兼容Oracle,就像不是所有数据库都可以被称之为K-DB。一般数据库能做到的SQL标准和函数上兼容Oracle,而K-DB则能实现更多,在数据库体系架构、集群方式、数据库对象...
- 12. Langchain评估与调试:用LangSmith优化模型表现
-
引言:从"感觉不错"到"数据说话"2025年某电商平台通过LangSmith系统化的评估优化,将客服机器人的问题解决率从68%提升至92%。本文将详解如何用...
- 那些有用但不为大家所熟知的 Java 特性
-
本文最初发表于PiotrMińkowski的个人站点Medium网站,经作者授权,由InfoQ中文站翻译分享。...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- node卸载 (33)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- exceptionininitializererror (33)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)