后端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项目一键打包部署搞定,以前更新项目要先构建项目,登陆服务器停掉服务,上传可执行文件覆盖以前文件,命令开启项目,现在只需一步搞定

相关推荐
长栎37 分钟前
写 for 循环写了十年,你却从没用过迭代器模式最狠的那一面
后端
LiaCode41 分钟前
Redis 在生产项目的使用
前端·后端
用户559822481221 小时前
Docker Compose Down 导致容器数据误删——ext4 日志恢复全记录
后端
LiaCode1 小时前
一天学完 redis 的爽翻版核心知识总结
前端·后端
大刚测试开发实战1 小时前
如何内网穿透访问本地私有化部署的TestHub
前端·后端·github
xiaodaoluanzha1 小时前
迄今為止,最簡單的編程語言 Nolang
前端·后端
Csvn1 小时前
Docker 容器管理入门 — 从镜像到容器编排
后端
用户762352425911 小时前
ShardingJDBC
后端
行者全栈架构师1 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
Colin草率地做慢慢地改1 小时前
关于QuickStore这个项目的重构(2)- 数据库建表文件
后端·面试·架构