merchant: landing-stats + helpers; demo instance note
This commit is contained in:
parent
027fb5bd5d
commit
dcbb161f20
6 changed files with 719 additions and 0 deletions
100
scripts/taler-merchant/ensure_merchant_helpers.sh
Executable file
100
scripts/taler-merchant/ensure_merchant_helpers.sh
Executable file
|
|
@ -0,0 +1,100 @@
|
|||
#!/bin/bash
|
||||
# Ensure merchant helper processes are running (no systemd).
|
||||
# Prefer run as taler-merchant-httpd; root may use runuser.
|
||||
#
|
||||
# Usage:
|
||||
# ensure_merchant_helpers.sh
|
||||
# (as root) ensure_merchant_helpers.sh # re-exec as taler-merchant-httpd
|
||||
set -euo pipefail
|
||||
|
||||
CONF="${TALER_MERCHANT_CONFIG:-/etc/taler-merchant/taler-merchant.conf}"
|
||||
LOG_DIR="${TALER_MERCHANT_LOG_DIR:-/var/log/taler-merchant}"
|
||||
|
||||
# As root: start wirewatch supervisor (needs root for runuser), then re-exec as httpd.
|
||||
if [ "$(id -un)" = "root" ]; then
|
||||
mkdir -p "$LOG_DIR"
|
||||
if [ -x /usr/local/bin/taler-merchant-wirewatch-supervise.sh ]; then
|
||||
if ! ps -eo args= 2>/dev/null | grep -q 'taler-merchant-wirewatch-supervise\.sh'; then
|
||||
echo "start: taler-merchant-wirewatch-supervise"
|
||||
nohup /usr/local/bin/taler-merchant-wirewatch-supervise.sh \
|
||||
>>"$LOG_DIR/wirewatch-supervise.nohup" 2>&1 </dev/null &
|
||||
disown 2>/dev/null || true
|
||||
else
|
||||
echo "already: taler-merchant-wirewatch-supervise"
|
||||
fi
|
||||
fi
|
||||
exec runuser -u taler-merchant-httpd -- "$0" "$@"
|
||||
fi
|
||||
|
||||
if [ "$(id -un)" != "taler-merchant-httpd" ]; then
|
||||
echo "run as taler-merchant-httpd or root" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
chmod 755 "$LOG_DIR" 2>/dev/null || true
|
||||
|
||||
# Linux COMM is 15 chars — do not use pgrep -x for taler-merchant-wirewatch etc.
|
||||
is_running() {
|
||||
local bin="$1"
|
||||
local base
|
||||
base=$(basename "$bin")
|
||||
ps -u "$(id -un)" -o args= 2>/dev/null | grep -qE "(^|/)[${base:0:1}]${base:1}( |$)" \
|
||||
|| pgrep -u "$(id -un)" -f "(^|/)(${base})( |$)" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
start_one() {
|
||||
local name="$1"
|
||||
local bin="$2"
|
||||
shift 2
|
||||
if is_running "$bin"; then
|
||||
echo "already: $name"
|
||||
return 0
|
||||
fi
|
||||
echo "start: $name"
|
||||
nohup "$bin" "$@" >>"$LOG_DIR/${name}.log" 2>&1 </dev/null &
|
||||
disown 2>/dev/null || true
|
||||
local i
|
||||
for i in 1 2 3 4 5 6; do
|
||||
sleep 0.4
|
||||
if is_running "$bin"; then
|
||||
echo " ok: $name"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
echo " FAIL: $name did not stay up (see $LOG_DIR/${name}.log)" >&2
|
||||
tail -20 "$LOG_DIR/${name}.log" 2>/dev/null || true
|
||||
return 1
|
||||
}
|
||||
|
||||
ec=0
|
||||
# Helpers needed for settlement / ops (not only httpd).
|
||||
start_one taler-merchant-webhook /usr/bin/taler-merchant-webhook || ec=1
|
||||
start_one taler-merchant-kyccheck /usr/bin/taler-merchant-kyccheck || ec=1
|
||||
# Prefer already-running supervisor (started as root above); else bare wirewatch.
|
||||
if ps -eo args= 2>/dev/null | grep -q 'taler-merchant-wirewatch-supervise\.sh'; then
|
||||
echo "already: taler-merchant-wirewatch (via supervise)"
|
||||
elif is_running /usr/bin/taler-merchant-wirewatch; then
|
||||
echo "already: taler-merchant-wirewatch"
|
||||
else
|
||||
start_one taler-merchant-wirewatch /usr/bin/taler-merchant-wirewatch \
|
||||
-c "$CONF" -L INFO || ec=1
|
||||
fi
|
||||
start_one taler-merchant-depositcheck /usr/bin/taler-merchant-depositcheck || ec=1
|
||||
start_one taler-merchant-exchangekeyupdate /usr/bin/taler-merchant-exchangekeyupdate || ec=1
|
||||
start_one taler-merchant-reconciliation /usr/bin/taler-merchant-reconciliation || ec=1
|
||||
|
||||
if ! is_running taler-merchant-httpd; then
|
||||
echo "start: taler-merchant-httpd"
|
||||
nohup /usr/bin/taler-merchant-httpd --log=info \
|
||||
>>"$LOG_DIR/taler-merchant-httpd-$(date +%Y-%m-%d).log" 2>&1 </dev/null &
|
||||
disown 2>/dev/null || true
|
||||
sleep 1
|
||||
is_running taler-merchant-httpd || ec=1
|
||||
fi
|
||||
|
||||
echo "--- live merchant ---"
|
||||
ps -eo pid,user,stat,etime,args 2>/dev/null \
|
||||
| grep taler-merchant | grep -vE 'grep| Z |ensure_merchant' || true
|
||||
|
||||
exit "$ec"
|
||||
Loading…
Add table
Add a link
Reference in a new issue