#!/bin/bash # YZWater Linux 安装脚本 set -e APP_NAME="yzwater" INSTALL_DIR="/opt/yzwater" SERVICE_USER="yzwater" echo "===================================" echo "YZWater 安装脚本" echo "===================================" # 检查是否以 root 运行 if [ "$EUID" -ne 0 ]; then echo "错误:请以 root 用户运行此脚本(使用 sudo)" exit 1 fi # 创建用户 echo "创建服务用户: $SERVICE_USER" if ! id "$SERVICE_USER" &>/dev/null; then useradd -r -s /bin/false -m -d /home/$SERVICE_USER $SERVICE_USER fi # 创建安装目录 echo "创建安装目录: $INSTALL_DIR" mkdir -p $INSTALL_DIR mkdir -p $INSTALL_DIR/Data mkdir -p $INSTALL_DIR/Logs mkdir -p $INSTALL_DIR/Backups mkdir -p $INSTALL_DIR/projects # 检查发布文件 if [ ! -f "YZWater.Avalonia" ]; then echo "错误:当前目录未找到 YZWater.Avalonia 可执行文件" echo "请先运行: dotnet publish -c Release -r linux-x64 --self-contained" exit 1 fi # 复制文件 echo "复制应用程序文件..." cp -r ./* $INSTALL_DIR/ chown -R $SERVICE_USER:$SERVICE_USER $INSTALL_DIR # 安装 systemd 服务 echo "安装 systemd 服务..." cp deploy/yzwater.service /etc/systemd/system/ systemctl daemon-reload systemctl enable $APP_NAME echo "===================================" echo "安装完成!" echo "===================================" echo "" echo "启动服务: systemctl start $APP_NAME" echo "查看状态: systemctl status $APP_NAME" echo "查看日志: journalctl -u $APP_NAME -f" echo "" echo "配置文件位置: $INSTALL_DIR/yzwater-config.json" echo "数据库位置: $INSTALL_DIR/Data/yzwater.db" echo "日志位置: $INSTALL_DIR/Logs/"