diff --git a/docs/production-deployment.md b/docs/production-deployment.md index ca7ae86..67af10c 100644 --- a/docs/production-deployment.md +++ b/docs/production-deployment.md @@ -35,7 +35,7 @@ PROD_ADMIN_USERNAME=prod_admin PROD_ADMIN_PASSWORD='change-me' ``` -脚本会安装 Node.js、Go、PostgreSQL、Redis、MinIO、Nginx,创建 systemd 服务,执行 Prisma migrate,构建前端/API/Gateway,并创建平台管理员。 +脚本会安装 Node.js、Go、PostgreSQL、Redis、MinIO、Nginx,创建 systemd 服务,执行 Prisma migrate,构建前端/API/Gateway,并创建平台管理员。Go 和 MinIO 下载会按服务器架构自动选择 `linux-amd64` 或 `linux-arm64`。 ## 后续发布 diff --git a/tools/deploy/production-bootstrap.sh b/tools/deploy/production-bootstrap.sh index 3db31d4..d4b675e 100644 --- a/tools/deploy/production-bootstrap.sh +++ b/tools/deploy/production-bootstrap.sh @@ -60,19 +60,31 @@ install_packages() { install_go() { local version="${GO_VERSION:-1.26.0}" + local arch + case "$(uname -m)" in + x86_64|amd64) arch="amd64" ;; + aarch64|arm64) arch="arm64" ;; + *) echo "Unsupported Go architecture: $(uname -m)" >&2; exit 1 ;; + esac if command -v go >/dev/null 2>&1 && [[ "$(go version | awk '{print $3}' | sed 's/go//')" == "$version" ]]; then return fi - log "Installing Go ${version}" - curl -fL "https://go.dev/dl/go${version}.linux-amd64.tar.gz" -o /tmp/go.tar.gz + log "Installing Go ${version} for linux-${arch}" + curl -fL "https://go.dev/dl/go${version}.linux-${arch}.tar.gz" -o /tmp/go.tar.gz rm -rf /usr/local/go tar -C /usr/local -xzf /tmp/go.tar.gz ln -sf /usr/local/go/bin/go /usr/local/bin/go } install_minio() { - log "Installing MinIO" - curl -fL https://dl.min.io/server/minio/release/linux-amd64/minio -o /usr/local/bin/minio + local arch + case "$(uname -m)" in + x86_64|amd64) arch="amd64" ;; + aarch64|arm64) arch="arm64" ;; + *) echo "Unsupported MinIO architecture: $(uname -m)" >&2; exit 1 ;; + esac + log "Installing MinIO for linux-${arch}" + curl -fL "https://dl.min.io/server/minio/release/linux-${arch}/minio" -o /usr/local/bin/minio chmod +x /usr/local/bin/minio useradd --system --home /var/lib/minio --shell /usr/sbin/nologin minio 2>/dev/null || true mkdir -p /var/lib/minio