Java Web程序在Linux系统上的部署完整流程

 更新时间:2025年12月13日 09:45:19   作者:BUG召唤师  
Java Web项目是基于Java平台构建的、运行在Web服务器上的应用程序,这篇文章主要介绍了Java Web程序在Linux系统上的部署完整流程,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

本文介绍了在Linux系统中部署Web项目的完整流程。首先讲解了使用apt命令管理软件包、安装JDK和MySQL的基本操作;然后详细说明了如何通过Maven配置多环境参数、打包项目并上传到服务器;最后介绍了后台运行程序、处理端口冲突的方法。整个部署过程涵盖了从基础环境搭建到项目上线的关键步骤,为开发者提供了实用的Linux部署指导。

一、搭建部署环境

使用 apt 在 Linux 环境中安装,更新,删除和管理软件包;

1. apt 的常用命令

# 列出所有软件包
apt list

# 更新软件包数据库
apt-get update

# 安装软件包
apt install package_name

# 移除软件包
apt remove package_name
apt purge package_name

2. 安装 JDK

安装软件前,先更新包管理器中的软件资源:

apt-get updtae

查找及安装 JDK:

# 查找 jdk
apt list | grep "jdk"

# 安装 jdk
apt install openjdk-17-jdk

# 查看 jdk 版本
java -version

3. 安装 mysql

# 查找安装包
apt list | grep "mysql-server"

# 安装 mysql
apt install mysql-server

# 查看 mysql 状态
systemctl status mysql

二、部署 Web 项目到 Linux

1. 环境配置

为了避免在开发环境中和生产环境中切换时,频繁的修改程序,因此配置文件通常写两个,程序打包时,选择使用哪个配置文件即可,避免修改程序;

开发环境使用 dev 配置文件,线上环境使用 prod 配置文件;两个文件的格式是相同的,内容需要根据数据库的配置填写不同的内容;

以 dev 为例:

spring:
  application:
    name: spring-blog

  # 数据库配置
  datasource:
    url: jdbc:mysql://127.0.0.1:3308/java_blog_spring?characterEncoding=utf8&useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  #  配置 mybatis xml 的文件路径,在 resources/mapper 创建所有表的 xml 文件
  mapper-locations: classpath:mapper/**Mapper.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 配置打印 MyBatis日志
    map-underscore-to-camel-case: true #配置驼峰自动转换

logging:
  file:
    name: spring-blog.log

在 application.yml 中指定使用哪个配置文件;

spring:
  profiles:
    active: dev

为了防止 application.yml 中的总是需要修改,可以从 Maven 环境中读取配置变量:

    <profiles>
		<profile>
			<id>dev</id>
			<properties>
				<profile.name>dev</profile.name>
			</properties>
		</profile>
		<profile>
			<id>prod</id>
			<properties>
				<profile.name>prod</profile.name>
			</properties>
		</profile>
	</profiles>

修改 application.yml:

spring:
  profiles:
    active: @profile.name@

2. 构建项目并打包

使用 Maven 进行打包:

1. 需要选择使用哪个配置文件,勾选好之后,要刷新,重新加载 Maven 配置;

2. 如果是线上环境,数据库配置和本地环境不同,打包时测试相关的操作会失败,因此可以跳过测试;

3. 双击 package 进行打包;

打包完,在指定目录中找到打包好的软件包,通常有几十兆,如果打包过小,只有几兆,可能是 Maven 中打包插件有问题,没有打包引入的第三方的代码;

3. 上传 jar 包到服务器

将打好的 jar 包托到服务器的指定目录:

拖动需要使用 rzsz 命令,如果拖动失败,先安装 rzsz:

apt-get install lrzsz

成功后运行程序:

nohup java -jar blog-spring-0.0.1-SNAPSHOT,jar &

使用 nohup 指令,可以使程序在 shell 窗口关闭后也能运行(后台运行程序);

程序运行后,注意一定要开放应用程序的端口号;

一切就绪后,使用浏览器进行访问,检查能否访问成功;

4. 解决端口号冲突

如果端口号冲突,先查找到使用这个端口进程;

netstat -anp | grep "8080"

找到使用这个端口的进程,查看这个进程是什么:

ps aux | grep "进程号"

如果这个进程可以不运行,可以杀掉进程:

kill 进程号

总结

到此这篇关于Java Web程序在Linux系统上的部署完整流程的文章就介绍到这了,更多相关Java Web程序部署Linux系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Security 实现用户名密码登录流程源码详解

    Spring Security 实现用户名密码登录流程源码详解

    在服务端的安全管理使用了Spring Security,用户登录成功之后,Spring Security帮你把用户信息保存在Session里,但是具体保存在哪里,要是不深究你可能就不知道,今天小编就带大家具体了解一下Spring Security实现用户名密码登录的流程
    2021-11-11
  • SpringBoot整合MyBatis-Plus3.1教程详解

    SpringBoot整合MyBatis-Plus3.1教程详解

    这篇文章主要介绍了SpringBoot整合MyBatis-Plus3.1详细教程,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 解决spring cloud gateway 获取body内容并修改的问题

    解决spring cloud gateway 获取body内容并修改的问题

    这篇文章主要介绍了解决spring cloud gateway 获取body内容并修改的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • java-thymeleaf的使用方式

    java-thymeleaf的使用方式

    这篇文章主要介绍了java-thymeleaf的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Java怎样判断堆区中的对象可以被回收了

    Java怎样判断堆区中的对象可以被回收了

    文章介绍了Java垃圾回收机制的工作原理,主要通过引用计数法和可达性分析法来判断对象是否可以被回收,引用计数法存在循环引用问题,而可达性分析法则使用GCRoot对象来判断对象是否可达,从而决定是否回收,这两种方法各有优缺点,但Java最终采用了可达性分析法来实现垃圾回收
    2024-12-12
  • java注解结合aspectj AOP进行日志打印的操作

    java注解结合aspectj AOP进行日志打印的操作

    这篇文章主要介绍了java注解结合aspectj AOP进行日志打印的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • SpringBoot登录、退出、获取用户信息的session处理方案

    SpringBoot登录、退出、获取用户信息的session处理方案

    这篇文章主要介绍了SpringBoot登录、退出、获取用户信息的session处理,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • LRU算法及Apache LRUMap源码实例解析

    LRU算法及Apache LRUMap源码实例解析

    这篇文章主要给大家介绍了关于LRU算法及Apache LRUMap源码解析的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-11-11
  • 教你开发脚手架集成Spring Boot Actuator监控的详细过程

    教你开发脚手架集成Spring Boot Actuator监控的详细过程

    这篇文章主要介绍了开发脚手架集成Spring Boot Actuator监控的详细过程,集成包括引入依赖配置文件及访问验证的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 分析JVM源码之Thread.interrupt系统级别线程打断

    分析JVM源码之Thread.interrupt系统级别线程打断

    在java编程中,我们经常会调用Thread.sleep()方法使得线程停止运行一段时间,而Thread类中也提供了interrupt方法供我们去主动打断一个线程。那么线程挂起和打断的本质究竟是什么,本文就此问题作一个探究
    2021-06-06

最新评论