Modified the service management commands to ensure the service is restarted after enabling it. This change enhances the deployment process by ensuring the latest configuration is applied immediately. Updated the echo statement for clarity on the actions being performed.
78 lines
2.3 KiB
Bash
Executable File
78 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SERVICE_NAME="yourchat2"
|
|
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SERVICE_SRC="${PROJECT_DIR}/yourchat2.service"
|
|
SERVICE_DST="/etc/systemd/system/${SERVICE_NAME}.service"
|
|
ENV_DIR="/etc/yourchat2"
|
|
ENV_FILE="${ENV_DIR}/yourchat2.env"
|
|
ENV_TEMPLATE="${PROJECT_DIR}/config/yourchat2.env.example"
|
|
BIN_PATH="${PROJECT_DIR}/target/release/yourchat2"
|
|
INSTALL_BIN="/usr/local/bin/yourchat2"
|
|
WORK_DIR="/var/lib/yourchat2"
|
|
BUILD_USER="tsschulz"
|
|
|
|
if [[ "${EUID}" -ne 0 ]]; then
|
|
echo "Dieses Skript muss als root ausgefuehrt werden (z. B. via sudo)." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -f "${SERVICE_SRC}" ]]; then
|
|
echo "Service-Datei nicht gefunden: ${SERVICE_SRC}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "[1/7] Build release binary ..."
|
|
sudo -u "${BUILD_USER}" bash -lc "cd '${PROJECT_DIR}' && cargo build --release --manifest-path '${PROJECT_DIR}/Cargo.toml'"
|
|
|
|
if [[ ! -x "${BIN_PATH}" ]]; then
|
|
echo "Binary wurde nicht erzeugt: ${BIN_PATH}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "[2/7] Install binary ..."
|
|
install -m 0755 "${BIN_PATH}" "${INSTALL_BIN}"
|
|
|
|
echo "[3/7] Install service file ..."
|
|
install -m 0644 "${SERVICE_SRC}" "${SERVICE_DST}"
|
|
|
|
echo "[4/7] Ensure environment directory ..."
|
|
install -d -m 0755 "${ENV_DIR}"
|
|
|
|
echo "[5/7] Ensure work directory ..."
|
|
install -d -m 0750 "${WORK_DIR}"
|
|
chown "${BUILD_USER}:${BUILD_USER}" "${WORK_DIR}"
|
|
|
|
echo "[6/7] Ensure environment file ..."
|
|
if [[ ! -f "${ENV_FILE}" ]]; then
|
|
if [[ -f "${ENV_TEMPLATE}" ]]; then
|
|
install -m 0640 "${ENV_TEMPLATE}" "${ENV_FILE}"
|
|
else
|
|
cat > "${ENV_FILE}" <<'EOF'
|
|
# yourchat2 environment
|
|
CHAT_WS_ADDR=0.0.0.0:1235
|
|
CHAT_TCP_ADDR=127.0.0.1:1236
|
|
# CHAT_UNIX_SOCKET=/run/yourchat2/yourchat2.sock
|
|
# CHAT_ALLOWED_USERS=alice,bob
|
|
# CHAT_DB_URL=postgres://user:pass@host:5432/dbname
|
|
# SECRET_KEY=replace-with-real-secret
|
|
EOF
|
|
chmod 0640 "${ENV_FILE}"
|
|
fi
|
|
chmod 0640 "${ENV_FILE}"
|
|
chown root:root "${ENV_FILE}"
|
|
fi
|
|
|
|
echo "[7/7] Reload, enable and restart service ..."
|
|
systemctl daemon-reload
|
|
systemctl enable "${SERVICE_NAME}.service"
|
|
systemctl restart "${SERVICE_NAME}.service"
|
|
|
|
echo "[status] Service status ..."
|
|
systemctl --no-pager --full status "${SERVICE_NAME}.service" || true
|
|
|
|
echo
|
|
echo "Fertig. Konfiguration bei Bedarf in ${ENV_FILE} anpassen."
|
|
echo "Danach neu laden mit: systemctl restart ${SERVICE_NAME}.service"
|