Files
ginxsom/start-fcgi.sh
2025-08-18 23:01:37 -04:00

69 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Start Ginxsom FastCGI Application
# Configuration
FCGI_BINARY="./build/ginxsom-fcgi"
SOCKET_PATH="/tmp/ginxsom-fcgi.sock"
PID_FILE="/tmp/ginxsom-fcgi.pid"
# Function to cleanup on exit
cleanup() {
echo "Cleaning up..."
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if kill -0 "$PID" 2>/dev/null; then
echo "Stopping FastCGI process $PID"
kill "$PID"
sleep 1
# Force kill if still running
if kill -0 "$PID" 2>/dev/null; then
kill -9 "$PID"
fi
fi
rm -f "$PID_FILE"
fi
rm -f "$SOCKET_PATH"
exit 0
}
# Setup signal handlers
trap cleanup SIGINT SIGTERM
# Check if binary exists
if [ ! -f "$FCGI_BINARY" ]; then
echo "Error: FastCGI binary not found at $FCGI_BINARY"
echo "Please run 'make' to build the application first"
exit 1
fi
# Clean up old socket and pid file
rm -f "$SOCKET_PATH" "$PID_FILE"
# Start the FastCGI application
echo "Starting Ginxsom FastCGI application..."
echo "Socket: $SOCKET_PATH"
echo "Binary: $FCGI_BINARY"
# Use spawn-fcgi to start the application
spawn-fcgi -s "$SOCKET_PATH" -M 666 -u "$USER" -g "$USER" -f "$FCGI_BINARY" -P "$PID_FILE"
if [ $? -eq 0 ]; then
echo "FastCGI application started successfully"
echo "PID: $(cat $PID_FILE 2>/dev/null || echo 'unknown')"
# Wait for the process to exit or be killed
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
echo "Monitoring process $PID (Press Ctrl+C to stop)"
while kill -0 "$PID" 2>/dev/null; do
sleep 1
done
echo "FastCGI process exited"
fi
else
echo "Failed to start FastCGI application"
exit 1
fi
cleanup