后端golang项目一键打包部署方案

之前写过前端一键部署的方案 # 一条命令实现打包并自动部署 但是后端项目一直没有加这个功能,今天给它补上

  • 项目类型:go语言gin项目单体服务
  • 服务器类型:华为云轻量级服务器
  • 本地开发机:macos 系统

一:自动打包并上传部署的脚本

在项目根目录新增deploy.sh文件,并给可执行权限

bash 复制代码
#!/bin/bash

# ============ 只改这里 改成你自己的 ============
SERVER_IP="xxx.xxx.xxx.xxx"
SERVER_PORT=22
SERVER_USER="root"
SERVER_DIR="/root/yun120"
APP_NAME="yun120"
# ==============================================

echo "===== 1. 编译 Linux amd64 可执行文件 ====="
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o $APP_NAME .

echo "===== 2. 远程停止 systemd 服务 ====="
ssh -p $SERVER_PORT $SERVER_USER@$SERVER_IP "systemctl stop yun120"

echo "===== 3. 上传新程序到服务器 ====="
scp -P $SERVER_PORT ./$APP_NAME $SERVER_USER@$SERVER_IP:$SERVER_DIR/

echo "===== 4. 加执行权限 + 启动服务 ====="
ssh -p $SERVER_PORT $SERVER_USER@$SERVER_IP "chmod +x $SERVER_DIR/$APP_NAME && systemctl start yun120"

echo "===== 5. 查看服务运行状态 ====="
ssh -p $SERVER_PORT $SERVER_USER@$SERVER_IP "systemctl status yun120 --no-pager"

echo -e "\n✅ 全自动部署完成!"

我的项目文件夹是yun120,可执行文件也是 yun120,每次想打包部署项目时候执行这个文件即可, 但是有个问题,会频繁让你输入服务器密码,接下来

二:配置 SSH 免密登录

  1. 在电脑终端执行(一路回车,不要输入任何东西)

    ssh-keygen -t ed25519

  2. 把密钥传到服务器(只需要输一次密码)

go 复制代码
ssh-copy-id root@你的服务器IP
  1. 测试是否免密(不用输密码直接登录 = 成功)
bash 复制代码
./deploy.sh

至此,go项目一键打包部署搞定,以前更新项目要先构建项目,登陆服务器停掉服务,上传可执行文件覆盖以前文件,命令开启项目,现在只需一步搞定

相关推荐
程序员海军7 小时前
用了两年多 GPT,我最近开始换模型了,还折腾了个求职避坑 Agent
前端·人工智能·后端
码士集团小青7 小时前
SpringBoot 集成缓存性能之王 Caffeine
spring boot·后端·缓存
excel9 小时前
IndexNow:让搜索引擎更快发现网站更新的主动通知协议
前端·后端·架构
Json____9 小时前
用 FastAPI + Vue3 打造一套完整的在线考试系统:从组卷到阅卷的业务闭环实践
后端·node.js·fastapi·it学习·wwwoop.com
小灰灰搞电子10 小时前
Rust+Slint 实现FTP客户端调试助手源码分享
开发语言·后端·rust
专业程序开发源10 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
卷无止境11 小时前
面向arm64桌面客户端开发全景:语言、框架与生态
后端·python
IT_陈寒11 小时前
JavaScript的闭包陷阱,这个坑我躺了三天才爬出来
前端·人工智能·后端
用户83562907805111 小时前
如何使用 Python 对 Excel 数据进行分组和分级显示
后端·python
vx_Biye_Design12 小时前
django房屋租赁推荐系统78455-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·课程设计·express