初次提交
This commit is contained in:
154
backend/install_user.sh
Normal file
154
backend/install_user.sh
Normal file
@@ -0,0 +1,154 @@
|
||||
#!/bin/bash
|
||||
# 云盘后端服务用户级安装脚本(无需sudo权限)
|
||||
|
||||
set -e
|
||||
|
||||
# 配置变量
|
||||
SERVICE_NAME="cloud-drive"
|
||||
INSTALL_DIR="$HOME/cloud-drive"
|
||||
LOG_DIR="$HOME/.local/share/cloud-drive/logs"
|
||||
UPLOAD_DIR="$HOME/.local/share/cloud-drive/uploads"
|
||||
|
||||
echo "=== 云盘后端服务用户级安装脚本 ==="
|
||||
|
||||
# 检查系统
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
echo "检测到系统: $NAME $VERSION"
|
||||
else
|
||||
echo "警告: 无法检测系统版本"
|
||||
fi
|
||||
|
||||
# 创建安装目录
|
||||
echo "创建安装目录..."
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
mkdir -p "$LOG_DIR"
|
||||
mkdir -p "$UPLOAD_DIR"
|
||||
|
||||
# 复制文件
|
||||
echo "复制服务文件..."
|
||||
if [ -f "deploy/cloud-drive-server" ]; then
|
||||
cp deploy/cloud-drive-server "$INSTALL_DIR/"
|
||||
chmod +x "$INSTALL_DIR/cloud-drive-server"
|
||||
echo "✓ 复制可执行文件"
|
||||
else
|
||||
echo "错误: 未找到可执行文件,请先运行打包脚本"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f "deploy/.env.example" ]; then
|
||||
cp deploy/.env.example "$INSTALL_DIR/.env.example"
|
||||
echo "✓ 复制配置文件模板"
|
||||
fi
|
||||
|
||||
# 创建启动脚本
|
||||
echo "创建启动脚本..."
|
||||
cat > "$INSTALL_DIR/start.sh" << EOF
|
||||
#!/bin/bash
|
||||
# 云盘后端服务启动脚本(用户级)
|
||||
|
||||
# 设置环境变量
|
||||
export PYTHONPATH=\${PYTHONPATH}:$(dirname "$0")
|
||||
|
||||
# 进入脚本所在目录
|
||||
cd "\$(dirname "$0")"
|
||||
|
||||
# 检查环境文件
|
||||
if [ ! -f ".env" ]; then
|
||||
echo "警告: .env 文件不存在,将使用默认配置"
|
||||
if [ -f ".env.example" ]; then
|
||||
cp .env.example .env
|
||||
echo "已复制 .env.example 为 .env,请根据需要修改配置"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 启动服务
|
||||
echo "启动云盘后端服务..."
|
||||
./cloud-drive-server
|
||||
EOF
|
||||
|
||||
chmod +x "$INSTALL_DIR/start.sh"
|
||||
echo "✓ 创建启动脚本"
|
||||
|
||||
# 创建停止脚本
|
||||
cat > "$INSTALL_DIR/stop.sh" << 'EOF'
|
||||
#!/bin/bash
|
||||
# 云盘后端服务停止脚本
|
||||
|
||||
echo "停止云盘后端服务..."
|
||||
pkill -f cloud-drive-server || echo "服务未运行"
|
||||
EOF
|
||||
|
||||
chmod +x "$INSTALL_DIR/stop.sh"
|
||||
echo "✓ 创建停止脚本"
|
||||
|
||||
# 创建状态检查脚本
|
||||
cat > "$INSTALL_DIR/status.sh" << 'EOF'
|
||||
#!/bin/bash
|
||||
# 云盘后端服务状态检查脚本
|
||||
|
||||
if pgrep -f cloud-drive-server > /dev/null; then
|
||||
echo "云盘后端服务正在运行"
|
||||
echo "进程ID: $(pgrep -f cloud-drive-server)"
|
||||
echo "端口: 8000"
|
||||
else
|
||||
echo "云盘后端服务未运行"
|
||||
fi
|
||||
EOF
|
||||
|
||||
chmod +x "$INSTALL_DIR/status.sh"
|
||||
echo "✓ 创建状态检查脚本"
|
||||
|
||||
# 创建systemd用户服务文件(可选)
|
||||
echo "创建systemd用户服务文件..."
|
||||
mkdir -p "$HOME/.config/systemd/user"
|
||||
cat > "$HOME/.config/systemd/user/$SERVICE_NAME.service" << EOF
|
||||
[Unit]
|
||||
Description=Cloud Drive Backend Service (User)
|
||||
Documentation=https://github.com/your-repo/cloud-drive
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=$INSTALL_DIR
|
||||
ExecStart=$INSTALL_DIR/cloud-drive-server
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
SyslogIdentifier=cloud-drive
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
EOF
|
||||
|
||||
echo "✓ 创建systemd用户服务文件"
|
||||
|
||||
# 重载systemd用户服务
|
||||
systemctl --user daemon-reload
|
||||
echo "✓ systemd用户服务已加载"
|
||||
|
||||
# 提示配置
|
||||
echo ""
|
||||
echo "=== 用户级安装完成 ==="
|
||||
echo "安装目录: $INSTALL_DIR"
|
||||
echo "日志目录: $LOG_DIR"
|
||||
echo "上传目录: $UPLOAD_DIR"
|
||||
echo ""
|
||||
echo "手动启动方式:"
|
||||
echo "1. 编辑配置文件: nano $INSTALL_DIR/.env"
|
||||
echo "2. 启动服务: $INSTALL_DIR/start.sh"
|
||||
echo "3. 查看状态: $INSTALL_DIR/status.sh"
|
||||
echo "4. 停止服务: $INSTALL_DIR/stop.sh"
|
||||
echo ""
|
||||
echo "systemd用户服务方式:"
|
||||
echo "1. 启用服务: systemctl --user enable $SERVICE_NAME"
|
||||
echo "2. 启动服务: systemctl --user start $SERVICE_NAME"
|
||||
echo "3. 查看状态: systemctl --user status $SERVICE_NAME"
|
||||
echo "4. 查看日志: journalctl --user -u $SERVICE_NAME -f"
|
||||
echo ""
|
||||
echo "服务将在以下地址提供API:"
|
||||
echo "- API文档: http://localhost:8000/docs"
|
||||
echo "- 健康检查: http://localhost:8000/api/v1/health"
|
||||
echo ""
|
||||
echo "注意: 如需绑定到特权端口(如80)或访问系统资源,请使用sudo运行install.sh"
|
||||
Reference in New Issue
Block a user