mirror of
https://github.com/whyour/qinglong.git
synced 2026-06-01 11:20:14 +08:00
* 修改获取示例文件 api path * 增加 debian-slim 基础镜像 * 修复 debian apt 命令,支持 qinglong 命令 * 更新 npm 版本 0.7.7 * 更新 npm v0.8.4 * 修复linux依赖检测 (#2082) * 修复拉取私有仓库 * 修复 shell check_server * 修复 qinglong 命令 * 更新 npm 版本 v0.13.2 * 增加 debian 开发版本 * 修改切换 linux 镜像源 * 修复 qinglong 命令 * 移除 qinglong 命令 npm 默认镜像源 * 修复 workflow * 更新 npm 版本 v0.14.5 * 增加 npx 命令 * 更新 workflow action 版本 * 更新 npm 版本 v0.16.0 * 修复 linux 镜像源 * 更新 npm 版本 v0.17.0 * 更新 npm 版本 v0.18.0 * 修改 npm 安装启动命令 * 更新 npm 版本 v0.19.9 * 修复 debian netcat 包名 * 更新 npm 版本 v0.20.4 * 安装 linux 依赖自动识别 alpine 和 debian * 修改 apt 命令 * 更新 npm 版本 v0.21.2 * 修改 ts 文件执行依赖 * npm 启动增加 reload 逻辑 * 更新 npm 版本 v2.17.8 * 修复 qinglong 命令 * 更新 npm 版本 v2.17.9 * 更新 npm 版本 v2.17.10 * 更新 npm 版本 v2.17.11 * 修改 debian 版本为 12 bookworm * 更新 npm 版本 v2.17.12 * 修改本地服务启动提示 * 更新 npm 版本 v2.17.13 * 写入文件增加文件锁 * 修复系统安装依赖提示 * 更新 npm 版本 v2.18.2-6 * 更新 nodejs 版本 * 更新 npm 版本 v2.18.3-3 * 修复 command 变量 * 移除自动清除 deb * 修复 npm 启动脚本 * 修复发布 npm包依赖文件 * 修改 linux 启动文件逻辑 * 更新 npm 版本 v2.19.0-10 * 修复 apt 命令 * 更新 npm 版本 v2.19.1-0 * 更新 npm 版本 v2.19.2-2 * 增加 packageManager * 增加用户 qinglong * 更新 pipeline * 移除 init_nginx * 更新 npm 版本 v2.20.0 * 更新 npm 版本 2.20.1 * 更新 npm 版本 2.20.2 * fix: 修复非 root 用户启动 * chore: 合并 debian 和 alpine 逻辑 --------- Co-authored-by: dream10201 <xiuxiu10201@gmail.com>
133 lines
3.5 KiB
Bash
133 lines
3.5 KiB
Bash
#!/usr/bin/env bash
|
||
|
||
# 前置依赖 nodejs、npm、python3
|
||
set -e
|
||
set -x
|
||
|
||
if [[ ! $QL_DIR ]]; then
|
||
npm_dir=$(npm root -g)
|
||
pnpm_dir=$(pnpm root -g)
|
||
if [[ -d "$npm_dir/@whyour/qinglong" ]]; then
|
||
QL_DIR="$npm_dir/@whyour/qinglong"
|
||
elif [[ -d "$pnpm_dir/@whyour/qinglong" ]]; then
|
||
QL_DIR="$pnpm_dir/@whyour/qinglong"
|
||
else
|
||
echo -e "未找到 qinglong 模块,请先执行 npm i -g @whyour/qinglong 安装"
|
||
fi
|
||
|
||
if [[ $QL_DIR ]]; then
|
||
echo -e "请先手动设置 export QL_DIR=$QL_DIR,环境变量,并手动添加到系统环境变量,然后再次执行命令 qinglong 启动服务"
|
||
fi
|
||
|
||
exit 1
|
||
fi
|
||
|
||
if [[ ! $QL_DATA_DIR ]]; then
|
||
echo -e "请先手动设置数据存储目录 export QL_DATA_DIR 环境变量,目录必须以斜杠开头的绝对路径,并且以 /data 结尾,例如 /ql/data 并手动添加到系统环境变量"
|
||
exit 1
|
||
fi
|
||
|
||
if [[ $QL_DATA_DIR != */data ]]; then
|
||
echo -e "QL_DATA_DIR 必须以 /data 结尾,例如 /ql/data,如果有历史数据,请新建 data 目录,把历史数据放到 data 目录中"
|
||
exit 1
|
||
fi
|
||
|
||
command="$1"
|
||
|
||
if [[ $command != "reload" ]]; then
|
||
# 安装依赖
|
||
os_name="${QL_OS_TYPE:-}"
|
||
if [ -z "$os_name" ]; then
|
||
os_name=$(source /etc/os-release && echo "$ID")
|
||
fi
|
||
|
||
case "$os_name" in
|
||
alpine)
|
||
apk update
|
||
apk add -f bash \
|
||
coreutils \
|
||
git \
|
||
curl \
|
||
wget \
|
||
tzdata \
|
||
perl \
|
||
openssl \
|
||
jq \
|
||
nginx \
|
||
openssh \
|
||
procps \
|
||
netcat-openbsd
|
||
;;
|
||
debian|ubuntu)
|
||
apt-get update
|
||
apt-get install -y git curl wget tzdata perl openssl jq nginx procps netcat-openbsd openssh-client
|
||
;;
|
||
*)
|
||
echo -e "暂不支持此系统部署 $os_name"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
npm install -g pnpm@8.3.1 pm2 ts-node
|
||
fi
|
||
|
||
export PYTHON_SHORT_VERSION=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')
|
||
export PNPM_HOME=${QL_DIR}/data/dep_cache/node
|
||
export PYTHON_HOME=${QL_DIR}/data/dep_cache/python3
|
||
export PYTHONUSERBASE=${QL_DIR}/data/dep_cache/python3
|
||
|
||
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${PNPM_HOME}:${PYTHON_HOME}/bin
|
||
export NODE_PATH=/usr/local/bin:/usr/local/lib/node_modules:${PNPM_HOME}/global/5/node_modules
|
||
export PIP_CACHE_DIR=${PYTHON_HOME}/pip
|
||
export PYTHONPATH=${PYTHON_HOME}:${PYTHON_HOME}/lib/python${PYTHON_SHORT_VERSION}:${PYTHON_HOME}/lib/python${PYTHON_SHORT_VERSION}/site-packages
|
||
|
||
if [[ $command != "reload" ]]; then
|
||
pip3 install --prefix ${PYTHON_HOME} requests
|
||
fi
|
||
|
||
cd ${QL_DIR}
|
||
cp -f .env.example .env
|
||
chmod 777 ${QL_DIR}/shell/*.sh
|
||
|
||
. ${QL_DIR}/shell/share.sh
|
||
. ${QL_DIR}/shell/env.sh
|
||
|
||
log_with_style() {
|
||
local level="$1"
|
||
local message="$2"
|
||
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
||
|
||
printf "\n[%s] [%7s] %s\n" "${timestamp}" "${level}" "${message}"
|
||
}
|
||
|
||
log_with_style "INFO" "🚀 1. 检测配置文件..."
|
||
import_config "$@"
|
||
make_dir /etc/nginx/conf.d
|
||
make_dir /run/nginx
|
||
fix_config
|
||
|
||
pm2 l &>/dev/null
|
||
|
||
log_with_style "INFO" "🔄 2. 启动 nginx..."
|
||
nginx -s reload 2>/dev/null || nginx -c /etc/nginx/nginx.conf
|
||
|
||
log_with_style "INFO" "⚙️ 3. 启动 pm2 服务..."
|
||
reload_pm2
|
||
|
||
if [[ $command != "reload" ]]; then
|
||
if [[ $AutoStartBot == true ]]; then
|
||
log_with_style "INFO" "🤖 4. 启动 bot..."
|
||
nohup ql bot >$dir_log/bot.log 2>&1 &
|
||
fi
|
||
|
||
if [[ $EnableExtraShell == true ]]; then
|
||
log_with_style "INFO" "🛠️ 5. 执行自定义脚本..."
|
||
nohup ql extra >$dir_log/extra.log 2>&1 &
|
||
fi
|
||
|
||
pm2 startup
|
||
pm2 save
|
||
fi
|
||
|
||
log_with_style "SUCCESS" "🎉 启动成功!"
|