improve(start.sh): enhance cross-platform compatibility and reliability
This commit is contained in:
69
start.sh
69
start.sh
@@ -14,17 +14,25 @@ command_exists() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Определение команды Python
|
# Определение команды Python
|
||||||
|
PYTHON_CMD=""
|
||||||
|
if command_exists python3; then
|
||||||
PYTHON_CMD="python3"
|
PYTHON_CMD="python3"
|
||||||
if ! command_exists python3; then
|
elif command_exists py; then
|
||||||
if command_exists py; then
|
|
||||||
PYTHON_CMD="py"
|
PYTHON_CMD="py"
|
||||||
|
elif command_exists python; then
|
||||||
|
PYTHON_CMD="python"
|
||||||
else
|
else
|
||||||
echo "❌ Python не найден. Установите Python 3.8+"
|
echo "❌ Python не найден. Установите Python 3.8+"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
echo "✓ Python найден: $($PYTHON_CMD --version)"
|
echo "✓ Python найден: $($PYTHON_CMD --version)"
|
||||||
|
|
||||||
|
# Проверка pip
|
||||||
|
if ! $PYTHON_CMD -m pip --version >/dev/null 2>&1; then
|
||||||
|
echo "❌ pip не найден. Установите pip"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Проверка Node.js
|
# Проверка Node.js
|
||||||
if ! command_exists node; then
|
if ! command_exists node; then
|
||||||
echo "❌ Node.js не найден. Установите Node.js 18+"
|
echo "❌ Node.js не найден. Установите Node.js 18+"
|
||||||
@@ -32,6 +40,13 @@ if ! command_exists node; then
|
|||||||
fi
|
fi
|
||||||
echo "✓ Node.js найден: $(node --version)"
|
echo "✓ Node.js найден: $(node --version)"
|
||||||
|
|
||||||
|
# Проверка npm
|
||||||
|
if ! command_exists npm; then
|
||||||
|
echo "❌ npm не найден. Установите npm"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "✓ npm найден: $(npm --version)"
|
||||||
|
|
||||||
# Создание и активация venv для бэкенда
|
# Создание и активация venv для бэкенда
|
||||||
if [ ! -d "backend/venv" ]; then
|
if [ ! -d "backend/venv" ]; then
|
||||||
echo "📦 Создание виртуального окружения Python..."
|
echo "📦 Создание виртуального окружения Python..."
|
||||||
@@ -51,6 +66,7 @@ fi
|
|||||||
|
|
||||||
# Установка зависимостей Python
|
# Установка зависимостей Python
|
||||||
echo "📦 Установка Python зависимостей..."
|
echo "📦 Установка Python зависимостей..."
|
||||||
|
pip install --quiet --upgrade pip
|
||||||
pip install --quiet -r backend/requirements.txt
|
pip install --quiet -r backend/requirements.txt
|
||||||
echo "✓ Python зависимости установлены"
|
echo "✓ Python зависимости установлены"
|
||||||
|
|
||||||
@@ -63,8 +79,38 @@ fi
|
|||||||
echo "✓ Node.js зависимости установлены"
|
echo "✓ Node.js зависимости установлены"
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
# Запуск бэкенда в фоне
|
# Определение порта для бэкенда
|
||||||
|
BACKEND_PORT=8000
|
||||||
|
FRONTEND_PORT=3000
|
||||||
|
|
||||||
|
# Проверка и освобождение портов (опционально)
|
||||||
|
if command_exists lsof; then
|
||||||
|
if lsof -i :$BACKEND_PORT >/dev/null 2>&1; then
|
||||||
|
echo "⚠️ Порт $BACKEND_PORT уже занят,Attempting to kill process..."
|
||||||
|
lsof -ti :$BACKEND_PORT | xargs kill -9 2>/dev/null || true
|
||||||
|
sleep 1
|
||||||
|
fi
|
||||||
|
if lsof -i :$FRONTEND_PORT >/dev/null 2>&1; then
|
||||||
|
echo "⚠️ Порт $FRONTEND_PORT уже занят, attempting to kill process..."
|
||||||
|
lsof -ti :$FRONTEND_PORT | xargs kill -9 2>/dev/null || true
|
||||||
|
sleep 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Удаление старой базы данных для чистого запуска (опционально)
|
||||||
|
if [ -f "backend/team_status.db" ]; then
|
||||||
|
echo "🗑️ Найдена существующая база данных, будет создана новая..."
|
||||||
|
rm backend/team_status.db
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "========================================="
|
||||||
echo "🔙 Запуск бэкенда (FastAPI)..."
|
echo "🔙 Запуск бэкенда (FastAPI)..."
|
||||||
|
echo "🎨 Запуск фронтенда (React + Vite)..."
|
||||||
|
echo "========================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Запуск бэкенда в фоне
|
||||||
cd backend
|
cd backend
|
||||||
$PYTHON_CMD main.py &
|
$PYTHON_CMD main.py &
|
||||||
BACKEND_PID=$!
|
BACKEND_PID=$!
|
||||||
@@ -74,8 +120,16 @@ cd ..
|
|||||||
echo "⏳ Ожидание запуска бэкенда..."
|
echo "⏳ Ожидание запуска бэкенда..."
|
||||||
sleep 3
|
sleep 3
|
||||||
|
|
||||||
|
# Проверка работоспособности бэкенда
|
||||||
|
if command_exists curl; then
|
||||||
|
if curl -s http://localhost:$BACKEND_PORT/api/employees >/dev/null 2>&1; then
|
||||||
|
echo "✓ Бэкенд запущен успешно"
|
||||||
|
else
|
||||||
|
echo "⚠️ Бэкенд может быть недоступен, проверьте логи"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Запуск фронтенда
|
# Запуск фронтенда
|
||||||
echo "🎨 Запуск фронтенда (React + Vite)..."
|
|
||||||
cd frontend
|
cd frontend
|
||||||
npm run dev &
|
npm run dev &
|
||||||
FRONTEND_PID=$!
|
FRONTEND_PID=$!
|
||||||
@@ -85,8 +139,9 @@ echo ""
|
|||||||
echo "========================================="
|
echo "========================================="
|
||||||
echo "✅ Приложение запущено!"
|
echo "✅ Приложение запущено!"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Бэкенд API: http://localhost:8000"
|
echo "🌐 Фронтенд: http://localhost:$FRONTEND_PORT"
|
||||||
echo "Frontend: http://localhost:3000"
|
echo "🔌 Бэкенд API: http://localhost:$BACKEND_PORT"
|
||||||
|
echo "📚 API Docs: http://localhost:$BACKEND_PORT/docs"
|
||||||
echo ""
|
echo ""
|
||||||
echo "PID бэкенда: $BACKEND_PID"
|
echo "PID бэкенда: $BACKEND_PID"
|
||||||
echo "PID фронтенда: $FRONTEND_PID"
|
echo "PID фронтенда: $FRONTEND_PID"
|
||||||
|
|||||||
Reference in New Issue
Block a user