本地构建+云服务器部署数字花园
为什么又多一个部署方案?
当我心安理得的全部使用云服务器构建(build)+部署的时候,随着我逐渐将笔记整合进数字花园,遇到一个很大的问题。
当笔记数量多了以后,构建(build)的时候消耗的内存会逐渐增加,但是我的云服务器内存只有2g,当内存满了以后就会卡死不再构建(build),所以我不得不把构建的步骤放到本地来执行,然后将构建好的网页源代码上传服务器部署。
现在的部署流程:build和
obsidian编辑笔记,digital garden插件上传笔记到github
执行脚本一键部署(前提是按照之前的流程先完成了云服务器的部署操作)
部署成功,网页可以访问
一键部署脚本(服务器端执行)
我写了一个自动化脚本用于帮助我一键实现构建+远程部署
下面这俩地方记得修改为自己的服务器信息:
<ssh用户名>@<服务器ip地址>以及"这里写你的ssh连接密码"
#!/bin/bash
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
# 打印带颜色的信息
print_info() {
echo -e "${GREEN}[INFO] $1${NC}"
}
print_error() {
echo -e "${RED}[ERROR] $1${NC}"
}
# 检查命令是否执行成功
check_result() {
if [ $? -eq 0 ]; then
print_info "$1 成功"
else
print_error "$1 失败"
exit 1
fi
}
# 1. 安装必要工具
print_info "安装必要工具..."
sudo apt install -y sshpass rsync
check_result "安装 sshpass 和 rsync"
# 2. 检查并进入项目目录
if [ ! -d "digitalgarden" ]; then
print_info "克隆代码仓库..."
git clone https://github.com/your-repo/digitalgarden.git
check_result "克隆代码仓库"
else
print_info "项目目录已存在,直接使用..."
fi
cd digitalgarden
check_result "进入项目目录"
# 3. 更新系统并安装依赖
print_info "更新系统并安装依赖..."
sudo apt update
check_result "系统更新"
sudo apt install -y nodejs npm
check_result "安装 nodejs 和 npm"
# 4. 配置 npm
print_info "配置 npm..."
npm config set registry https://registry.npmmirror.com
npm cache clean --force
# 5. 拉取最新代码
print_info "拉取最新代码..."
git pull
check_result "拉取代码"
# 6. 安装依赖
print_info "安装项目依赖..."
npm install
npm install -g npm
check_result "安装依赖"
# 7. 构建项目
print_info "构建项目..."
npm run build
check_result "构建项目"
# 8. 上传到服务器
print_info "上传到服务器..."
sshpass -p "这里写你的ssh连接密码" rsync -avz --delete dist/ <ssh用户名>@<服务器ip地址>:~/digitalgarden/dist/
check_result "上传文件"
# 9. 重启服务器上的服务
print_info "重启服务..."
sshpass -p "这里写你的ssh连接密码" ssh <ssh用户名>@<服务器ip地址> "cd ~/digitalgarden && pm2 restart digitalgarden || pm2 start http-server -- dist -p 8080 --name digitalgarden"
check_result "重启服务"
print_info "部署完成!"