60 lines
1.3 KiB
Bash
Executable File
60 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
BACKEND_DIR="$ROOT_DIR/lotterLaravel"
|
|
API_URL="http://127.0.0.1:8000"
|
|
VITE_URL="http://localhost:5173"
|
|
REVERB_URL="ws://127.0.0.1:8080"
|
|
BACKEND_PORTS=(8000 8080 5173 5174)
|
|
|
|
# 只清理后端相关端口,避免影响手动启动的两个前端
|
|
stop_backend_listeners() {
|
|
local signal=$1
|
|
for port in "${BACKEND_PORTS[@]}"; do
|
|
local pids
|
|
pids=$(lsof -nP -iTCP:"$port" -sTCP:LISTEN -t 2>/dev/null || true)
|
|
if [[ -n "$pids" ]]; then
|
|
echo "Stopping backend port $port (PIDs: $pids)"
|
|
# shellcheck disable=SC2086
|
|
kill $signal $pids 2>/dev/null || true
|
|
fi
|
|
done
|
|
}
|
|
|
|
stop_backend_listeners TERM
|
|
sleep 1
|
|
stop_backend_listeners -9
|
|
|
|
pids=()
|
|
cleanup() {
|
|
trap - INT TERM EXIT
|
|
if ((${#pids[@]})); then
|
|
kill "${pids[@]}" 2>/dev/null || true
|
|
fi
|
|
}
|
|
trap cleanup INT TERM EXIT
|
|
|
|
echo "Starting backend local stack..."
|
|
echo " - Laravel API : $API_URL"
|
|
echo " - Vite assets : $VITE_URL"
|
|
echo " - Reverb WS : $REVERB_URL"
|
|
echo
|
|
|
|
echo "Starting backend (Laravel + queue + reverb + schedule + vite) …"
|
|
(
|
|
cd "$BACKEND_DIR"
|
|
composer run dev:realtime
|
|
) &
|
|
pids+=("$!")
|
|
|
|
echo
|
|
echo "Backend services are launching. Press Ctrl+C to stop them."
|
|
echo
|
|
|
|
# wait -n needs Bash 4.3+; macOS /bin/bash is 3.2
|
|
wait "${pids[@]}"
|
|
exit_code=$?
|
|
cleanup
|
|
exit "$exit_code"
|