如何在服务器部署Java网站,Java项目部署流程是什么?

Java 网站服务器部署全指南

部署 Java 网站通常涉及环境搭建、项目打包、服务器配置以及反向代理等多个环节,目前主流的部署方式分为 Spring Boot 内嵌服务器部署(Jar包)传统外部容器部署(War包),本文以最常用的 Spring Boot 为例进行详细讲解。

准备工作

在开始部署前,请确保你拥有以下资源:

我的世界服务器Java版进入方法
加载中
我的世界服务器Java版进入方法
  • 一台 Linux 服务器(推荐 Ubuntu 22.04 或 CentOS 7/8)。
  • 域名(可选,用于通过域名访问)。
  • 基础知识:基本的 Linux 命令行操作、SSH 连接工具(如 PuTTY, Xshell 或 Terminal)。

环境搭建

安装 JDK (Java Development Kit)

Java 程序运行必须安装 JRE,开发部署建议安装 JDK,版本必须与项目编译版本一致。

  • 安装命令(以 Ubuntu 为例,安装 OpenJDK 17)
    • sudo apt update
    • sudo apt install openjdk-17-jdk
  • 验证安装
    • java -version

安装数据库

根据项目需求安装 MySQL, PostgreSQL 或 MongoDB。

  • 安装 MySQL
    • sudo apt install mysql-server

    如何在服务器部署Java网站,Java项目部署流程是什么?

  • 配置:创建数据库、创建用户并授予权限,导入项目所需的 .sql 脚本。

项目打包

在本地开发环境将代码编译为可执行文件。

  • 使用 Maven 打包
    • 在项目根目录下运行:mvn clean package -DskipTests
    • 打包完成后,在 target 目录下会生成一个 .jar 文件(my-app-0.0.1-SNAPSHOT.jar)。
  • 上传文件
    • 使用 SCP 或 FTP 工具将 .jar 文件上传到服务器指定目录(如 /var/www/java-app/)。

部署运行

前台测试运行

先尝试直接运行,确认程序没有配置错误:

  • java -jar my-app.jar
  • 观察日志,确认显示 Started Application in X seconds 且没有报错。

后台持久化运行

前台运行在关闭终端后会停止,因此需要将其作为后台进程运行。

  • 使用 nohup(简单快速)

    • nohup java -jar my-app.jar > output.log 2>&1 &
    • 解释nohup 忽略挂断信号,> output.log 将日志输出到文件,& 表示后台运行。
    • 如何在服务器部署Java网站,Java项目部署流程是什么?

  • 使用 systemd(专业推荐,支持自启动)

    • 创建服务文件:sudo nano /etc/systemd/system/my-app.service

    • [Unit]
      Description=My Java Website
      After=syslog.target
      [Service]
      User=root
      ExecStart=/usr/bin/java -jar /var/www/java-app/my-app.jar
      SuccessExitStatus=143
      Restart=always
      RestartSec=10
      [Install]
      WantedBy=multi-user.target
    • 启动服务

      • sudo systemctl daemon-reload
      • sudo systemctl start my-app
      • sudo systemctl enable my-app (设置开机自启)

配置 Nginx 反向代理

Java 应用通常运行在 8080 端口,直接暴露给用户不安全且不方便,使用 Nginx 将 80 端口(HTTP)或 443 端口(HTTPS)转发到 Java 应用。

  • 安装 Nginx
    • sudo apt install nginx
  • 配置反向代理
    • 编辑配置文件:sudo nano /etc/nginx/sites-available/default
    • server 块中添加:
      location / {
          proxy_pass http://localhost:8080;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
      }

      如何在服务器部署Java网站,Java项目部署流程是什么?

  • 重启 Nginx
    • sudo systemctl restart nginx

关键优化与安全

  • 防火墙配置
    • 仅开放 80, 443 和 22 端口,关闭 8080 端口以防止直接访问。
    • sudo ufw allow 80/tcp
    • sudo ufw allow 443/tcp
  • JVM 参数调优
    • 根据服务器内存限制,设置最大堆内存,防止 OOM(内存溢出)。
    • java -Xms512m -Xmx1024m -jar my-app.jar
  • SSL 证书
    • 使用 Certbot (Let’s Encrypt) 为 Nginx 配置免费的 HTTPS 证书,提升安全性。
  • 日志管理
    • 定期清理 output.log 或使用 logrotate 工具,防止磁盘空间被日志填满。

部署流程总结

代码编写 $rightarrow$ Maven 打包 $rightarrow$ 上传服务器 $rightarrow$ 安装 JDK/DB $rightarrow$ systemd 后台运行 $rightarrow$ Nginx 转发 $rightarrow$ 配置防火墙/SSL

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/493751.html

(0)
负载均衡和CDN有什么区别?负载均衡与CDN配合如何优化网站访问速度?
上一篇 2026年7月14日 09:11
7200cdn是什么?7200cdn怎么使用及CDN加速配置教程
下一篇 2026年7月14日 09:16

相关推荐

  • ASP.NET导出Excel报错怎么办?详解ASP.NET Excel导出教程

    核心方案在ASP.NET中高效导出Excel需优先选择现代解决方案:使用EPPlus库(推荐.NET Core+)或NPOI(跨平台兼容),避免传统COM组件的内存泄漏风险,以下为专业级实现策略:传统方案的问题与替代方案COM组件 (Microsoft.Office.Interop.Excel)// 不推荐!存……

    2026年2月11日
    13300
  • 新加坡PedjoeangDigitalVPS怎么样?63美元月方案实测对比

    新加坡作为亚太地区的网络枢纽,其服务器节点一直备受企业与开发者关注,本次实测聚焦Pedjoeang Digital部署于新加坡机房的Digital VPS方案,月付63美元档位,本报告将从硬件性能、网络质量、稳定性及性价比等维度提供详实数据,并结合2026年最新优惠活动进行分析,为亚太业务布局提供选型参考, 测……

    2026年4月29日
    4800
  • AI剪辑首购活动怎么参加?哪个AI剪辑软件好用?

    爆炸的时代,视频创作已成为传播的核心载体,而AI技术的介入彻底重构了这一领域的生产逻辑,对于创作者和企业而言,利用AI剪辑工具实现降本增效已不再是可选项,而是必选项,当前市场上,各大厂商为了争夺用户,纷纷推出极具吸引力的AI剪辑首购活动,这不仅是价格上的让利,更是创作者低成本完成技术迭代、实现工作流升级的最佳窗……

    2026年2月23日
    12600
  • OPPO与谷歌服务器通信时出问题怎么办,是什么原因?

    如果你的oppo手机与谷歌服务器通信出现问题,通常是因为网络受限、谷歌服务框架未正确安装或账号异常,按照以下步骤操作即可解决,为什么oppo手机会出现谷歌服务器通信问题?oppo手机搭载的ColorOS系统基于安卓,但国内版本通常不预装谷歌移动服务(GMS),当你在后期自行安装或使用海外版ROM时,就有可能遇到……

    2026年8月21日
    500
  • 如何在ASP.NET中获取年份?C获取年份的实现方法与示例

    在ASP.NET中获取当前年份的最简单方法是使用DateTime.Now.Year属性,这个属性返回一个整数,代表当前系统时间的年份值,在C#代码中,您可以直接调用DateTime.Now.Year来获取年份,并将其用于显示或逻辑处理,ASP.NET获取年份的基础ASP.NET框架基于.NET平台,使用C#语言……

    2026年2月10日
    12600
  • 第一次进SQL2016怎么连接服务器?,连接不上怎么办?

    对于第一次进入 SQL Server 2016 的用户,连接服务器最直接的方法就是打开 SQL Server Management Studio,在服务器名称框中输入计算机名或 IP 地址,如果是命名实例则加上 \实例名,选择 Windows 身份验证,点击连接,如果遇到问题,以下是完整的排查步骤,从确认服务到……

    2026年7月26日
    1400
  • Excel工资条宏怎么用?批量制作工资条的宏代码

    利用Excel宏(VBA)自动生成工资条,是HR处理月度薪酬数据时最高效、零错误的解决方案,它能将原本需要半小时的手动复制粘贴工作压缩至3秒内完成,在每月的发薪日,人力资源专员面对成千上万行的Excel数据表,往往感到头秃,手动拆分工资条不仅耗时,还极易出现行错位、姓名张冠李戴等低级错误,对于中小企业而言,聘请……

    2026年7月4日
    6900
  • 如何用Excel制作工程进度表?excel工程进度计划表模板

    利用Excel构建工程进度表,核心在于将甘特图可视化、关键路径法(CPM)逻辑与动态数据透视相结合,实现从“静态记录”到“智能预警”的跨越,在建筑工程、软件开发或制造业项目中,进度管理往往是最容易失控的环节,很多项目经理习惯用Word或简单的表格记录日报,结果发现当变更发生时,整个计划表就像推倒的多米诺骨牌,牵……

    2026年7月6日
    11200
  • 游戏开发如何运用设计模式?常用设计模式详解

    在软件工程领域,设计模式被视为构建稳健系统的基石,而在游戏开发这一特殊领域,设计模式的应用远非照搬教科书那么简单,游戏开发与设计模式的核心联系在于:设计模式不是预设的答案,而是解决特定复杂问题的最优解工具箱, 成功的游戏架构,往往是在性能极限、开发效率与系统扩展性三者之间寻找平衡,设计模式正是实现这种平衡的关键……

    2026年3月12日
    13000
  • stm32库开发实战 pdf下载地址在哪,stm32库开发实战指南pdf百度云资源

    STM32库开发实战是连接理论设计与硬件落地的关键桥梁,而获取高质量的stm32库开发实战 pdf资料,是工程师快速掌握ARM Cortex-M内核架构、提升嵌入式系统开发效率的最佳捷径,核心结论在于:脱离底层寄存器繁琐操作,转向固件库(HAL库与标准库)的高效开发,已成为行业不可逆转的趋势,掌握库开发逻辑是通……

    2026年3月19日
    11900

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注