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系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IntelliJIDEA中实现SpringBoot多实例运行的两种方式

    IntelliJIDEA中实现SpringBoot多实例运行的两种方式

    在微服务开发中,经常需要同时启动多个服务实例进行测试或模拟集群环境,‌IntelliJ IDEA‌作为Java开发者常用工具,提供了灵活的多实例启动支持,本文将详细介绍如何通过修改配置‌和批量启动‌两种方式实现SpringBoot多实例运行,并解决常见问题,需要的朋友可以参考下
    2025-03-03
  • 完整java开发中JDBC连接数据库代码和步骤

    完整java开发中JDBC连接数据库代码和步骤

    这篇文章主要介绍了完整java开发中JDBC连接数据库代码和步骤,需要的朋友可以参考下
    2015-09-09
  • Java OkHttp框架源码深入解析

    Java OkHttp框架源码深入解析

    okhttp是一个第三方类库,用于android中请求网络。这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient
    2022-08-08
  • Java Swing中的工具栏(JToolBar)和分割面版(JSplitPane)组件使用案例

    Java Swing中的工具栏(JToolBar)和分割面版(JSplitPane)组件使用案例

    这篇文章主要介绍了Java Swing中的工具栏(JToolBar)和分割面版(JSplitPane)组件使用案例,本文直接给出代码实例和效果截图,需要的朋友可以参考下
    2014-10-10
  • Spring事务失效场景原理及解决方案

    Spring事务失效场景原理及解决方案

    这篇文章主要介绍了Spring事务失效场景原理及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • JavaWeb项目音频资源播放实现方法详解

    JavaWeb项目音频资源播放实现方法详解

    这篇文章主要介绍了JavaWeb项目音频资源播放实现方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java数据结构之二叉树遍历算法与底层实现方法剖析

    Java数据结构之二叉树遍历算法与底层实现方法剖析

    只有通过大量的练习,才能逐渐熟悉常见的数据结构和算法技巧,从而更快地解决问题,这篇文章主要介绍了Java数据结构之二叉树遍历算法与底层实现方法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-06-06
  • Java多线程实现阻塞队列的示例代码

    Java多线程实现阻塞队列的示例代码

    本文主要介绍了Java多线程实现阻塞队列的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • Java属性嵌套获取值的实现方式

    Java属性嵌套获取值的实现方式

    本文介绍了如何使用MybatisMetaObject类和FieldUtil工具类来简化Java类嵌套获取属性值的过程,通过这种方式,可以避免逐层检查和判空操作,直接从实例对象中获取深层嵌套的属性值,并且在任意一层为空时自动返回null,不会报错
    2025-11-11
  • 使用spring aop 统一捕获异常和写日志的示例demo

    使用spring aop 统一捕获异常和写日志的示例demo

    本文通过一个小demo给大家介绍spring AOP 实现的异常捕获和日志的方法技巧,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-08-08

最新评论