阿里云部署Java项目教程(Spring Boot/Tomcat实战)
写好的Java项目怎么放上云服务器对外提供服务,是后端新手部署环节最常问的问题。本文以阿里云ECS为例,覆盖Spring Boot jar包与传统Tomcat war包两条部署路线,把JDK安装、进程守护、反向代理这些关键环节一次讲清。
一、需求分析:Java项目的资源特点
Java应用的特点是内存占用偏高,JVM启动就需要几百兆打底,因此配置选择的重点是内存:
- 仅跑一个轻量Spring Boot服务:2核2G勉强可用,但不留余量;
- 服务加MySQL加Redis同机部署:建议2核4G起步,这也是小程序后端、Java、Node类业务的通用建议;
- 多模块微服务、并发较高:4核8G或直接拆分部署。
磁盘建议ESSD,日志写入和数据库读写的体验差距明显。
二、服务器配置推荐
| 方案 | 配置 | 参考价(以官网活动页为准) | 适合场景 |
|---|---|---|---|
| ECS e实例 | 2核2G 3M带宽 | 约99元/年 | 单服务练手、演示环境 |
| ECS 进阶款 | 2核4G | 约199元/年 | 正式项目、服务加数据库 |
| 更高配置 | 4核8G起 | 以官网实时信息为准 | 微服务、高并发业务 |
大陆地域部署对外服务需完成ICP备案,流程约1到3周;内测阶段可用IP加临时端口先跑通。价格以阿里云官网实时信息为准。
三、路线一:部署Spring Boot jar包(主流方式)
Spring Boot内嵌Tomcat,打出的jar包用java命令即可运行,步骤如下:
- 安装JDK:通过yum或apt安装openjdk,或上传Oracle JDK解压配置环境变量,版本需与项目编译版本匹配;
- 上传jar包:本地执行mvn package打包后,用scp或SFTP工具把jar包传到服务器目录,例如/opt/app;
- 启动验证:执行类似nohup java -jar app.jar --server.port=8080 > app.log 2>&1 &的命令,tail日志确认启动成功;
- 进程守护:更推荐写一个systemd服务文件,设置开机自启与崩溃自动重启,常用JVM参数如-Xms、-Xmx也在这里指定,一般把堆内存上限设为物理内存的一半左右;
- 安全组放行:在阿里云控制台安全组中放行应用端口,或在下一步统一走Nginx。
四、路线二:部署传统war包到Tomcat
老项目或课程作业常以war包交付:
- 安装JDK与Tomcat,注意Tomcat版本与Servlet规范对应;
- 把war包放入Tomcat的webapps目录,启动Tomcat后自动解压部署;
- 修改server.xml或使用独立context配置数据库连接与端口;
- 通过公网IP加8080端口访问验证,再按需改回80端口或交由Nginx转发。
五、Nginx反向代理与域名上线
无论哪种路线,生产环境都建议加一层Nginx:
- 安装Nginx并配置server块,将80、443请求proxy_pass到本机应用端口;
- 申请免费SSL证书,配置HTTPS并强制跳转;
- 域名解析A记录指向服务器IP,大陆地域域名需已完成ICP备案;
- 安全组只保留80、443、22端口,应用端口从公网收口,安全性大幅提升。
部署后的运维习惯
Java项目的稳定性一半靠部署,一半靠习惯:日志要按天切割,避免单个日志文件膨胀到几个G拖垮磁盘;发布前先在测试环境验证数据库变更脚本;配置文件与代码分开管理,敏感信息不要写死在项目配置里;每隔一段时间查看JVM垃圾回收情况,发现频繁Full GC就及时调参。这些动作都不复杂,却能挡住绝大多数线上故障。
六、费用估算
| 项目 | 参考费用 | 说明 |
|---|---|---|
| 云服务器 | 约99元到199元/年 | 2核2G到2核4G,以官网实时信息为准 |
| JDK与Tomcat | 0元 | 开源软件 |
| SSL证书 | 0元 | 免费证书即可 |
| ICP备案 | 0元 | 大陆地域必须,约1到3周 |
常见问题
问:jar包和war包部署选哪个? 答:新项目一律推荐Spring Boot jar加systemd守护;老项目受框架限制用war加Tomcat即可,两者可以共存。
问:2核2G能跑Java项目吗? 答:单个轻量服务可以,建议JVM堆上限控制在1G左右;生产环境建议2核4G起步。
问:服务莫名挂掉怎么办? 答:先看应用日志与系统内存,排查是否OOM;配置systemd自动重启可保证可用性,根因靠日志定位。
问:需要装宝塔面板吗? 答:可选。宝塔对Java项目管理支持一般,命令行加systemd是更主流的Java部署方式。
问:Docker部署Java项目值得吗? 答:值得。写好Dockerfile后环境一致、迁移方便,阿里云服务器上安装Docker后一条命令即可运行。
问:服务器重启后Java服务要手动启动吗? 答:如果只用了nohup就会这样。建议配置systemd服务文件,设置开机自启与异常自动重启,一劳永逸。
问:项目更新怎么发布新版本? 答:规范做法是新jar包上传后先停旧进程、备份旧版本再启动新版本,出问题可秒级回滚;配合简单的发布脚本可以把这套动作自动化。
问:日志文件越来越大怎么办? 答:在应用或日志框架中配置按天滚动与自动清理,保留最近两周左右即可;服务器上也可以用定时任务压缩归档历史日志。
问:多个Java服务能跑在同一台服务器上吗? 答:可以,用不同端口加systemd分别守护即可,但内存要按服务数量预留,建议每增加一个服务多规划1G内存。
行动建议
Java项目部署的要点就三件:内存给够、进程守护、Nginx收口。建议先去阿里云官网活动页查看ECS实时价格,先领券再下单,2核4G活动价通常在百元级,跑Java更稳;备案在开发期同步办理,不耽误上线节奏。价格以阿里云官网实时信息为准。