0203a65973
Co-authored-by: Cursor <cursoragent@cursor.com>
67 lines
1.8 KiB
Bash
67 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
# Ubuntu 一键安装 — 部署到 /opt/crypto_key
|
|
# 用法: sudo bash scripts/install-ubuntu.sh
|
|
|
|
set -e
|
|
|
|
REPO_URL="https://git.bz121.com/dekun/crypto_key.git"
|
|
INSTALL_DIR="/opt/crypto_key"
|
|
APP_USER="${SUDO_USER:-$USER}"
|
|
|
|
echo "==> 安装系统依赖..."
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update -qq
|
|
apt-get install -y -qq python3 python3-venv python3-pip git curl ca-certificates
|
|
|
|
if ! command -v node >/dev/null 2>&1; then
|
|
echo "==> 安装 Node.js (用于 PM2)..."
|
|
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
|
|
apt-get install -y -qq nodejs
|
|
fi
|
|
|
|
if ! command -v pm2 >/dev/null 2>&1; then
|
|
echo "==> 安装 PM2..."
|
|
npm install -g pm2
|
|
fi
|
|
|
|
echo "==> 拉取代码到 ${INSTALL_DIR} ..."
|
|
mkdir -p /opt
|
|
if [ -d "${INSTALL_DIR}/.git" ]; then
|
|
cd "${INSTALL_DIR}"
|
|
git pull origin main 2>/dev/null || git pull origin master 2>/dev/null || git pull
|
|
else
|
|
git clone "${REPO_URL}" "${INSTALL_DIR}"
|
|
cd "${INSTALL_DIR}"
|
|
fi
|
|
|
|
echo "==> 创建 Python 虚拟环境..."
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
pip install -q --upgrade pip
|
|
pip install -q -r requirements.txt
|
|
|
|
mkdir -p logs
|
|
chmod +x pm2-start.sh pm2-stop.sh 2>/dev/null || true
|
|
|
|
if [ -n "${APP_USER}" ] && [ "${APP_USER}" != "root" ]; then
|
|
chown -R "${APP_USER}:${APP_USER}" "${INSTALL_DIR}"
|
|
fi
|
|
|
|
echo "==> 启动 PM2 守护..."
|
|
cd "${INSTALL_DIR}"
|
|
pm2 delete api-key-manager 2>/dev/null || true
|
|
pm2 start ecosystem.config.cjs
|
|
pm2 save
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo " 安装完成"
|
|
echo " 目录: ${INSTALL_DIR}"
|
|
echo " 访问: http://127.0.0.1:5200"
|
|
echo " 状态: pm2 status"
|
|
echo " 日志: pm2 logs api-key-manager"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "开机自启请执行: pm2 startup"
|
|
echo "按提示复制 sudo 命令执行后,再运行: pm2 save"
|