docs(deployment): 更新部署文档并添加自动化部署脚本

- 更新了 DEPLOYMENT.md 文档,增加了更多部署细节和说明
- 添加了 Linux 和 Windows 平台的自动化部署脚本
- 更新了 README.md,增加了部署相关说明
- 调整了 .env 文件配置,以适应新的部署流程
- 移除了部分不必要的代码和配置
This commit is contained in:
2025-09-10 14:16:27 +08:00
parent 18fe719f94
commit b2d940e014
114 changed files with 6990 additions and 247 deletions

104
scripts/README.md Normal file
View File

@@ -0,0 +1,104 @@
# 结伴客部署脚本
## 概述
本目录包含用于将结伴客项目部署到远程 CentOS 服务器的脚本。
## 脚本说明
### deploy.sh (Bash 脚本 - 适用于 Linux/Mac)
使用 rsync 将项目文件同步到远程服务器。
#### 使用方法
```bash
# 给脚本添加执行权限
chmod +x deploy.sh
# 部署所有模块
./deploy.sh all
# 部署后端服务
./deploy.sh backend
# 部署后台管理系统
./deploy.sh admin
# 部署官方网站
./deploy.sh website
```
### deploy.ps1 (PowerShell 脚本 - 适用于 Windows)
Windows 系统下的部署脚本,同样使用 rsync 进行文件同步。
#### 使用方法
```powershell
# 部署所有模块
.\deploy.ps1 all
# 部署后端服务
.\deploy.ps1 backend
# 部署后台管理系统
.\deploy.ps1 admin
# 部署官方网站
.\deploy.ps1 website
```
## 部署要求
1. **rsync** 必须安装在本地机器上
- Linux/Mac: 通常预装,如果没有可以使用包管理器安装
- Windows: 需要安装 rsync for Windows例如通过 WSL 或 Git for Windows
2. **SSH 访问权限** 到远程服务器 (1.13.156.49)
- 确保本地 SSH 公钥已添加到远程服务器的 `~/.ssh/authorized_keys` 文件中
Ai哦推荐考拉¥741515
## 部署目录结构
远程服务器 CentOS (IP: 1.13.156.49) 上各项目的部署目录如下:
```
/
├── data/
│ ├── nodejs/
│ │ └── jiebanke/ # 后端服务部署目录
│ ├── vue/
│ │ └── jiebanke/ # 后台管理系统部署目录
│ └── website/
│ └── jiebanke/ # 官方网站部署目录
```
## 工作流程
1. 使用 rsync 同步文件到远程服务器
2. 排除 node_modules、.git 等不需要的文件和目录
## 注意事项
- 部署脚本只进行文件同步,不执行构建操作
- 微信小程序不需要部署到远程服务器,需使用微信开发者工具进行构建和上传
- 部署过程中会自动排除 node_modules、.git 等目录
- 脚本使用 `--delete` 参数,会删除远程服务器上已不存在于本地的文件
## 故障排除
### rsync 命令未找到
确保已安装 rsync
- Ubuntu/Debian: `sudo apt-get install rsync`
- CentOS/RHEL: `sudo yum install rsync`
- macOS: 通常预装
- Windows: 安装 Git for Windows 或 WSL
### SSH 连接失败
确保:
1. SSH 公钥已添加到远程服务器
2. 可以手动通过 `ssh root@1.13.156.49` 连接服务器
### 权限问题
确保运行脚本的用户有足够权限执行 rsync 和访问项目文件。

111
scripts/deploy.ps1 Normal file
View File

@@ -0,0 +1,111 @@
# 结伴客项目部署脚本 (PowerShell 版本)
# 用于将项目部署到远程 CentOS 服务器
param(
[Parameter(Mandatory=$false)]
[string]$Target = ""
)
# 配置信息
$REMOTE_HOST = "1.13.156.49"
$REMOTE_USER = "root"
$REMOTE_PASSWORD = "Aiotjkl$741515"
$BACKEND_REMOTE_PATH = "/data/nodejs/jiebanke"
$ADMIN_SYSTEM_REMOTE_PATH = "/data/vue/jiebanke"
$WEBSITE_REMOTE_PATH = "/data/website/jiebanke"
# 颜色输出函数
function Write-ColorOutput($ForegroundColor) {
# Save the current color
$fc = $host.UI.RawUI.ForegroundColor
$host.UI.RawUI.ForegroundColor = $ForegroundColor
# Output the content
if ($args) {
Write-Output $args
}
else {
$input | Write-Output
}
# Restore the original color
$host.UI.RawUI.ForegroundColor = $fc
}
Write-ColorOutput Green "========== 结伴客项目部署脚本 =========="
# 检查是否提供了部署目标参数
if ($Target -eq "") {
Write-ColorOutput Yellow "使用方法:"
Write-Output " .\deploy.ps1 all - 部署所有模块"
Write-Output " .\deploy.ps1 backend - 部署后端服务"
Write-Output " .\deploy.ps1 admin - 部署后台管理系统"
Write-Output " .\deploy.ps1 website - 部署官方网站"
exit 1
}
# 部署后端服务
function Deploy-Backend {
Write-ColorOutput Green "正在部署后端服务到 $REMOTE_HOST:$BACKEND_REMOTE_PATH ..."
# 同步文件到远程服务器
Write-ColorOutput Green "正在同步文件到远程服务器..."
$rsyncArgs = "-avz --delete --exclude node_modules --exclude .git --exclude logs ../backend/ $REMOTE_USER@$REMOTE_HOST`:$BACKEND_REMOTE_PATH/"
Start-Process -FilePath "rsync" -ArgumentList $rsyncArgs -NoNewWindow -Wait
Write-ColorOutput Green "后端服务部署完成"
}
# 部署后台管理系统
function Deploy-AdminSystem {
Write-ColorOutput Green "正在部署后台管理系统到 $REMOTE_HOST:$ADMIN_SYSTEM_REMOTE_PATH ..."
# 同步文件到远程服务器
Write-ColorOutput Green "正在同步文件到远程服务器..."
$rsyncArgs = "-avz --delete --exclude node_modules --exclude .git --exclude dist ../admin-system/ $REMOTE_USER@$REMOTE_HOST`:$ADMIN_SYSTEM_REMOTE_PATH/"
Start-Process -FilePath "rsync" -ArgumentList $rsyncArgs -NoNewWindow -Wait
Write-ColorOutput Green "后台管理系统部署完成"
}
# 部署官方网站
function Deploy-Website {
Write-ColorOutput Green "正在部署官方网站到 $REMOTE_HOST:$WEBSITE_REMOTE_PATH ..."
# 同步文件到远程服务器
Write-ColorOutput Green "正在同步文件到远程服务器..."
$rsyncArgs = "-avz --delete --exclude node_modules --exclude .git ../website/ $REMOTE_USER@$REMOTE_HOST`:$WEBSITE_REMOTE_PATH/"
Start-Process -FilePath "rsync" -ArgumentList $rsyncArgs -NoNewWindow -Wait
Write-ColorOutput Green "官方网站部署完成"
}
# 部署所有模块
function Deploy-All {
Write-ColorOutput Green "开始部署所有模块..."
Deploy-Backend
Deploy-AdminSystem
Deploy-Website
Write-ColorOutput Green "所有模块部署完成"
}
# 根据参数执行相应操作
switch ($Target) {
"backend" {
Deploy-Backend
}
"admin" {
Deploy-AdminSystem
}
"website" {
Deploy-Website
}
"all" {
Deploy-All
}
default {
Write-ColorOutput Red "未知参数: $Target"
Write-ColorOutput Yellow "请使用: all, backend, admin, website"
exit 1
}
}
Write-ColorOutput Green "========== 部署完成 =========="

127
scripts/deploy.sh Normal file
View File

@@ -0,0 +1,127 @@
#!/bin/bash
# 结伴客项目部署脚本
# 用于将项目部署到远程 CentOS 服务器
set -e # 遇到错误时退出
# 配置信息
REMOTE_HOST="1.13.156.49"
REMOTE_USER="root"
REMOTE_PASSWORD="Aiotjkl$743838"
BACKEND_REMOTE_PATH="/data/nodejs/jiebanke"
ADMIN_SYSTEM_REMOTE_PATH="/data/vue/jiebanke"
WEBSITE_REMOTE_PATH="/data/website/jiebanke"
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${GREEN}========== 结伴客项目部署脚本 ==========${NC}"
# 检查是否提供了部署目标参数
if [ $# -eq 0 ]; then
echo -e "${YELLOW}使用方法:${NC}"
echo " ./deploy.sh all - 部署所有模块"
echo " ./deploy.sh backend - 部署后端服务"
echo " ./deploy.sh admin - 部署后台管理系统"
echo " ./deploy.sh website - 部署官方网站"
exit 1
fi
# 检查rsync是否安装
check_rsync() {
if ! command -v rsync &> /dev/null; then
echo -e "${RED}错误: 未找到 rsync 命令,请先安装 rsync${NC}"
exit 1
fi
}
# 部署后端服务
deploy_backend() {
echo -e "${BLUE}正在部署后端服务到 $REMOTE_HOST:$BACKEND_REMOTE_PATH ...${NC}"
# 检查rsync
check_rsync
# 同步文件到远程服务器
echo -e "${BLUE}正在同步文件到远程服务器...${NC}"
rsync -avz --delete \
--exclude node_modules \
--exclude .git \
--exclude logs \
../backend/ $REMOTE_USER@$REMOTE_HOST:$BACKEND_REMOTE_PATH/
echo -e "${GREEN}后端服务部署完成${NC}"
}
# 部署后台管理系统
deploy_admin_system() {
echo -e "${BLUE}正在部署后台管理系统到 $REMOTE_HOST:$ADMIN_SYSTEM_REMOTE_PATH ...${NC}"
# 检查rsync
check_rsync
# 同步文件到远程服务器
echo -e "${BLUE}正在同步文件到远程服务器...${NC}"
rsync -avz --delete \
--exclude node_modules \
--exclude .git \
--exclude dist \
../admin-system/ $REMOTE_USER@$REMOTE_HOST:$ADMIN_SYSTEM_REMOTE_PATH/
echo -e "${GREEN}后台管理系统部署完成${NC}"
}
# 部署官方网站
deploy_website() {
echo -e "${BLUE}正在部署官方网站到 $REMOTE_HOST:$WEBSITE_REMOTE_PATH ...${NC}"
# 检查rsync
check_rsync
# 同步文件到远程服务器
echo -e "${BLUE}正在同步文件到远程服务器...${NC}"
rsync -avz --delete \
--exclude node_modules \
--exclude .git \
../website/ $REMOTE_USER@$REMOTE_HOST:$WEBSITE_REMOTE_PATH/
echo -e "${GREEN}官方网站部署完成${NC}"
}
# 部署所有模块
deploy_all() {
echo -e "${BLUE}开始部署所有模块...${NC}"
deploy_backend
deploy_admin_system
deploy_website
echo -e "${GREEN}所有模块部署完成${NC}"
}
# 根据参数执行相应操作
case $1 in
"backend")
deploy_backend
;;
"admin")
deploy_admin_system
;;
"website")
deploy_website
;;
"all")
deploy_all
;;
*)
echo -e "${RED}未知参数: $1${NC}"
echo -e "${YELLOW}请使用: all, backend, admin, website${NC}"
exit 1
;;
esac
echo -e "${GREEN}========== 部署完成 ==========${NC}"

View File

@@ -1,21 +1,20 @@
{
"name": "jiebanke-api-tests",
"name": "jiebanke-scripts",
"version": "1.0.0",
"description": "结伴客系统API测试脚本",
"main": "test-api.js",
"description": "结伴客项目部署和管理脚本",
"main": "index.js",
"scripts": {
"test": "node test-api.js",
"test:health": "node -e \"require('./test-api.js').api.get('/health').then(r => console.log('健康检查:', r.data)).catch(console.error)\""
"test": "echo \"Error: no test specified\" && exit 1",
"deploy": "echo \"请在项目根目录的 scripts 文件夹中运行 ./deploy.sh 或 .\\deploy.ps1\"",
"deploy:all": "echo \"请在项目根目录的 scripts 文件夹中运行 ./deploy.sh all 或 .\\deploy.ps1 all\"",
"deploy:backend": "echo \"请在项目根目录的 scripts 文件夹中运行 ./deploy.sh backend\"",
"deploy:admin": "echo \"请在项目根目录的 scripts 文件夹中运行 ./deploy.sh admin\"",
"deploy:website": "echo \"请在项目根目录的 scripts 文件夹中运行 ./deploy.sh website\""
},
"dependencies": {
"axios": "^1.6.0"
},
"devDependencies": {},
"keywords": [
"api-testing",
"jiebanke",
"travel",
"animal-adoption"
"deployment",
"scripts",
"jiebanke"
],
"author": "结伴客开发团队",
"license": "MIT"