#!/bin/bash UNIT_CONFIG="${UNIT_CONFIG-/etc/unit/nginx-unit.json}" # Also used in "nginx-unit.json" UNIT_SOCKET="/opt/unit/unit.sock" load_configuration() { MAX_WAIT=10 WAIT_COUNT=0 while [ ! -S $UNIT_SOCKET ]; do if [ $WAIT_COUNT -ge $MAX_WAIT ]; then echo "⚠️ No control socket found; configuration will not be loaded." return 1 fi WAIT_COUNT=$((WAIT_COUNT + 1)) echo "⏳ Waiting for control socket to be created... (${WAIT_COUNT}/${MAX_WAIT})" sleep 1 done # even when the control socket exists, it does not mean unit has finished initialisation # this curl call will get a reply once unit is fully launched curl --silent --output /dev/null --request GET --unix-socket $UNIT_SOCKET http://localhost/ echo "⚙️ Applying configuration from $UNIT_CONFIG" RESP_CODE=$( curl \ --silent \ --output /dev/null \ --write-out '%{http_code}' \ --request PUT \ --data-binary "@${UNIT_CONFIG}" \ --unix-socket $UNIT_SOCKET \ http://localhost/config ) if [ "$RESP_CODE" != "200" ]; then echo "⚠️ Could no load Unit configuration" kill "$(cat /opt/unit/unit.pid)" return 1 fi echo "✅ Unit configuration loaded successfully" } load_configuration & exec unitd \ --no-daemon \ --control unix:$UNIT_SOCKET \ --pid /opt/unit/unit.pid \ --log /dev/stdout \ --statedir /opt/unit/state/ \ --tmpdir /opt/unit/tmp/ \ --user unit \ --group root