This commit is contained in:
Your Name
2026-04-16 22:14:45 +08:00
parent e64c23a021
commit 0295f7d06d
7 changed files with 46 additions and 38 deletions

View File

@@ -13,6 +13,7 @@
- API 域名:`api.domain.com` - API 域名:`api.domain.com`
- 后台域名:`admin.domain` - 后台域名:`admin.domain`
- 分支:默认 `main` - 分支:默认 `main`
- 脚本约定:所有一键 `.sh` 只做部署,不执行任何 `git` 命令
目标机器: 目标机器:
@@ -32,8 +33,6 @@
正式执行本文命令前,先把下面这些变量替换成你自己的真实值。 正式执行本文命令前,先把下面这些变量替换成你自己的真实值。
```text ```text
GIT_BRANCH=main
API_DOMAIN=api.domain.com API_DOMAIN=api.domain.com
ADMIN_DOMAIN=admin.domain ADMIN_DOMAIN=admin.domain
@@ -52,7 +51,7 @@ MAINLAND_CONTROLLER_IP=国内controller机器IP
NODE_VERSION=20 NODE_VERSION=20
``` ```
最少必须先替换这 6 个: 最少必须先替换这 5 个:
- `DB_PASSWORD` - `DB_PASSWORD`
- `SYNC_SHARED_TOKEN` - `SYNC_SHARED_TOKEN`
@@ -112,13 +111,12 @@ git pull --ff-only origin main
2. 编辑 `.conf` 2. 编辑 `.conf`
3. 执行对应的 `.sh` 3. 执行对应的 `.sh`
如果这台机器已经有仓库目录了,后面再执行脚本时,脚本内部会自动做 `git fetch / checkout / pull`,不需要你每次手动拉代码。
关键结论: 关键结论:
- 新机器第一次:必须先手动 `git clone` - 新机器第一次:必须先手动 `git clone`
- 后续执行脚本:不再负责 `clone` - 后续每次更新:先手动 `git pull`
- 脚本只负责“基于已存在仓库做部署或更新” - 后续执行脚本:不负责 `clone`,也不负责 `pull`
- 脚本只负责“基于当前仓库代码做部署或更新”
### 3.2 这些命令用哪个用户执行 ### 3.2 这些命令用哪个用户执行
@@ -245,14 +243,12 @@ Python 3.11.x
### 1. 国外主控机最短复制块 ### 1. 国外主控机最短复制块
先把下面 7 个值替换掉再执行: 先把下面 5 个值替换掉再执行:
```text ```text
GIT_BRANCH
API_DOMAIN API_DOMAIN
ADMIN_DOMAIN ADMIN_DOMAIN
DB_PASSWORD DB_PASSWORD
SYNC_SHARED_TOKEN
OVERSEAS_NODE_CODE OVERSEAS_NODE_CODE
NODE_VERSION NODE_VERSION
``` ```
@@ -267,6 +263,12 @@ cp /www/wwwroot/getDomain/domain-api/deploy/multi-region/install_overseas_quick.
bash /www/wwwroot/getDomain/domain-api/deploy/multi-region/install_overseas_quick.sh bash /www/wwwroot/getDomain/domain-api/deploy/multi-region/install_overseas_quick.sh
``` ```
注意:
- 这条脚本不会执行 `git fetch`
- 这条脚本不会执行 `git pull`
- 你要先自己把 `/www/wwwroot/getDomain` 更新到目标版本,再跑脚本
```bash ```bash
cd /www/wwwroot/getDomain cd /www/wwwroot/getDomain
git fetch --all git fetch --all
@@ -345,10 +347,9 @@ curl http://127.0.0.1:8100/api/v1/runtime/readiness
### 2. 国内 controller 最短复制块 ### 2. 国内 controller 最短复制块
先把下面 4 个值替换掉再执行: 先把下面 3 个值替换掉再执行:
```text ```text
GIT_BRANCH
DB_PASSWORD DB_PASSWORD
SYNC_SHARED_TOKEN SYNC_SHARED_TOKEN
MAINLAND_CONTROLLER_NODE_CODE MAINLAND_CONTROLLER_NODE_CODE
@@ -364,6 +365,12 @@ cp /www/wwwroot/getDomain/domain-api/deploy/multi-region/install_mainland_contro
bash /www/wwwroot/getDomain/domain-api/deploy/multi-region/install_mainland_controller_quick.sh bash /www/wwwroot/getDomain/domain-api/deploy/multi-region/install_mainland_controller_quick.sh
``` ```
注意:
- 这条脚本不会执行 `git fetch`
- 这条脚本不会执行 `git pull`
- 你要先自己把 `/www/wwwroot/getDomain` 更新到目标版本,再跑脚本
```bash ```bash
cd /www/wwwroot/getDomain cd /www/wwwroot/getDomain
git fetch --all git fetch --all
@@ -437,10 +444,9 @@ bash deploy/multi-region/check_mainland_controller.sh
### 3. 国内 worker 最短复制块 ### 3. 国内 worker 最短复制块
先把下面 5 个值替换掉再执行: 先把下面 4 个值替换掉再执行:
```text ```text
GIT_BRANCH
DB_PASSWORD DB_PASSWORD
SYNC_SHARED_TOKEN SYNC_SHARED_TOKEN
MAINLAND_WORKER_NODE_CODE MAINLAND_WORKER_NODE_CODE
@@ -457,6 +463,12 @@ cp /www/wwwroot/getDomain/domain-api/deploy/multi-region/install_mainland_worker
bash /www/wwwroot/getDomain/domain-api/deploy/multi-region/install_mainland_worker_quick.sh bash /www/wwwroot/getDomain/domain-api/deploy/multi-region/install_mainland_worker_quick.sh
``` ```
注意:
- 这条脚本不会执行 `git fetch`
- 这条脚本不会执行 `git pull`
- 你要先自己把 `/www/wwwroot/getDomain` 更新到目标版本,再跑脚本
```bash ```bash
cd /www/wwwroot/getDomain cd /www/wwwroot/getDomain
git fetch --all git fetch --all

View File

@@ -1,4 +1,3 @@
GIT_BRANCH="main"
DB_NAME="domain" DB_NAME="domain"
DB_USER="domainuser" DB_USER="domainuser"
DB_PASSWORD="CHANGE_ME_DB_PASSWORD" DB_PASSWORD="CHANGE_ME_DB_PASSWORD"

View File

@@ -14,7 +14,6 @@ fi
# shellcheck disable=SC1090 # shellcheck disable=SC1090
source "${CONFIG_FILE}" source "${CONFIG_FILE}"
: "${GIT_BRANCH:=main}"
: "${DB_NAME:=domain}" : "${DB_NAME:=domain}"
: "${DB_USER:=domainuser}" : "${DB_USER:=domainuser}"
: "${DB_PASSWORD:=CHANGE_ME_DB_PASSWORD}" : "${DB_PASSWORD:=CHANGE_ME_DB_PASSWORD}"
@@ -39,10 +38,10 @@ if [[ ! -d "${REPO_DIR}/.git" ]]; then
echo "全新机器首次部署,必须先手动执行 git clone把仓库拉到 /www/wwwroot/getDomain" echo "全新机器首次部署,必须先手动执行 git clone把仓库拉到 /www/wwwroot/getDomain"
exit 1 exit 1
fi fi
cd "${REPO_DIR}"
git fetch --all echo "已检测到仓库目录:${REPO_DIR}"
git checkout "${GIT_BRANCH}" echo "当前脚本不会执行任何 Git 命令。"
git pull --ff-only origin "${GIT_BRANCH}" echo "如需更新代码,请先手动完成 git pull再重新执行本脚本。"
mkdir -p "${BASE_DIR}" mkdir -p "${BASE_DIR}"
ln -sfn "${REPO_DIR}/domain-api" "${DOMAIN_API_DIR}" ln -sfn "${REPO_DIR}/domain-api" "${DOMAIN_API_DIR}"

View File

@@ -1,4 +1,3 @@
GIT_BRANCH="main"
DB_NAME="domain" DB_NAME="domain"
DB_USER="domainuser" DB_USER="domainuser"
DB_PASSWORD="CHANGE_ME_DB_PASSWORD" DB_PASSWORD="CHANGE_ME_DB_PASSWORD"

View File

@@ -14,7 +14,6 @@ fi
# shellcheck disable=SC1090 # shellcheck disable=SC1090
source "${CONFIG_FILE}" source "${CONFIG_FILE}"
: "${GIT_BRANCH:=main}"
: "${DB_NAME:=domain}" : "${DB_NAME:=domain}"
: "${DB_USER:=domainuser}" : "${DB_USER:=domainuser}"
: "${DB_PASSWORD:=CHANGE_ME_DB_PASSWORD}" : "${DB_PASSWORD:=CHANGE_ME_DB_PASSWORD}"
@@ -40,10 +39,10 @@ if [[ ! -d "${REPO_DIR}/.git" ]]; then
echo "全新机器首次部署,必须先手动执行 git clone把仓库拉到 /www/wwwroot/getDomain" echo "全新机器首次部署,必须先手动执行 git clone把仓库拉到 /www/wwwroot/getDomain"
exit 1 exit 1
fi fi
cd "${REPO_DIR}"
git fetch --all echo "已检测到仓库目录:${REPO_DIR}"
git checkout "${GIT_BRANCH}" echo "当前脚本不会执行任何 Git 命令。"
git pull --ff-only origin "${GIT_BRANCH}" echo "如需更新代码,请先手动完成 git pull再重新执行本脚本。"
mkdir -p "${BASE_DIR}" mkdir -p "${BASE_DIR}"
ln -sfn "${REPO_DIR}/domain-api" "${DOMAIN_API_DIR}" ln -sfn "${REPO_DIR}/domain-api" "${DOMAIN_API_DIR}"

View File

@@ -1,4 +1,3 @@
GIT_BRANCH="main"
API_DOMAIN="api.domain.com" API_DOMAIN="api.domain.com"
ADMIN_DOMAIN="admin.domain" ADMIN_DOMAIN="admin.domain"
DB_NAME="domain" DB_NAME="domain"

View File

@@ -1,6 +1,11 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
if [[ "$(id -u)" -ne 0 ]]; then
echo "请使用 root 执行此脚本"
exit 1
fi
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CONFIG_FILE="${SCRIPT_DIR}/install_overseas_quick.conf" CONFIG_FILE="${SCRIPT_DIR}/install_overseas_quick.conf"
CONFIG_EXAMPLE="${SCRIPT_DIR}/install_overseas_quick.conf.example" CONFIG_EXAMPLE="${SCRIPT_DIR}/install_overseas_quick.conf.example"
@@ -14,7 +19,6 @@ fi
# shellcheck disable=SC1090 # shellcheck disable=SC1090
source "${CONFIG_FILE}" source "${CONFIG_FILE}"
: "${GIT_BRANCH:=main}"
: "${API_DOMAIN:=api.domain.com}" : "${API_DOMAIN:=api.domain.com}"
: "${ADMIN_DOMAIN:=admin.domain}" : "${ADMIN_DOMAIN:=admin.domain}"
: "${DB_NAME:=domain}" : "${DB_NAME:=domain}"
@@ -41,10 +45,10 @@ if [[ ! -d "${REPO_DIR}/.git" ]]; then
echo "全新机器首次部署,必须先手动执行 git clone把仓库拉到 /www/wwwroot/getDomain" echo "全新机器首次部署,必须先手动执行 git clone把仓库拉到 /www/wwwroot/getDomain"
exit 1 exit 1
fi fi
cd "${REPO_DIR}"
git fetch --all echo "已检测到仓库目录:${REPO_DIR}"
git checkout "${GIT_BRANCH}" echo "当前脚本不会执行任何 Git 命令。"
git pull --ff-only origin "${GIT_BRANCH}" echo "如需更新代码,请先手动切到仓库属主完成 git pull再重新执行本脚本。"
mkdir -p "${BASE_DIR}" mkdir -p "${BASE_DIR}"
ln -sfn "${REPO_DIR}/domain-api" "${DOMAIN_API_DIR}" ln -sfn "${REPO_DIR}/domain-api" "${DOMAIN_API_DIR}"
@@ -78,16 +82,13 @@ VITE_API_BASE_URL=https://${API_DOMAIN}/api/v1
EOF EOF
export NVM_DIR="${HOME}/.nvm" export NVM_DIR="${HOME}/.nvm"
if [[ -s "${NVM_DIR}/nvm.sh" ]]; then if [[ ! -s "${NVM_DIR}/nvm.sh" ]]; then
# shellcheck disable=SC1090 echo "未找到 nvm请先为当前执行用户安装 nvm"
source "${NVM_DIR}/nvm.sh"
else
echo "未找到 nvm请先安装 nvm"
exit 1 exit 1
fi fi
source "${NVM_DIR}/nvm.sh"
nvm install "${NODE_VERSION}" nvm install "${NODE_VERSION}"
nvm use "${NODE_VERSION}" nvm use "${NODE_VERSION}"
cd "${DOMAIN_WEB_DIR}" cd "${DOMAIN_WEB_DIR}"
npm install npm install
npm run build npm run build