-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstart-linux.sh
executable file
·107 lines (89 loc) · 3.5 KB
/
start-linux.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/bin/bash
# Colores para mensajes
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${YELLOW}===== INICIANDO EL PROYECTO LARAVEL+ANGULAR =====${NC}"
# Verificar si Docker está instalado y en ejecución
echo -e "${YELLOW}> Verificando Docker...${NC}"
if ! command -v docker &> /dev/null; then
echo -e "${RED}Docker no está instalado. Por favor, instálalo para continuar.${NC}"
exit 1
fi
if ! docker info &> /dev/null; then
echo -e "${RED}El servicio Docker no está en ejecución. Por favor, inícalo para continuar.${NC}"
exit 1
fi
# Iniciar servicio de MySQL en Docker si no está corriendo
echo -e "${YELLOW}> Verificando contenedor MySQL...${NC}"
if ! docker ps | grep -q taskdb_mysql; then
echo -e "${YELLOW}Iniciando contenedor MySQL...${NC}"
docker run --name taskdb_mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=task_db -e MYSQL_USER=taskuser -e MYSQL_PASSWORD=taskpass -p 3306:3306 -d mysql:8.0
# Esperar a que MySQL esté listo
echo -e "${YELLOW}Esperando a que MySQL se inicie...${NC}"
sleep 10
else
echo -e "${GREEN}Contenedor MySQL ya está en ejecución.${NC}"
fi
# Iniciar el Backend (Laravel)
echo -e "${YELLOW}> Iniciando Backend (Laravel)...${NC}"
cd backend
echo -e "${YELLOW}Instalando dependencias de Composer...${NC}"
composer install --quiet
# Copiar .env si no existe
if [ ! -f .env ]; then
echo -e "${YELLOW}Creando archivo .env...${NC}"
cp .env.example .env
# Configurar la base de datos en el .env
sed -i 's/DB_HOST=.*/DB_HOST=127.0.0.1/' .env
sed -i 's/DB_PORT=.*/DB_PORT=3306/' .env
sed -i 's/DB_DATABASE=.*/DB_DATABASE=task_db/' .env
sed -i 's/DB_USERNAME=.*/DB_USERNAME=taskuser/' .env
sed -i 's/DB_PASSWORD=.*/DB_PASSWORD=taskpass/' .env
# Generar clave de la aplicación
php artisan key:generate --quiet
fi
# Ejecutar migraciones
echo -e "${YELLOW}Ejecutando migraciones de la base de datos...${NC}"
php artisan migrate --force --quiet
# Limpiar caché
echo -e "${YELLOW}Limpiando caché...${NC}"
php artisan config:clear --quiet
php artisan cache:clear --quiet
php artisan route:clear --quiet
php artisan view:clear --quiet
# Iniciar servidor Laravel en segundo plano
echo -e "${YELLOW}Iniciando servidor Laravel...${NC}"
php artisan serve --port=8001 > /dev/null 2>&1 &
LARAVEL_PID=$!
echo -e "${GREEN}Servidor Laravel iniciado en http://localhost:8001${NC}"
# Iniciar el Frontend (Angular)
echo -e "${YELLOW}> Iniciando Frontend (Angular)...${NC}"
cd ../frontend
echo -e "${YELLOW}Instalando dependencias de Node...${NC}"
npm install --quiet
# Iniciar servidor Angular en segundo plano
echo -e "${YELLOW}Iniciando servidor Angular...${NC}"
npm start > /dev/null 2>&1 &
ANGULAR_PID=$!
echo -e "${GREEN}Servidor Angular iniciado en http://localhost:4200${NC}"
# Información final
echo -e "${GREEN}===== PROYECTO INICIADO CORRECTAMENTE =====${NC}"
echo -e "${GREEN}Backend: http://localhost:8001${NC}"
echo -e "${GREEN}Frontend: http://localhost:4200${NC}"
echo -e "${YELLOW}Presiona Ctrl+C para detener los servidores...${NC}"
# Función para manejar la señal de interrupción y detener los servidores
function cleanup {
echo -e "\n${YELLOW}Deteniendo servidores...${NC}"
kill $LARAVEL_PID 2>/dev/null
kill $ANGULAR_PID 2>/dev/null
echo -e "${GREEN}¡Servidores detenidos correctamente!${NC}"
exit 0
}
# Configurar el manejador de señales
trap cleanup SIGINT
# Mantener el script en ejecución para poder usar Ctrl+C para detener los servidores
while true; do
sleep 1
done