Fred808 commited on
Commit
5b0c352
·
verified ·
1 Parent(s): b772e78

Upload 32 files

Browse files
Files changed (1) hide show
  1. src/server.sh +28 -7
src/server.sh CHANGED
@@ -46,16 +46,37 @@ if [[ "${WEB:-}" != [Nn]* ]]; then
46
  fi
47
 
48
  # Start webserver
49
- # Ensure nginx has a writable PID file: prefer /run/nginx.pid, otherwise use /run/shm/nginx.pid
 
50
  mkdir -p /run /run/shm
51
- PID_FILE="/run/nginx.pid"
52
- if ! touch "$PID_FILE" 2>/dev/null || [ ! -w "$PID_FILE" ]; then
53
- PID_FILE="/run/shm/nginx.pid"
54
- mkdir -p "$(dirname "$PID_FILE")"
 
55
  touch "$PID_FILE" 2>/dev/null || true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  fi
57
- info "Starting nginx with pid file: $PID_FILE"
58
- nginx -g "pid $PID_FILE;" -e stderr
59
 
60
  # Start websocket server — write logs to /run/shm (writable in non-root mode)
61
  mkdir -p /run/shm
 
46
  fi
47
 
48
  # Start webserver
49
+ # Prefer using pid directive from /etc/nginx/nginx.conf if present to avoid
50
+ # duplicate-pid errors when passing -g. Otherwise fall back to passing -g.
51
  mkdir -p /run /run/shm
52
+ CONF_PID=$(sed -n 's/^[[:space:]]*pid[[:space:]]\+\([^;]*\);.*/\1/p' /etc/nginx/nginx.conf 2>/dev/null | tr -d '"' | head -n1 || true)
53
+
54
+ if [ -n "$CONF_PID" ]; then
55
+ PID_FILE="$CONF_PID"
56
+ mkdir -p "$(dirname "$PID_FILE")" 2>/dev/null || true
57
  touch "$PID_FILE" 2>/dev/null || true
58
+ if [ -w "$PID_FILE" ] 2>/dev/null; then
59
+ info "Starting nginx (using pid from config): $PID_FILE"
60
+ nginx -e stderr
61
+ else
62
+ # If we can't write the config-specified pid, try to create a fallback
63
+ PID_FILE="/run/shm/nginx.pid"
64
+ mkdir -p "$(dirname "$PID_FILE")" 2>/dev/null || true
65
+ touch "$PID_FILE" 2>/dev/null || true
66
+ info "Config pid $CONF_PID not writable, starting nginx with fallback pid: $PID_FILE"
67
+ nginx -g "pid $PID_FILE;" -e stderr
68
+ fi
69
+ else
70
+ # No pid directive in config: use runtime-chosen pid file
71
+ PID_FILE="/run/nginx.pid"
72
+ if ! touch "$PID_FILE" 2>/dev/null || [ ! -w "$PID_FILE" ] 2>/dev/null; then
73
+ PID_FILE="/run/shm/nginx.pid"
74
+ mkdir -p "$(dirname "$PID_FILE")" 2>/dev/null || true
75
+ touch "$PID_FILE" 2>/dev/null || true
76
+ fi
77
+ info "Starting nginx with pid file: $PID_FILE"
78
+ nginx -g "pid $PID_FILE;" -e stderr
79
  fi
 
 
80
 
81
  # Start websocket server — write logs to /run/shm (writable in non-root mode)
82
  mkdir -p /run/shm