Refactor install-systemd.sh and update yourchat2.service for improved installation and configuration. Added binary installation to /usr/local/bin, created work directory at /var/lib/yourchat2, and updated user/group settings. Enhanced README to reflect these changes.
This commit is contained in:
@@ -111,14 +111,16 @@ Es liegt eine Produktions-nahe Unit-Datei `yourchat2.service` im Projekt.
|
|||||||
Zusaetzlich gibt es ein Installationsskript `install-systemd.sh`, das:
|
Zusaetzlich gibt es ein Installationsskript `install-systemd.sh`, das:
|
||||||
|
|
||||||
- Release-Binary baut
|
- Release-Binary baut
|
||||||
|
- Binary nach `/usr/local/bin/yourchat2` installiert
|
||||||
- Unit nach `/etc/systemd/system/yourchat2.service` installiert
|
- Unit nach `/etc/systemd/system/yourchat2.service` installiert
|
||||||
|
- Arbeitsverzeichnis `/var/lib/yourchat2` erstellt
|
||||||
- Environment-Datei unter `/etc/yourchat2/yourchat2.env` anlegt (falls nicht vorhanden)
|
- Environment-Datei unter `/etc/yourchat2/yourchat2.env` anlegt (falls nicht vorhanden)
|
||||||
- Service aktiviert und startet
|
- Service aktiviert und startet
|
||||||
|
|
||||||
Installation:
|
Installation:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/Programs/yourchat2
|
cd /home/tsschulz/Programs/yourchat2
|
||||||
sudo ./install-systemd.sh
|
sudo ./install-systemd.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,9 @@ SERVICE_DST="/etc/systemd/system/${SERVICE_NAME}.service"
|
|||||||
ENV_DIR="/etc/yourchat2"
|
ENV_DIR="/etc/yourchat2"
|
||||||
ENV_FILE="${ENV_DIR}/yourchat2.env"
|
ENV_FILE="${ENV_DIR}/yourchat2.env"
|
||||||
BIN_PATH="${PROJECT_DIR}/target/release/yourchat2"
|
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
|
if [[ "${EUID}" -ne 0 ]]; then
|
||||||
echo "Dieses Skript muss als root ausgefuehrt werden (z. B. via sudo)." >&2
|
echo "Dieses Skript muss als root ausgefuehrt werden (z. B. via sudo)." >&2
|
||||||
@@ -20,20 +23,27 @@ if [[ ! -f "${SERVICE_SRC}" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "[1/6] Build release binary ..."
|
echo "[1/6] Build release binary ..."
|
||||||
sudo -u torsten cargo build --release --manifest-path "${PROJECT_DIR}/Cargo.toml"
|
sudo -u "${BUILD_USER}" cargo build --release --manifest-path "${PROJECT_DIR}/Cargo.toml"
|
||||||
|
|
||||||
if [[ ! -x "${BIN_PATH}" ]]; then
|
if [[ ! -x "${BIN_PATH}" ]]; then
|
||||||
echo "Binary wurde nicht erzeugt: ${BIN_PATH}" >&2
|
echo "Binary wurde nicht erzeugt: ${BIN_PATH}" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "[2/6] Install service file ..."
|
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}"
|
install -m 0644 "${SERVICE_SRC}" "${SERVICE_DST}"
|
||||||
|
|
||||||
echo "[3/6] Ensure environment directory ..."
|
echo "[4/7] Ensure environment directory ..."
|
||||||
install -d -m 0755 "${ENV_DIR}"
|
install -d -m 0755 "${ENV_DIR}"
|
||||||
|
|
||||||
echo "[4/6] Ensure environment file ..."
|
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_FILE}" ]]; then
|
||||||
cat > "${ENV_FILE}" <<'EOF'
|
cat > "${ENV_FILE}" <<'EOF'
|
||||||
# yourchat2 environment
|
# yourchat2 environment
|
||||||
@@ -48,11 +58,11 @@ EOF
|
|||||||
chown root:root "${ENV_FILE}"
|
chown root:root "${ENV_FILE}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "[5/6] Reload and enable service ..."
|
echo "[7/7] Reload and enable service ..."
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable --now "${SERVICE_NAME}.service"
|
systemctl enable --now "${SERVICE_NAME}.service"
|
||||||
|
|
||||||
echo "[6/6] Service status ..."
|
echo "[status] Service status ..."
|
||||||
systemctl --no-pager --full status "${SERVICE_NAME}.service" || true
|
systemctl --no-pager --full status "${SERVICE_NAME}.service" || true
|
||||||
|
|
||||||
echo
|
echo
|
||||||
|
|||||||
@@ -5,15 +5,15 @@ Wants=network-online.target
|
|||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
User=torsten
|
User=tsschulz
|
||||||
Group=torsten
|
Group=tsschulz
|
||||||
WorkingDirectory=/home/torsten/Programs/yourchat2
|
WorkingDirectory=/var/lib/yourchat2
|
||||||
EnvironmentFile=-/etc/yourchat2/yourchat2.env
|
EnvironmentFile=-/etc/yourchat2/yourchat2.env
|
||||||
Environment=CHAT_WS_ADDR=0.0.0.0:1235
|
Environment=CHAT_WS_ADDR=0.0.0.0:1235
|
||||||
Environment=CHAT_TCP_ADDR=127.0.0.1:1236
|
Environment=CHAT_TCP_ADDR=127.0.0.1:1236
|
||||||
RuntimeDirectory=yourchat2
|
RuntimeDirectory=yourchat2
|
||||||
RuntimeDirectoryMode=0750
|
RuntimeDirectoryMode=0750
|
||||||
ExecStart=/home/torsten/Programs/yourchat2/target/release/yourchat2
|
ExecStart=/usr/local/bin/yourchat2
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=2
|
RestartSec=2
|
||||||
TimeoutStopSec=15
|
TimeoutStopSec=15
|
||||||
|
|||||||
Reference in New Issue
Block a user