From 659054beb7220ee941c5ae030b5b3b8555ac5aa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=96=87=E5=B3=B0?= Date: Fri, 15 May 2026 18:25:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=AA=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 install.sh 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 <