Files
Kanban/deploy/server-init.sh
chenshoulin f9bf1b3eb3
CI / verify (push) Canceled after 1m37s
CI / 部署到服务器 (push) Skipped
ci: 部署到腾讯云服务器并启用 Gitea Actions 自动发布
- ci.yml 增加 deploy job:verify 全绿后 rsync 到 /opt/kanban/dist 并做线上自检
- runner 与站点同机(host 模式),部署直接写本地目录,不依赖 SSH 密钥与 Secrets
- 站点目录是容器 bind mount,必须原地同步;manual deploy.sh 同步改为 rsync 语义
- 新增 deploy/:容器版 nginx 配置、runner 配置与 systemd 单元、服务器初始化脚本
- README 更新实际部署架构(1Panel + Nginx Proxy Manager 反代)与 runner 说明
2026-10-19 20:59:38 +08:00

74 lines
2.3 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# 目标服务器初始化(只需执行一次)
#
# 安装 Nginx、建站点目录、写入 deploy/nginx.conf 对应的站点配置并 reload。
# 不会动 Nginx 里已有的其它站点。
#
# 用法(本机执行):
# scp deploy/server-init.sh deploy/nginx.conf root@<服务器IP>:/tmp/kanban-deploy/
# ssh root@<服务器IP> 'bash /tmp/kanban-deploy/server-init.sh kanban.example.com'
#
# 参数:
# $1 域名或 IP,写进 server_name;省略则沿用 nginx.conf 里的值
# 环境变量:
# WEB_ROOT 站点目录,默认 /var/www/kanban(要和 CI 里的 DEPLOY_PATH 一致)
set -euo pipefail
DOMAIN="${1:-}"
WEB_ROOT="${WEB_ROOT:-/var/www/kanban}"
CONF_DEST=/etc/nginx/conf.d/kanban.conf
CONF_SRC="$(cd "$(dirname "$0")" && pwd)/nginx.conf"
if [ "$(id -u)" -ne 0 ]; then
echo "请用 root 执行(sudo bash $0 ${DOMAIN:-})" >&2
exit 1
fi
if [ ! -f "$CONF_SRC" ]; then
echo "找不到 $CONF_SRC —— server-init.sh 和 nginx.conf 需要放在同一目录" >&2
exit 1
fi
echo "==> 安装 Nginx"
if command -v nginx >/dev/null 2>&1; then
echo " 已安装:$(nginx -v 2>&1)"
elif command -v apt-get >/dev/null 2>&1; then
apt-get update -qq
apt-get install -y nginx
elif command -v dnf >/dev/null 2>&1; then
dnf install -y nginx
else
yum install -y nginx
fi
echo "==> 创建站点目录 $WEB_ROOT"
mkdir -p "$WEB_ROOT"
echo "==> 写入站点配置 $CONF_DEST"
if [ -n "$DOMAIN" ]; then
# 只替换 server_name 那一行,其余配置保持与仓库一致
sed -E "s/^([[:space:]]*)server_name[^;]*;/\1server_name ${DOMAIN};/" "$CONF_SRC" > "$CONF_DEST"
else
cp "$CONF_SRC" "$CONF_DEST"
fi
nginx -t
systemctl enable nginx >/dev/null 2>&1 || true
systemctl reload nginx 2>/dev/null || systemctl restart nginx
if systemctl is-active --quiet firewalld 2>/dev/null; then
echo "==> firewalld 放行 80/443"
firewall-cmd --permanent --add-service=http >/dev/null
firewall-cmd --permanent --add-service=https >/dev/null
firewall-cmd --reload >/dev/null
fi
echo
echo "完成。站点根目录:$WEB_ROOT"
echo "server_name:${DOMAIN:-沿用 nginx.conf 默认值}"
echo
echo "还需要做两件事:"
echo " 1. 腾讯云控制台 → 防火墙/安全组,放行 80(上 HTTPS 后再放行 443)"
echo " 2. 把 CI 部署用的公钥追加到 ~/.ssh/authorized_keys"