install.sh: create venv and install dependencies
Creates .venv/ with python3 -m venv if not present, then installs/ updates requirements.txt into it before setting up the systemd service. The service ExecStart always uses the venv Python. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+21
-12
@@ -22,20 +22,29 @@ SYSTEMD_DIR="$HOME/.config/systemd/user"
|
|||||||
SERVICE_FILE="$SYSTEMD_DIR/$SERVICE_NAME.service"
|
SERVICE_FILE="$SYSTEMD_DIR/$SERVICE_NAME.service"
|
||||||
LOG_DIR="$SCRIPT_DIR/logs"
|
LOG_DIR="$SCRIPT_DIR/logs"
|
||||||
|
|
||||||
# Prefer project venv, fall back to system python3
|
VENV="$SCRIPT_DIR/.venv"
|
||||||
if [[ -x "$SCRIPT_DIR/.venv/bin/python" ]]; then
|
PYTHON="$VENV/bin/python"
|
||||||
PYTHON="$SCRIPT_DIR/.venv/bin/python"
|
|
||||||
else
|
|
||||||
PYTHON="$(command -v python3)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "==> we_monitor installer"
|
echo "==> we_monitor installer"
|
||||||
echo " Project : $SCRIPT_DIR"
|
echo " Project : $SCRIPT_DIR"
|
||||||
echo " Python : $PYTHON"
|
|
||||||
echo " User : $USER"
|
echo " User : $USER"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# ── 1. credentials template ───────────────────────────────────────────────────
|
# ── 1. virtual environment ────────────────────────────────────────────────────
|
||||||
|
if [[ ! -x "$PYTHON" ]]; then
|
||||||
|
echo "==> Creating virtual environment : $VENV"
|
||||||
|
python3 -m venv "$VENV"
|
||||||
|
else
|
||||||
|
echo "==> Virtual environment exists : $VENV"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "==> Installing / updating dependencies"
|
||||||
|
"$VENV/bin/pip" install --quiet --upgrade pip
|
||||||
|
"$VENV/bin/pip" install --quiet -r "$SCRIPT_DIR/requirements.txt"
|
||||||
|
echo " Python : $PYTHON"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# ── 2. credentials template ───────────────────────────────────────────────────
|
||||||
mkdir -p "$CREDS_DIR"
|
mkdir -p "$CREDS_DIR"
|
||||||
chmod 700 "$CREDS_DIR"
|
chmod 700 "$CREDS_DIR"
|
||||||
|
|
||||||
@@ -55,11 +64,11 @@ else
|
|||||||
echo "==> Credentials file exists : $CREDS_FILE"
|
echo "==> Credentials file exists : $CREDS_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── 2. log directory ──────────────────────────────────────────────────────────
|
# ── 3. log directory ──────────────────────────────────────────────────────────
|
||||||
mkdir -p "$LOG_DIR"
|
mkdir -p "$LOG_DIR"
|
||||||
echo "==> Log directory : $LOG_DIR"
|
echo "==> Log directory : $LOG_DIR"
|
||||||
|
|
||||||
# ── 3. systemd user service ───────────────────────────────────────────────────
|
# ── 4. systemd user service ───────────────────────────────────────────────────
|
||||||
mkdir -p "$SYSTEMD_DIR"
|
mkdir -p "$SYSTEMD_DIR"
|
||||||
|
|
||||||
cat > "$SERVICE_FILE" <<EOF
|
cat > "$SERVICE_FILE" <<EOF
|
||||||
@@ -84,7 +93,7 @@ EOF
|
|||||||
|
|
||||||
echo "==> Installed service unit : $SERVICE_FILE"
|
echo "==> Installed service unit : $SERVICE_FILE"
|
||||||
|
|
||||||
# ── 4. enable linger (service survives logout / starts at boot) ───────────────
|
# ── 5. enable linger (service survives logout / starts at boot) ───────────────
|
||||||
if loginctl enable-linger "$USER" 2>/dev/null; then
|
if loginctl enable-linger "$USER" 2>/dev/null; then
|
||||||
echo "==> Linger enabled for $USER (service starts at boot)"
|
echo "==> Linger enabled for $USER (service starts at boot)"
|
||||||
else
|
else
|
||||||
@@ -92,7 +101,7 @@ else
|
|||||||
echo " Run as root to fix: loginctl enable-linger $USER"
|
echo " Run as root to fix: loginctl enable-linger $USER"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── 5. reload and enable (but do NOT start yet) ───────────────────────────────
|
# ── 6. reload and enable (but do NOT start yet) ───────────────────────────────
|
||||||
systemctl --user daemon-reload
|
systemctl --user daemon-reload
|
||||||
systemctl --user enable "$SERVICE_NAME"
|
systemctl --user enable "$SERVICE_NAME"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user