Package managed server for Linux production
This commit is contained in:
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
server=${1:-./VoiceCat.Server}
|
||||
work=$(mktemp -d)
|
||||
pid=
|
||||
cleanup() { if [ -n "${pid}" ] && kill -0 "$pid" 2>/dev/null; then kill -TERM "$pid"; wait "$pid" || true; fi; rm -rf "$work"; }
|
||||
trap cleanup EXIT INT TERM
|
||||
"$server" --data-dir "$work/data" --bind 127.0.0.1 --port 0 >"$work/server.log" 2>"$work/server.err" &
|
||||
pid=$!
|
||||
i=0
|
||||
while ! grep -q '"event":"ready"' "$work/server.log"; do
|
||||
if ! kill -0 "$pid" 2>/dev/null; then cat "$work/server.err" >&2; exit 1; fi
|
||||
i=$((i + 1)); [ "$i" -lt 100 ] || { echo "server readiness timeout" >&2; exit 1; }
|
||||
sleep 0.1
|
||||
done
|
||||
port=$(sed -n 's/.*"port":\([0-9][0-9]*\).*/\1/p' "$work/server.log" | head -n 1)
|
||||
fingerprint=$(sed -n 's/.*"certificate_fingerprint":"\([0-9A-F]*\)".*/\1/p' "$work/server.log" | head -n 1)
|
||||
"$server" --health-check "127.0.0.1:$port" --expect-fingerprint "$fingerprint" | grep -q '"status":"healthy"'
|
||||
[ "$(stat -c '%a' "$work/data")" = 700 ]
|
||||
kill -TERM "$pid"
|
||||
wait "$pid"
|
||||
pid=
|
||||
echo "Linux publish startup, TLS health, private data permissions and SIGTERM shutdown passed."
|
||||
Reference in New Issue
Block a user