Files
crypto_key/scripts/install-ubuntu.sh
T
2026-05-19 01:00:26 +08:00

69 lines
1.9 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}"
LAN_IP=$(hostname -I 2>/dev/null | awk '{print $1}')
echo " 本机: http://127.0.0.1:5200"
echo " 局域网: http://${LAN_IP:-<你的IP>}:5200"
echo " 状态: pm2 status"
echo " 日志: pm2 logs api-key-manager"
echo "=========================================="
echo ""
echo "开机自启请执行: pm2 startup"
echo "按提示复制 sudo 命令执行后,再运行: pm2 save"