You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Bitbucket将WAR包自动部署至AWS Ubuntu实例的Tomcat

可行的Bitbucket到AWS Tomcat自动部署方案

我之前帮几个同事搞定过一模一样的场景,给你一套亲测能跑通的步骤,跟着来应该没问题:

一、先搞定AWS Ubuntu实例的准备工作

1. 配置SSH密钥让Bitbucket能访问实例

  • 在你的AWS实例上生成SSH密钥对(权限一定要配置对,不然连不上):
    ssh-keygen -t ed25519 -C "bitbucket-deploy"
    
    一路回车用默认设置,会得到id_ed25519(私钥)和id_ed25519.pub(公钥)两个文件。
  • 把公钥内容添加到实例的授权列表里:
    cat id_ed25519.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
    
  • 把私钥内容复制下来,后面要用到Bitbucket的配置里。

2. 编写部署脚本

在AWS实例上创建一个部署脚本,比如/home/ubuntu/deploy-war.sh,内容根据你的实际路径调整:

#!/bin/bash
# 替换成你Tomcat的webapps实际路径
TOMCAT_WEBAPPS="/home/ubuntu/tomcat/webapps"
# 替换成你的项目WAR包名称
WAR_NAME="my-webapp.war"

# 可选:如果需要避免部署冲突,可以先停Tomcat
# sudo systemctl stop tomcat

# 删除旧的WAR包和解压后的目录
rm -rf $TOMCAT_WEBAPPS/$WAR_NAME
rm -rf $TOMCAT_WEBAPPS/${WAR_NAME%.war}

# 把新传过来的WAR包移到webapps目录
mv /tmp/$WAR_NAME $TOMCAT_WEBAPPS/

# 可选:重启Tomcat(如果之前停了的话)
# sudo systemctl start tomcat

# 给WAR包设置正确权限,防止Tomcat读取失败
chown ubuntu:ubuntu $TOMCAT_WEBAPPS/$WAR_NAME

然后给脚本加上执行权限:

chmod +x /home/ubuntu/deploy-war.sh

二、配置Bitbucket Pipeline

1. 启用Pipeline并添加SSH密钥

  • 打开你的Bitbucket仓库,进入Settings > Pipelines > SSH keys,点击Add key,把之前复制的私钥内容粘贴进去,同时填写你的AWS实例地址,格式是ubuntu@你的实例公网IP。

2. 创建Pipeline配置文件

在你的Java项目根目录创建bitbucket-pipelines.yml文件,内容如下:

# 换成你项目对应的Java版本Maven镜像
image: maven:3.8.6-openjdk-11

pipelines:
  default:
    - step:
        name: 构建并自动部署WAR包
        deployment: production  # 可选,标记部署环境
        script:
          # 用Maven构建WAR包(Gradle项目换成gradle build即可)
          - mvn clean package -DskipTests
          # 把构建好的WAR包传到AWS实例临时目录
          - scp target/$WAR_NAME ubuntu@你的实例公网IP:/tmp/
          # 执行实例上的部署脚本
          - ssh ubuntu@你的实例公网IP "/home/ubuntu/deploy-war.sh"
        artifacts:
          - target/*.war  # 可选,保存构建产物方便回溯

记得把$WAR_NAME和实例IP替换成你自己的实际信息。

三、测试部署

  • 把bitbucket-pipelines.yml提交推送到Bitbucket仓库,随便改一行代码再推送,触发自动Pipeline。
  • 去Bitbucket的Pipelines页面看执行日志,如果没有报错,就去Tomcat的webapps目录检查新WAR包是否已经被解压,再访问应用地址验证部署效果。

避坑提醒

  • 确保AWS实例的安全组开放了22端口(SSH),不然Bitbucket连不上你的实例。
  • Tomcat默认开启自动部署,如果没生效,检查conf/server.xml里的Host节点是否有autoDeploy="true"配置。
  • 如果Maven构建需要私有依赖,记得在Bitbucket Pipeline里配置对应的Maven settings(可以用加密文件或者环境变量)。
  • 脚本里的路径一定要和你实际的Tomcat路径完全匹配,别写错了!

内容的提问来源于stack exchange,提问作者Gadreel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 00:14:07