Some checks failed
CI / test-backend (pull_request) Successful in 5m30s
CI / build (pull_request) Has been skipped
CI / secret-scanning (pull_request) Has been skipped
CI / dependency-scan (pull_request) Has been skipped
CI / sast-scan (pull_request) Has been skipped
CI / lint-and-type-check (pull_request) Has been cancelled
CI / python-lint (pull_request) Has been cancelled
CI / workflow-summary (pull_request) Has been cancelled
CI / skip-ci-check (pull_request) Has been cancelled
This commit introduces a new `DEPLOYMENT_CHECKLIST.md` file that outlines the necessary steps for configuring server-specific settings after pulling from Git. It includes instructions for environment files, PM2 configuration, firewall rules, database setup, and building frontends. Additionally, it adds an example `ecosystem.config.js.example` file for PM2 configuration, providing a template for users to customize for their deployment environment. The `.gitignore` file is updated to include the new PM2 ecosystem config file.
111 lines
3.0 KiB
Bash
Executable File
111 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Start all three servers: backend, admin-frontend, and viewer-frontend
|
|
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
# Colors for output
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${BLUE}🚀 Starting all PunimTag servers...${NC}"
|
|
echo ""
|
|
|
|
# Function to cleanup on exit
|
|
cleanup() {
|
|
echo ""
|
|
echo -e "${YELLOW}Shutting down all servers...${NC}"
|
|
kill $WORKER_PID 2>/dev/null || true
|
|
kill $BACKEND_PID 2>/dev/null || true
|
|
kill $ADMIN_PID 2>/dev/null || true
|
|
kill $VIEWER_PID 2>/dev/null || true
|
|
exit
|
|
}
|
|
|
|
trap cleanup SIGINT SIGTERM
|
|
|
|
# Start backend
|
|
echo -e "${GREEN}📦 Starting backend server...${NC}"
|
|
# Use explicit Python path to avoid Cursor interception
|
|
PYTHON_BIN="/usr/bin/python3"
|
|
if [ ! -f "$PYTHON_BIN" ]; then
|
|
if command -v python3 >/dev/null 2>&1; then
|
|
PYTHON_BIN="$(which python3)"
|
|
elif command -v python >/dev/null 2>&1; then
|
|
PYTHON_BIN="$(which python)"
|
|
else
|
|
echo -e "${YELLOW}❌ Python3 not found${NC}"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [ -d "venv" ]; then
|
|
source venv/bin/activate
|
|
fi
|
|
export PYTHONPATH="$(pwd)"
|
|
|
|
# Check if Redis is running
|
|
if ! redis-cli ping > /dev/null 2>&1; then
|
|
echo -e "${YELLOW}⚠️ Redis is not running. Starting Redis...${NC}"
|
|
redis-server --daemonize yes 2>/dev/null || {
|
|
echo -e "${YELLOW}❌ Failed to start Redis. Please start it manually: redis-server${NC}"
|
|
exit 1
|
|
}
|
|
sleep 1
|
|
fi
|
|
|
|
# Start RQ worker in background
|
|
echo -e "${GREEN}🚀 Starting RQ worker...${NC}"
|
|
env PYTHONPATH="$(pwd)" "$PYTHON_BIN" -m backend.worker > /tmp/worker.log 2>&1 &
|
|
WORKER_PID=$!
|
|
|
|
# Give worker a moment to start
|
|
sleep 2
|
|
|
|
# Start FastAPI server
|
|
echo -e "${GREEN}🚀 Starting FastAPI server...${NC}"
|
|
"$PYTHON_BIN" -m uvicorn backend.app:app --host 127.0.0.1 --port 8000 --reload > /tmp/backend.log 2>&1 &
|
|
BACKEND_PID=$!
|
|
|
|
# Wait a moment for backend to start
|
|
sleep 2
|
|
|
|
# Start admin-frontend
|
|
echo -e "${GREEN}📦 Starting admin-frontend...${NC}"
|
|
cd admin-frontend
|
|
npm run dev > /tmp/admin-frontend.log 2>&1 &
|
|
ADMIN_PID=$!
|
|
cd ..
|
|
|
|
# Start viewer-frontend
|
|
echo -e "${GREEN}📦 Starting viewer-frontend...${NC}"
|
|
cd viewer-frontend
|
|
npm run dev > /tmp/viewer-frontend.log 2>&1 &
|
|
VIEWER_PID=$!
|
|
cd ..
|
|
|
|
echo ""
|
|
echo -e "${GREEN}✅ All servers started!${NC}"
|
|
echo ""
|
|
echo -e "${BLUE}📍 Server URLs:${NC}"
|
|
echo -e " Backend API: ${GREEN}http://127.0.0.1:8000${NC}"
|
|
echo -e " API Docs: ${GREEN}http://127.0.0.1:8000/docs${NC}"
|
|
echo -e " Admin Frontend: ${GREEN}http://127.0.0.1:3000${NC}"
|
|
echo -e " Viewer Frontend: ${GREEN}http://127.0.0.1:3001${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}📋 Logs:${NC}"
|
|
echo -e " Worker: ${BLUE}/tmp/worker.log${NC}"
|
|
echo -e " Backend: ${BLUE}/tmp/backend.log${NC}"
|
|
echo -e " Admin: ${BLUE}/tmp/admin-frontend.log${NC}"
|
|
echo -e " Viewer: ${BLUE}/tmp/viewer-frontend.log${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}Press Ctrl+C to stop all servers${NC}"
|
|
echo ""
|
|
|
|
# Wait for all processes
|
|
wait
|
|
|