diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..d78a94c --- /dev/null +++ b/install.sh @@ -0,0 +1,96 @@ +#!/bin/bash +# +# meshgo 安装脚本(Linux) +# 功能:git pull 拉取最新代码 → 编译 → 安装到 /opt/meshgo +# + +set -e + +APP_NAME="meshgo" +INSTALL_DIR="/opt/${APP_NAME}" +DATA_DIR="/var/lib/${APP_NAME}" +REPO_DIR="$(cd "$(dirname "$0")" && pwd)" + +echo "=== meshgo 安装脚本 ===" +echo "安装目录: ${INSTALL_DIR}" +echo "仓库目录: ${REPO_DIR}" +echo "" + +# --------------------------------------------------------------------------- +# 1. git pull 拉取最新代码 +# --------------------------------------------------------------------------- +echo "[1/5] 拉取最新代码..." +cd "${REPO_DIR}" +if ! git diff-index --quiet HEAD -- 2>/dev/null; then + echo "警告:本地有未提交的更改,将暂存后拉取..." + git stash push -m "install.sh auto stash $(date +%Y%m%d%H%M%S)" +fi +git pull origin main +echo "[1/5] 完成" +echo "" + +# --------------------------------------------------------------------------- +# 2. 编译 +# --------------------------------------------------------------------------- +echo "[2/5] 编译..." +CGO_ENABLED=1 go build -ldflags="-s -w" -o meshgo . +echo "[2/5] 完成: meshgo" +echo "" + +# --------------------------------------------------------------------------- +# 3. 创建用户和数据目录 +# --------------------------------------------------------------------------- +echo "[3/5] 创建用户和数据目录..." +id -u ${APP_NAME} &>/dev/null || sudo useradd -r -s /usr/sbin/nologin -d /nonexistent ${APP_NAME} +sudo mkdir -p "${INSTALL_DIR}" +sudo mkdir -p "${DATA_DIR}" +echo "[3/5] 完成" +echo "" + +# --------------------------------------------------------------------------- +# 4. 复制到安装目录并设置权限 +# --------------------------------------------------------------------------- +echo "[4/5] 复制到 ${INSTALL_DIR}..." +sudo cp meshgo "${INSTALL_DIR}/" +sudo chown -R ${APP_NAME}:${APP_NAME} "${INSTALL_DIR}" +sudo chown -R ${APP_NAME}:${APP_NAME} "${DATA_DIR}" +echo "[4/5] 完成" +echo "" + +# --------------------------------------------------------------------------- +# 5. 安装 systemd 服务 +# --------------------------------------------------------------------------- +echo "[5/5] 安装 systemd 服务..." +sudo tee /etc/systemd/system/${APP_NAME}.service > /dev/null <