6.4 KiB
6.4 KiB
部署文档 — crypto_key(Ubuntu /opt)
仓库地址:https://git.bz121.com/dekun/crypto_key
部署路径:/opt/crypto_key
进程守护:PM2 · 服务端口:5200
币圈 API 密钥本地管理工具。数据保存在服务器本地 data.json,无登录,监听 0.0.0.0:5200(本机 + 局域网可访问)。
一、架构
浏览器(本机或局域网) → http://<服务器IP>:5200
↓
PM2 (api-key-manager)
↓
/opt/crypto_key/venv/python app.py
↓
/opt/crypto_key/data.json
| 路径 | 说明 |
|---|---|
/opt/crypto_key |
项目根目录(从 Git 克隆) |
/opt/crypto_key/data.json |
账户数据(不纳入 Git) |
/opt/crypto_key/logs/ |
PM2 日志 |
/opt/crypto_key/venv/ |
Python 虚拟环境 |
二、服务器要求
| 项目 | 要求 |
|---|---|
| 系统 | Ubuntu 20.04 / 22.04 / 24.04 LTS |
| 权限 | 具备 sudo 的普通用户或 root |
| Python | 3.8+(python3) |
| Node.js | 16+(用于 PM2) |
| 磁盘 | ≥ 100MB |
三、首次部署(推荐:一键脚本)
3.1 克隆仓库并执行安装
# 若仓库尚未克隆,可先克隆再安装
sudo mkdir -p /opt
sudo git clone https://git.bz121.com/dekun/crypto_key.git /opt/crypto_key
cd /opt/crypto_key
sudo bash scripts/install-ubuntu.sh
脚本将自动完成:安装 python3 / git / Node.js / PM2 → 创建 venv → 安装 Flask → PM2 启动服务。
3.2 验证
pm2 status
curl -s http://127.0.0.1:5200/api/accounts
访问地址:
| 场景 | 地址 |
|---|---|
| 服务器本机 | http://127.0.0.1:5200 |
| 局域网其他设备 | http://<局域网IP>:5200 |
查看服务器局域网 IP:
hostname -I | awk '{print $1}'
# 或
ip -4 addr show | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | grep -v 127.0.0.1
示例:若 IP 为 192.168.1.100,手机/电脑在同一 WiFi 下访问 http://192.168.1.100:5200
四、手动部署(逐步)
适合需要自定义权限或不用一键脚本的环境。
4.1 安装系统依赖
sudo apt update
sudo apt install -y python3 python3-venv python3-pip git curl
# Node.js + PM2
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
sudo npm install -g pm2
4.2 克隆到 /opt
sudo mkdir -p /opt
sudo git clone https://git.bz121.com/dekun/crypto_key.git /opt/crypto_key
cd /opt/crypto_key
若目录已存在,更新代码:
cd /opt/crypto_key
sudo git pull
4.3 Python 环境
cd /opt/crypto_key
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
4.4 PM2 启动
cd /opt/crypto_key
mkdir -p logs
chmod +x pm2-start.sh pm2-stop.sh
./pm2-start.sh
或:
pm2 start ecosystem.config.cjs
pm2 save
4.5 目录权限(可选)
若用普通用户运行 PM2,建议将项目目录属主改为该用户:
sudo chown -R $USER:$USER /opt/crypto_key
五、开机自启
pm2 startup
# 终端会输出一行 sudo 命令,复制并执行
pm2 save
重启后检查:
pm2 status
# api-key-manager 应为 online
六、日常运维
查看状态与日志
pm2 status
pm2 logs api-key-manager
pm2 logs api-key-manager --lines 100
重启 / 停止
cd /opt/crypto_key
./pm2-start.sh # 启动
# 或
pm2 restart api-key-manager
./pm2-stop.sh # 停止
# 或
pm2 stop api-key-manager
更新代码
cd /opt/crypto_key
git pull
source venv/bin/activate
pip install -r requirements.txt
pm2 restart api-key-manager
备份数据
sudo cp /opt/crypto_key/data.json /opt/crypto_key/data.json.bak.$(date +%F)
data.json 含明文 API 密钥,请加密存储或限制文件权限:
chmod 600 /opt/crypto_key/data.json
七、PM2 配置说明
文件:/opt/crypto_key/ecosystem.config.cjs
| 配置 | 值 |
|---|---|
| 进程名 | api-key-manager |
| 工作目录 | 项目根目录(自动) |
| Python | venv/bin/python |
| 自动重启 | 是 |
| 日志 | logs/pm2-out.log / logs/pm2-error.log |
八、项目文件结构
/opt/crypto_key/
├── app.py
├── index.html
├── requirements.txt
├── ecosystem.config.cjs
├── pm2-start.sh
├── pm2-stop.sh
├── scripts/
│ └── install-ubuntu.sh
├── logs/
├── venv/
├── data.json # 运行时生成,已 .gitignore
├── README.md
└── DEPLOY.md
九、故障排查
| 现象 | 处理 |
|---|---|
pm2 status 为 errored |
pm2 logs api-key-manager --err;确认 venv 已创建 |
| 端口 5200 占用 | sudo ss -tlnp | grep 5200;修改 app.py 中 port 后 pm2 restart |
git clone 需认证 |
配置 SSH Key 或 git config credential.helper store |
| 局域网无法访问 | 检查防火墙是否放行 5200;sudo ufw allow 5200/tcp |
| 无法访问页面 | pm2 logs api-key-manager;确认 ss -tlnp | grep 5200 显示 0.0.0.0:5200 |
| 更新后异常 | pip install -r requirements.txt 后 pm2 restart api-key-manager |
十、安全说明
- 服务绑定 0.0.0.0:5200,同一局域网内设备均可访问。
- 无登录鉴权,切勿将端口映射到公网或暴露于不可信网络。
data.json已加入.gitignore,不会推送到仓库。- 建议:仅在家/办公室可信局域网使用;云服务器请配合防火墙限制来源 IP。
防火墙(Ubuntu)
# 仅允许局域网网段访问(示例 192.168.0.0/16)
sudo ufw allow from 192.168.0.0/16 to any port 5200 proto tcp
# 或临时开放(测试用,范围更大)
sudo ufw allow 5200/tcp
十一、Windows 本地开发(附录)
cd C:\path\to\crypto_key
python -m venv venv
.\venv\Scripts\activate
pip install -r requirements.txt
npm install -g pm2
.\pm2-start.ps1
十二、命令速查
# 首次部署
sudo git clone https://git.bz121.com/dekun/crypto_key.git /opt/crypto_key
cd /opt/crypto_key && sudo bash scripts/install-ubuntu.sh
# 日常
pm2 status
pm2 restart api-key-manager
cd /opt/crypto_key && git pull && pm2 restart api-key-manager