Skip to content

Commit e438931

Browse files
committed
deploy
1 parent 3ce407e commit e438931

File tree

2 files changed

+97
-4
lines changed

2 files changed

+97
-4
lines changed

install.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#
66
# 该脚本会自动下载、配置并以 systemd 服务的形式运行机器人。
77
# 运行方式:
8-
# curl -sSL https://raw.githubusercontent.com/ooopus/telegramBotEmbed/refs/heads/main/install.sh | sudo bash
8+
# curl -sSL https://raw.githubusercontent.com/ooopus/telembed/refs/heads/main/install.sh | sudo bash
99
# ==============================================================================
1010

1111
set -e # 如果任何命令失败,则立即退出
@@ -18,15 +18,15 @@ SERVICE_GROUP="telembed"
1818
# 工作目录 (用于存放数据和缓存)
1919
WORK_DIR="/opt/telembed"
2020
# 配置目录 (根据 service 文件中的 XDG_CONFIG_HOME=/opt 和代码逻辑)
21-
CONFIG_DIR_BASE="/opt/telegramBotEmbed"
21+
CONFIG_DIR_BASE="/opt/telembed"
2222

2323
# 日志目录
2424
LOG_DIR="/var/log/${SERVICE_NAME}"
2525

2626
# 二进制文件下载链接
27-
BINARY_URL="https://github.com/ooopus/telegramBotEmbed/releases/latest/download/telembed-x86_64-unknown-linux-gnu"
27+
BINARY_URL="https://github.com/ooopus/telembed/releases/latest/download/telembed-x86_64-unknown-linux-gnu"
2828
# systemd 服务文件下载链接
29-
SERVICE_URL="https://raw.githubusercontent.com/ooopus/telegramBotEmbed/refs/heads/main/telembed.service"
29+
SERVICE_URL="https://raw.githubusercontent.com/ooopus/telembed/refs/heads/main/telembed.service"
3030

3131

3232
# --- 脚本开始 ---

update.sh

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
#!/bin/bash
2+
3+
# ==============================================================================
4+
# Telegram QA Bot (telembed) 自动更新脚本
5+
#
6+
# 该脚本会自动下载最新版本的机器人程序和服务文件,并重启服务。
7+
# 它不会触碰您的数据和配置文件。
8+
# 运行方式:
9+
# curl -sSL https://raw.githubusercontent.com/ooopus/telembed/refs/heads/main/update.sh | sudo bash
10+
# 或者直接: sudo ./update.sh
11+
# ==============================================================================
12+
13+
set -e # 如果任何命令失败,则立即退出
14+
15+
# --- 配置变量 (与 install.sh 保持一致) ---
16+
SERVICE_NAME="telembed"
17+
SERVICE_USER="telembed"
18+
SERVICE_GROUP="telembed"
19+
WORK_DIR="/opt/telembed"
20+
CONFIG_DIR_BASE="/opt/telembed"
21+
LOG_DIR="/var/log/${SERVICE_NAME}"
22+
23+
# 二进制文件下载链接
24+
BINARY_URL="https://github.com/ooopus/telembed/releases/latest/download/telembed-x86_64-unknown-linux-gnu"
25+
# systemd 服务文件下载链接
26+
SERVICE_URL="https://raw.githubusercontent.com/ooopus/telembed/refs/heads/main/telembed.service"
27+
28+
29+
# --- 脚本开始 ---
30+
echo "🚀 开始更新 Telegram QA Bot (${SERVICE_NAME})..."
31+
32+
# 1. 检查是否以 root 权限运行
33+
if [ "$(id -u)" -ne 0 ]; then
34+
echo "❌ 请以 root 权限运行此脚本 (例如: sudo ./update.sh)" >&2
35+
exit 1
36+
fi
37+
38+
echo "✅ Root 权限检查通过。"
39+
40+
# 2. 停止当前正在运行的服务
41+
echo "🔄 正在停止 ${SERVICE_NAME} 服务..."
42+
if systemctl is-active --quiet "${SERVICE_NAME}.service"; then
43+
systemctl stop "${SERVICE_NAME}.service"
44+
echo " - 服务已停止。"
45+
else
46+
echo " - 服务未在运行,无需停止。"
47+
fi
48+
49+
# 3. 下载并替换二进制文件
50+
echo "🔽 正在从 GitHub 下载最新的二进制文件..."
51+
# 使用 mktemp 创建一个临时文件来安全地下载
52+
TMP_BINARY=$(mktemp)
53+
curl -L --fail "${BINARY_URL}" -o "${TMP_BINARY}"
54+
echo " - 下载完成,正在替换旧文件..."
55+
mv "${TMP_BINARY}" "/usr/local/bin/${SERVICE_NAME}"
56+
chmod +x "/usr/local/bin/${SERVICE_NAME}"
57+
echo " - 二进制文件已更新到 /usr/local/bin/${SERVICE_NAME}"
58+
59+
# 4. 下载并替换 systemd 服务文件
60+
echo "⚙️ 正在下载最新的 systemd 服务文件..."
61+
# 这很重要,因为服务依赖项或参数可能会改变
62+
curl -L --fail "${SERVICE_URL}" -o "/etc/systemd/system/${SERVICE_NAME}.service"
63+
echo " - 服务文件已更新到 /etc/systemd/system/${SERVICE_NAME}.service"
64+
65+
# 5. 确保文件和目录权限仍然正确
66+
# 这可以防止因某些意外操作导致权限错误
67+
echo "🔐 正在验证并设置权限..."
68+
chown -R "${SERVICE_USER}:${SERVICE_GROUP}" "${WORK_DIR}"
69+
chown -R "${SERVICE_USER}:${SERVICE_GROUP}" "${CONFIG_DIR_BASE}"
70+
chown -R "${SERVICE_USER}:${SERVICE_GROUP}" "${LOG_DIR}"
71+
chmod -R 750 "${WORK_DIR}"
72+
chmod -R 750 "${CONFIG_DIR_BASE}"
73+
chmod -R 750 "${LOG_DIR}"
74+
echo " - 权限验证完成。"
75+
76+
# 6. 重载 systemd 并重启服务
77+
echo "🚀 正在重启服务以应用更新..."
78+
systemctl daemon-reload
79+
systemctl restart "${SERVICE_NAME}.service"
80+
81+
echo ""
82+
echo "✅ 更新完成!"
83+
echo ""
84+
echo "机器人服务已使用最新版本重新启动。"
85+
echo "您的配置文件和知识库数据 (${WORK_DIR}/data/QA.json) 都已保留。"
86+
echo ""
87+
echo "您可以使用以下命令检查服务状态:"
88+
echo " sudo systemctl status ${SERVICE_NAME}"
89+
echo ""
90+
echo "查看实时日志:"
91+
echo " sudo journalctl -u ${SERVICE_NAME} -f"
92+
echo ""
93+
echo "💡 建议: 访问项目的 GitHub Releases 页面,查看更新日志以了解新功能或重大变更。"

0 commit comments

Comments
 (0)