一、 核心部署脚本 (deploy.sh)
进入你的项目目录(例如 /root/project/crypto-bot),创建该脚本并运行。脚本会自动识别当前路径,无需手动修改代码。
#!/bin/bash
# ==========================================
# Crypto Monitor Bot 一键部署脚本 (Ubuntu)
# ==========================================
# 获取当前绝对路径
PROJECT_PATH=$(pwd)
SERVICE_NAME="crypto_bot"
PYTHON_BIN="$PROJECT_PATH/venv/bin/python3"
echo "🚀 开始部署项目至: $PROJECT_PATH"
# 1. 更新系统并安装必要工具
echo "📦 正在安装系统依赖..."
sudo apt update && sudo apt install -y python3-pip python3-venv
# 2. 创建并初始化虚拟环境
if [ ! -d "venv" ]; then
echo "创建虚拟环境..."
python3 -m venv venv
fi
# 3. 安装 Python 依赖
echo "📥 正在安装 Python 依赖库..."
$PROJECT_PATH/venv/bin/pip install --upgrade pip
$PROJECT_PATH/venv/bin/pip install -r requirements.txt
# 4. 创建 Systemd 服务文件
echo "⚙️ 正在配置 Systemd 守护进程..."
sudo cat <<EOF > /etc/systemd/system/$SERVICE_NAME.service
[Unit]
Description=Crypto Monitor Bot Service
After=network.target
[Service]
User=root
WorkingDirectory=$PROJECT_PATH
ExecStart=$PYTHON_BIN main.py
Environment=PYTHONUNBUFFERED=1
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
# 5. 启动服务并设置开机自启
echo "🔄 正在启动服务..."
sudo systemctl daemon-reload
sudo systemctl enable $SERVICE_NAME
sudo systemctl restart $SERVICE_NAME
echo "✅ 部署完成!"
二、 部署三部曲
- 赋予权限:
chmod +x deploy.sh - 上传配置: 确保
.env文件已放置在当前目录。 - 执行部署:
./deploy.sh
三、 日常运维指令表
部署完成后,请使用以下 systemctl 指令管理机器人:
| 操作内容 | 具体指令 |
|---|---|
| 启动服务 | sudo systemctl start crypto_bot |
| 停止服务 | sudo systemctl stop crypto_bot |
| 重新启动 | sudo systemctl restart crypto_bot |
| 查看运行状态 | sudo systemctl status crypto_bot |
| 查看实时日志 | journalctl -u crypto_bot -f |
sudo systemctl disable crypto_bot # 取消开机自启
四、 专家提示
- 路径无关性: 该脚本通过
$(pwd)自动获取路径,这意味着你可以将其移动到任何目录(如/root/project/bot2)重新运行脚本,它会自动更新服务配置。 - 多实例运行: 若要在同一台机器运行多个机器人,只需修改脚本中的
SERVICE_NAME变量(例如改为crypto_bot_test),即可创建独立的服务。 - Python 缓存: 脚本中开启了
PYTHONUNBUFFERED=1,这确保了你在查看日志时不会有延迟。