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

 更新时间:2026年05月10日 09:24:25   作者:锋行天下  
本文介绍了如何为Go语言Gin项目添加一键打包并自动部署功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

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

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

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

#!/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
  1. 把密钥传到服务器(只需要输一次密码)
ssh-copy-id root@你的服务器IP
  1. 测试是否免密(不用输密码直接登录 = 成功)
./deploy.sh

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

到此这篇关于后端golang项目一键打包部署方案的文章就介绍到这了,更多相关golang一键打包部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Goland远程连接Linux进行项目开发的实现

    Goland远程连接Linux进行项目开发的实现

    有的时候我们的开发代码要在linux服务器上运行,本文主要介绍了Goland远程连接Linux进行项目开发的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • Go语言中零拷贝的原理与实现详解

    Go语言中零拷贝的原理与实现详解

    零拷贝是相对于用户态来讲的,即数据在用户态不发生任何拷贝,那么零拷贝的原理是什么,又是如何实现的呢,下面小编就来和大家详细聊聊吧
    2023-08-08
  • Go语言使用模板渲染HTML页面的实现技巧

    Go语言使用模板渲染HTML页面的实现技巧

    在Web开发中,服务器端模板渲染仍然是很多场景(后台管理、邮件模板、服务端渲染页面等)的首选,Go标准库里的html/template不仅易用,而且默认防XSS,非常适合服务端渲染,本文通过实战示例讲解如何在Go中使用模板渲染HTML页面,需要的朋友可以参考下
    2025-08-08
  • Golang 实现跨域请求的多种实现对比

    Golang 实现跨域请求的多种实现对比

    本文主要介绍了Golang 实现跨域请求的多种实现对比,包括原生设置、第三方库、框架中间件、反向代理,具有一定的参考价值,感兴趣的可以了解一下
    2025-05-05
  • Go语言状态机的实现

    Go语言状态机的实现

    本文主要介绍了Go语言状态机的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • GO语言实现的端口扫描器分享

    GO语言实现的端口扫描器分享

    这篇文章主要介绍了GO语言实现的端口扫描器分享,本文直接给出实现代码,代码中包含大量注释,需要的朋友可以参考下
    2014-10-10
  • 举例详解Go语言中os库的常用函数用法

    举例详解Go语言中os库的常用函数用法

    这篇文章主要介绍了Go语言中os库的常用函数用法,os函数的使用是Go语言入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • Go语言中时间time相关处理方法详解

    Go语言中时间time相关处理方法详解

    在Go语言中,time 包是处理时间和日期的核心,它提供了丰富的函数和方法,用于显示、测量、计算、格式化、解析时间等,本文给大家详细介绍了Go时间time相关处理方法的相关资料,需要的朋友可以参考下
    2024-10-10
  • Go并发之RWMutex的源码解析详解

    Go并发之RWMutex的源码解析详解

    RWMutex是一个支持并行读串行写的读写锁。RWMutex具有写操作优先的特点,写操作发生时,仅允许正在执行的读操作执行,后续的读操作都会被阻塞。本文就来从源码解析一下RWMutex的使用
    2023-03-03
  • Go实现SSE消息推送的项目实战

    Go实现SSE消息推送的项目实战

    本文主要介绍了Go实现SSE消息推送的项目实战,结合JavaScript前端集成,构建实时数据推送系统,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2025-05-05

最新评论