生活知识集
第二套高阶模板 · 更大气的阅读体验

用bash写部署脚本:简单实用的自动化上线方法

发布时间:2025-12-11 16:06:18 阅读:346 次

为什么选择bash部署脚本

平时在自己搭服务器或者维护小项目时,总免不了要上传代码、重启服务、更新依赖。手动操作一两次还行,次数多了就容易出错,比如忘了重启进程,或者漏了数据库迁移。这时候写个bash部署脚本,点一下就能全自动上线,省心又靠谱。

一个简单的部署脚本长什么样

假设你有个Node.js项目放在GitHub上,每次更新后想自动拉取代码、安装依赖、重启服务。下面这个脚本就能搞定:

#!/bin/bash

# 项目目录
APP_DIR=/var/www/myapp

# 进入项目目录
cd $APP_DIR || exit 1

# 拉取最新代码
git pull origin main

# 安装依赖
npm install

# 重启服务(使用pm2)
pm2 restart myapp

# 输出完成提示
echo "部署完成:$(date)"

怎么让它跑起来

先把脚本保存成 deploy.sh,然后给它执行权限:

chmod +x deploy.sh

之后只要运行 ./deploy.sh,整个部署流程就自动走完了。你可以把它放在服务器上,每次改完代码手动执行,也可以结合GitHub Webhook实现自动触发。

加点判断让脚本更稳

如果网络不好,git pull 失败了,你还让它继续装依赖,那后面全白搭。加个简单的判断就能避免这个问题:

if git pull origin main; then
    echo "代码更新成功"
else
    echo "代码拉取失败"
    exit 1
fi

这样一旦某一步出问题,脚本就会停下来,不会继续往下执行。

传参数让脚本更灵活

有时候你想指定分支部署,比如测试环境上跑 develop 分支。可以改写脚本接收参数:

BRANCH=$1
if [ -z "$BRANCH" ]; then
    BRANCH="main"
fi

git pull origin $BRANCH

调用的时候就可以写成 ./deploy.sh develop,方便多了。

实际用起来的小建议

脚本写好后别忘了备份,别放在项目根目录里跟着代码一起提交。另外,敏感信息比如密码、密钥别直接写在脚本里,可以用环境变量读取。还有,每次执行后最好记下日志,方便以后查问题。

比如把输出重定向到日志文件:

./deploy.sh >> /var/log/deploy.log 2>&1

这样每次部署的时间和结果都清清楚楚。