From 63c8ef4f17675b4c08ee4894d8b033965270b2b7 Mon Sep 17 00:00:00 2001 From: 6vision Date: Thu, 26 Sep 2024 00:34:52 +0800 Subject: [PATCH 1/4] feat: install.sh and run.sh --- README.md | 11 +++- run.sh | 179 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 188 insertions(+), 2 deletions(-) create mode 100644 run.sh diff --git a/README.md b/README.md index f2ca5db09..befed02b5 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,9 @@ DEMO视频:https://cdn.link-ai.tech/doc/cow_demo.mp4 # 🏷 更新日志 ->**2024.08.02:** [1.7.0版本](https://github.com/zhayujie/chatgpt-on-wechat/releases/tag/1.6.9) 新增 讯飞4.0 模型、知识库引用来源展示、相关插件优化 +>**2024.08.29:** [1.7.2版本](https://github.com/zhayujie/chatgpt-on-wechat/releases/tag/1.7.2) 和 [1.7.1版本](https://github.com/zhayujie/chatgpt-on-wechat/releases/tag/1.7.1) 文心,讯飞等模型优化、o1 模型、快速安装和管理脚本 + +>**2024.08.02:** [1.7.0版本](https://github.com/zhayujie/chatgpt-on-wechat/releases/tag/1.7.0) 新增 讯飞4.0 模型、知识库引用来源展示、相关插件优化 >**2024.07.19:** [1.6.9版本](https://github.com/zhayujie/chatgpt-on-wechat/releases/tag/1.6.9) 新增 gpt-4o-mini 模型、阿里语音识别、企微应用渠道路由优化 @@ -80,8 +82,13 @@ DEMO视频:https://cdn.link-ai.tech/doc/cow_demo.mp4 # 🚀 快速开始 -快速开始详细文档:[项目搭建文档](https://docs.link-ai.tech/cow/quick-start) +- 快速开始详细文档:[项目搭建文档](https://docs.link-ai.tech/cow/quick-start) +- 快速安装脚本,详细使用指导:[一键安装启动脚本](https://github.com/zhayujie/chatgpt-on-wechat/wiki/%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E5%90%AF%E5%8A%A8%E8%84%9A%E6%9C%AC) +```bash +bash <(curl -sS https://wangpc-cc.oss-cn-shenzhen.aliyuncs.com/blog/install.sh) +``` +- 项目管理脚本,详细使用指导:[项目管理脚本](https://github.com/zhayujie/chatgpt-on-wechat/wiki/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E8%84%9A%E6%9C%AC) ## 一、准备 ### 1. 账号注册 diff --git a/run.sh b/run.sh new file mode 100644 index 000000000..818d0863a --- /dev/null +++ b/run.sh @@ -0,0 +1,179 @@ +#!/usr/bin/env bash +set -e + +# 颜色定义 +RED='\033[0;31m' # 红色 +GREEN='\033[0;32m' # 绿色 +YELLOW='\033[0;33m' # 黄色 +BLUE='\033[0;34m' # 蓝色 +NC='\033[0m' # 无颜色 + +# 获取当前脚本的目录 +export BASE_DIR=$(cd "$(dirname "$0")"; pwd) +echo -e "${GREEN}📁 BASE_DIR: ${BASE_DIR}${NC}" + +# 检查 config.json 文件是否存在 +check_config_file() { + if [ ! -f "${BASE_DIR}/config.json" ]; then + echo -e "${RED}❌ 错误:未找到 config.json 文件。请确保 config.json 存在于当前目录。${NC}" + exit 1 + fi +} + +# 检查 Python 版本是否大于等于 3.7,并检查 pip 是否可用 +check_python_version() { + if ! command -v python3 &> /dev/null; then + echo -e "${RED}❌ 错误:未找到 Python3。请安装 Python 3.7 或以上版本。${NC}" + exit 1 + fi + + PYTHON_VERSION=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")') + PYTHON_MAJOR=$(echo "$PYTHON_VERSION" | cut -d'.' -f1) + PYTHON_MINOR=$(echo "$PYTHON_VERSION" | cut -d'.' -f2) + + if (( PYTHON_MAJOR < 3 || (PYTHON_MAJOR == 3 && PYTHON_MINOR < 7) )); then + echo -e "${RED}❌ 错误:Python 版本为 ${PYTHON_VERSION}。请安装 Python 3.7 或以上版本。${NC}" + exit 1 + fi + + if ! python3 -m pip --version &> /dev/null; then + echo -e "${RED}❌ 错误:未找到 pip。请安装 pip。${NC}" + exit 1 + fi +} + +# 检查并安装缺失的依赖 +install_dependencies() { + echo -e "${YELLOW}⏳ 正在安装依赖...${NC}" + + if [ ! -f "${BASE_DIR}/requirements.txt" ]; then + echo -e "${RED}❌ 错误:未找到 requirements.txt 文件。${NC}" + exit 1 + fi + + # 安装 requirements.txt 中的依赖,使用清华大学的 PyPI 镜像 + pip3 install -r "${BASE_DIR}/requirements.txt" -i https://pypi.tuna.tsinghua.edu.cn/simple + + # 处理 requirements-optional.txt(如果存在) + if [ -f "${BASE_DIR}/requirements-optional.txt" ]; then + echo -e "${YELLOW}⏳ 正在安装可选的依赖...${NC}" + pip3 install -r "${BASE_DIR}/requirements-optional.txt" -i https://pypi.tuna.tsinghua.edu.cn/simple + fi +} + +# 启动项目 +run_project() { + echo -e "${GREEN}🚀 准备启动项目...${NC}" + cd "${BASE_DIR}" + sleep 2 + + + nohup python3 "${BASE_DIR}/app.py" > "${BASE_DIR}/nohup.out" 2>&1 & + + echo -e "${GREEN}🚀 正在启动 ChatGPT-on-WeChat ...${NC}" + sleep 2 + # 显示日志输出,供用户扫码 + tail -n 30 -f "${BASE_DIR}/nohup.out" + +} +# 更新项目 +update_project() { + echo -e "${GREEN}🔄 准备更新项目,现在停止项目...${NC}" + cd "${BASE_DIR}" + + # 停止项目 + stop_project + echo -e "${GREEN}🔄 开始更新项目...${NC}" + # 更新代码,从 git 仓库拉取最新代码 + if [ -d .git ]; then + GIT_PULL_OUTPUT=$(git pull) + if [ $? -eq 0 ]; then + if [[ "$GIT_PULL_OUTPUT" == *"Already up to date."* ]]; then + echo -e "${GREEN}✅ 代码已经是最新的。${NC}" + else + echo -e "${GREEN}✅ 代码更新完成。${NC}" + fi + else + echo -e "${YELLOW}⚠️ 从 GitHub 更新失败,尝试切换到 Gitee 仓库...${NC}" + # 更改远程仓库为 Gitee + git remote set-url origin https://gitee.com/zhayujie/chatgpt-on-wechat.git + GIT_PULL_OUTPUT=$(git pull) + if [ $? -eq 0 ]; then + if [[ "$GIT_PULL_OUTPUT" == *"Already up to date."* ]]; then + echo -e "${GREEN}✅ 代码已经是最新的。${NC}" + else + echo -e "${GREEN}✅ 从 Gitee 更新成功。${NC}" + fi + else + echo -e "${RED}❌ 错误:从 Gitee 更新仍然失败,请检查网络连接。${NC}" + exit 1 + fi + fi + else + echo -e "${RED}❌ 错误:当前目录不是 git 仓库,无法更新代码。${NC}" + exit 1 + fi + + # 安装依赖 + install_dependencies + + # 启动项目 + run_project +} + +# 停止项目 +stop_project() { + echo -e "${GREEN}🛑 正在停止项目...${NC}" + cd "${BASE_DIR}" + pid=$(ps ax | grep -i app.py | grep "${BASE_DIR}" | grep python3 | grep -v grep | awk '{print $1}') + if [ -z "$pid" ] ; then + echo -e "${YELLOW}⚠️ 未找到正在运行的 ChatGPT-on-WeChat。${NC}" + return + fi + + echo -e "${GREEN}🛑 正在运行的 ChatGPT-on-WeChat (PID: ${pid})${NC}" + + kill ${pid} + sleep 3 + + if ps -p $pid > /dev/null; then + echo -e "${YELLOW}⚠️ 进程未停止,尝试强制终止...${NC}" + kill -9 ${pid} + fi + + echo -e "${GREEN}✅ 已停止 ChatGPT-on-WeChat (PID: ${pid})${NC}" +} + +# 主函数,根据用户参数执行操作 +case "$1" in + start) + check_config_file + check_python_version + run_project + ;; + stop) + stop_project + ;; + restart) + stop_project + check_config_file + check_python_version + run_project + ;; + update) + check_config_file + check_python_version + update_project + ;; + *) + echo -e "${YELLOW}=========================================${NC}" + echo -e "${YELLOW}用法:${GREEN}$0 ${BLUE}{start|stop|restart|update}${NC}" + echo -e "${YELLOW}示例:${NC}" + echo -e " ${GREEN}$0 ${BLUE}start${NC}" + echo -e " ${GREEN}$0 ${BLUE}stop${NC}" + echo -e " ${GREEN}$0 ${BLUE}restart${NC}" + echo -e " ${GREEN}$0 ${BLUE}update${NC}" + echo -e "${YELLOW}=========================================${NC}" + exit 1 + ;; +esac From a9fdbc31c52704aa1d79f3fb4e04fcb0ba7f944a Mon Sep 17 00:00:00 2001 From: 6vision Date: Thu, 26 Sep 2024 13:02:38 +0800 Subject: [PATCH 2/4] update date --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index befed02b5..37f87a4aa 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ DEMO视频:https://cdn.link-ai.tech/doc/cow_demo.mp4 # 🏷 更新日志 ->**2024.08.29:** [1.7.2版本](https://github.com/zhayujie/chatgpt-on-wechat/releases/tag/1.7.2) 和 [1.7.1版本](https://github.com/zhayujie/chatgpt-on-wechat/releases/tag/1.7.1) 文心,讯飞等模型优化、o1 模型、快速安装和管理脚本 +>**2024.09.26:** [1.7.2版本](https://github.com/zhayujie/chatgpt-on-wechat/releases/tag/1.7.2) 和 [1.7.1版本](https://github.com/zhayujie/chatgpt-on-wechat/releases/tag/1.7.1) 文心,讯飞等模型优化、o1 模型、快速安装和管理脚本 >**2024.08.02:** [1.7.0版本](https://github.com/zhayujie/chatgpt-on-wechat/releases/tag/1.7.0) 新增 讯飞4.0 模型、知识库引用来源展示、相关插件优化 From 76a8974034275177eb7ab52d1e8b4051322ecae7 Mon Sep 17 00:00:00 2001 From: 6vision Date: Thu, 26 Sep 2024 16:01:44 +0800 Subject: [PATCH 3/4] update run.sh --- run.sh | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/run.sh b/run.sh index 818d0863a..b20155982 100644 --- a/run.sh +++ b/run.sh @@ -68,9 +68,22 @@ run_project() { sleep 2 - nohup python3 "${BASE_DIR}/app.py" > "${BASE_DIR}/nohup.out" 2>&1 & + # 判断操作系统类型 + OS_TYPE=$(uname) + + if [[ "$OS_TYPE" == "Linux" ]]; then + # 在 Linux 上使用 setsid + setsid python3 "${BASE_DIR}/app.py" > "${BASE_DIR}/nohup.out" 2>&1 & + echo -e "${GREEN}🚀 正在启动 ChatGPT-on-WeChat (Linux)...${NC}" + elif [[ "$OS_TYPE" == "Darwin" ]]; then + # 在 macOS 上直接运行 + python3 "${BASE_DIR}/app.py" > "${BASE_DIR}/nohup.out" 2>&1 & + echo -e "${GREEN}🚀 正在启动 ChatGPT-on-WeChat (macOS)...${NC}" + else + echo -e "${RED}❌ 错误:不支持的操作系统 ${OS_TYPE}。${NC}" + exit 1 + fi - echo -e "${GREEN}🚀 正在启动 ChatGPT-on-WeChat ...${NC}" sleep 2 # 显示日志输出,供用户扫码 tail -n 30 -f "${BASE_DIR}/nohup.out" @@ -176,4 +189,4 @@ case "$1" in echo -e "${YELLOW}=========================================${NC}" exit 1 ;; -esac +esac \ No newline at end of file From f4c62e7844603224150db28a0889c1583bff6bdd Mon Sep 17 00:00:00 2001 From: 6vision Date: Thu, 26 Sep 2024 16:43:12 +0800 Subject: [PATCH 4/4] update install.sh url --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 37f87a4aa..82bf286ab 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ DEMO视频:https://cdn.link-ai.tech/doc/cow_demo.mp4 - 快速安装脚本,详细使用指导:[一键安装启动脚本](https://github.com/zhayujie/chatgpt-on-wechat/wiki/%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E5%90%AF%E5%8A%A8%E8%84%9A%E6%9C%AC) ```bash -bash <(curl -sS https://wangpc-cc.oss-cn-shenzhen.aliyuncs.com/blog/install.sh) +bash <(curl -sS https://cdn.link-ai.tech/code/cow/install.sh) ``` - 项目管理脚本,详细使用指导:[项目管理脚本](https://github.com/zhayujie/chatgpt-on-wechat/wiki/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E8%84%9A%E6%9C%AC) ## 一、准备