Browse Source

modificaciones para instalacion en desarrollo con docker

main
Taller FCyT 2 months ago
parent
commit
7a1984f979
  1. 45
      docker-compose.yml
  2. 24
      docker/init.sh
  3. 69
      instalacion/alias.conf
  4. 31
      instalacion/config.php
  5. 90
      instalacion/login.php
  6. 0
      instalacion/rewrite.conf

45
docker-compose.yml

@ -1,53 +1,44 @@
services: services:
postgres: postgres:
image: bitnami/postgresql:11 image: postgres:11.6
container_name: preinscripcion_postgres container_name: preinscripcion_postgres
environment: environment:
POSTGRESQL_DATABASE: preinscripcion POSTGRES_DB: preinscripcion
POSTGRESQL_USERNAME: postgres POSTGRES_USER: postgres
POSTGRESQL_PASSWORD: postgres123 POSTGRES_PASSWORD: postgres123
POSTGRESQL_ENCODING: LATIN1 # Solo se aplican si el volumen está vacío (primera vez)
POSTGRESQL_LC_COLLATE: C POSTGRES_INITDB_ARGS: "--encoding=LATIN1 --locale=C --lc-collate=C --lc-ctype=C"
POSTGRESQL_LC_CTYPE: C
volumes: volumes:
- postgres_data:/var/lib/postgresql/data - ./postgres_data:/var/lib/postgresql/data
- ./BD/creacion/creacion_preinscripcion3_postgresql.sql:/docker-entrypoint-initdb.d/01-creacion.sql - ./BD/creacion/creacion_preinscripcion3_postgresql.sql:/docker-entrypoint-initdb.d/01-creacion.sql
- ./docker/init-db.sql:/docker-entrypoint-initdb.d/02-init.sql - ./docker/init-db.sql:/docker-entrypoint-initdb.d/02-init.sql
ports: ports:
- "5432:5432" - "7011:5432"
networks:
- preinscripcion_network
restart: unless-stopped restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB} || exit 1"]
interval: 5s
timeout: 3s
retries: 20
web: web:
build: . build: .
container_name: preinscripcion_web container_name: preinscripcion_web
depends_on: depends_on:
- postgres postgres:
condition: service_healthy
ports: ports:
- "8080:80" - "7003:80"
volumes: volumes:
- .:/var/www/html - .:/var/www/html
- ./instalacion/config.php:/var/www/html/instalacion/config.php - ./instalacion/config.php:/var/www/html/instalacion/config.php
- ./instalacion/alias.conf:/var/www/html/instalacion/alias.conf - ./instalacion/alias.conf:/var/www/html/instalacion/alias.conf
- ./instalacion/login.php:/var/www/html/instalacion/login.php - ./instalacion/login.php:/var/www/html/instalacion/login.php
- apache_logs:/var/log/apache2 - ./apache_logs:/var/log/apache2
environment: environment:
- DB_HOST=postgres - DB_HOST=postgres
- DB_PORT=5432 - DB_PORT=5432
- DB_NAME=preinscripcion - DB_NAME=postgres
- DB_USER=postgres - DB_USER=postgres
- DB_PASSWORD=postgres123 - DB_PASSWORD=postgres123
networks:
- preinscripcion_network
restart: unless-stopped restart: unless-stopped
volumes:
postgres_data:
driver: local
apache_logs:
driver: local
networks:
preinscripcion_network:
driver: bridge

24
docker/init.sh

@ -3,34 +3,26 @@ set -e
echo "Iniciando Preinscripción..." echo "Iniciando Preinscripción..."
# Esperar a que PostgreSQL esté disponible # Esperar a que PostgreSQL esté disponible (sin nc)
echo "Esperando a que PostgreSQL esté disponible..." echo "Esperando a que PostgreSQL esté disponible..."
while ! nc -z postgres 5432; do until (echo > /dev/tcp/${DB_HOST:-postgres}/${DB_PORT:-5432}) >/dev/null 2>&1; do
sleep 1 sleep 1
done done
echo "PostgreSQL está disponible" echo "PostgreSQL está disponible"
# Configurar permisos # Permisos
chown -R www-data:www-data /var/www/html chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html chmod -R 755 /var/www/html
mkdir -p /var/www/html/instalacion/{temp,log,cache}
chown -R www-data:www-data /var/www/html/instalacion/{temp,log,cache}
chmod -R 777 /var/www/html/instalacion/{temp,log,cache}
# Asegurar que los directorios de cache, log y temp existan y tengan permisos correctos # Compilar recursos si aplica
mkdir -p /var/www/html/instalacion/temp
mkdir -p /var/www/html/instalacion/log
mkdir -p /var/www/html/instalacion/cache
chown -R www-data:www-data /var/www/html/instalacion/temp
chown -R www-data:www-data /var/www/html/instalacion/log
chown -R www-data:www-data /var/www/html/instalacion/cache
chmod -R 777 /var/www/html/instalacion/temp
chmod -R 777 /var/www/html/instalacion/log
chmod -R 777 /var/www/html/instalacion/cache
# Compilar recursos si estamos en producción
if [ "$ENVIRONMENT" = "production" ]; then if [ "$ENVIRONMENT" = "production" ]; then
echo "Compilando recursos para producción..." echo "Compilando recursos para producción..."
cd /var/www/html cd /var/www/html
if [ -f "bin/preinscripcion" ]; then if [ -f "bin/preinscripcion" ]; then
./bin/preinscripcion compilar_recursos ./bin/preinscripcion compilar_recursos || true
fi fi
fi fi

69
instalacion/alias.conf

@ -1,65 +1,36 @@
# Configuración de alias para Docker - SIU-Preinscripción # Alias dentro del contenedor
# Este archivo define los puntos de acceso del sistema Alias /preinscripcion/ /var/www/html/src/siu/www/
Alias /preinscripcion_admin/ /var/www/html/src/siu/www/
# Alias del punto de acceso de ALUMNOS <Directory "/var/www/html/src/siu/www/">
Alias /preinscripcion/ c:\xampp74\htdocs\preinsc_colegio\src\siu\www\
# Alias del punto de acceso ADMINISTRADOR
Alias /preinscripcion_admin/ c:\xampp74\htdocs\preinsc_colegio\src\siu\www\
# Configuración del directorio navegable
<Directory "c:\xampp74\htdocs\preinsc_colegio\src\siu\www\">
Options FollowSymLinks Options FollowSymLinks
DirectoryIndex index.php DirectoryIndex index.php
<IfModule !mod_authz_core.c>
Order allow,deny
Allow from all
</IfModule>
<IfModule mod_authz_core.c>
Require all granted Require all granted
</IfModule> IncludeOptional /var/www/html/instalacion/rewrite.conf
include c:\xampp74\htdocs\preinsc_colegio\instalacion\rewrite.conf
</Directory> </Directory>
#### CONFIGURACION DE ACCESO DEFAULT # --- Inyección robusta de variables por Request_URI ---
# Alumno
SetEnvIfNoCase Request_URI "^/preinscripcion(/|$)" ID_PTO_ACCESO=colegio
SetEnvIfNoCase Request_URI "^/preinscripcion(/|$)" PERFIL=alumno
# IMPORTANTE: sin barra final para evitar bugs al parsear
SetEnvIfNoCase Request_URI "^/preinscripcion(/|$)" ACC_ALIAS=/preinscripcion
<Location /preinscripcion/> # Admin
# -------------------------------------------------------------------------- SetEnvIfNoCase Request_URI "^/preinscripcion_admin(/|$)" ID_PTO_ACCESO=colegio
# PUNTO DE ACCESO: alumnos de la instalación del punto de acceso default SetEnvIfNoCase Request_URI "^/preinscripcion_admin(/|$)" PERFIL=admin
# -------------------------------------------------------------------------- SetEnvIfNoCase Request_URI "^/preinscripcion_admin(/|$)" ACC_ALIAS=/preinscripcion_admin
# --- fin inyección robusta ---
# Nombre o ID del Punto de Acceso. No utilizar espacios. # (Podés mantener, si querés, los <Location> como documentación)
<Location /preinscripcion/>
SetEnv ID_PTO_ACCESO colegio SetEnv ID_PTO_ACCESO colegio
# Setea el perfil funcional de quienes acceden por este punto de acceso.
# NO MODIFICAR ESTE VALOR
SetEnv PERFIL alumno SetEnv PERFIL alumno
SetEnvIf always_match ^ ACC_ALIAS=/preinscripcion
# se setea de esta manera para que esta variable sea accesible desde mod_rewrite
# ATENCIÓN: el alias debe empezar con '/'
SetEnvIf always_match ^ ACC_ALIAS=/preinscripcion/
</Location> </Location>
<Location /preinscripcion_admin/> <Location /preinscripcion_admin/>
# --------------------------------------------------------------------------
# PUNTO DE ACCESO: admin del punto de acceso default
# --------------------------------------------------------------------------
# Nombre o ID del Punto de Acceso. No utilizar espacios.
SetEnv ID_PTO_ACCESO colegio SetEnv ID_PTO_ACCESO colegio
# Setea el perfil funcional de quienes acceden por este punto de acceso.
# NO MODIFICAR ESTE VALOR
SetEnv PERFIL admin SetEnv PERFIL admin
SetEnvIf always_match ^ ACC_ALIAS=/preinscripcion_admin
# se setea de esta manera para que esta variable sea accesible desde mod_rewrite
# ATENCIÓN: el alias debe empezar con '/'
SetEnvIf always_match ^ ACC_ALIAS=/preinscripcion_admin/
# Si se desea restringir las IP desde las cuales acceder al panel de
# administración, hacerlo aquí.
# Require ip 192.168.0.0/16
# Require ip 10.0.0.0/8
</Location> </Location>
#### FIN CONFIGURACION DE ACCESO DEFAULT

31
instalacion/config.php

@ -102,14 +102,17 @@ return [
* Configuración de servidor de correo (configuración básica) * Configuración de servidor de correo (configuración básica)
*/ */
'smtp' => [ 'smtp' => [
'from' => 'noreply@universidad.edu.ar', 'from' => 'fcyt_sistemas@uader.edu.ar',
'from_name' => 'SIU-Preinscripción', 'from_name' => 'Colegio jj urquiza',
'host' => 'localhost', 'host' => 'smtp.gmail.com',
'seguridad' => 'ssl', 'seguridad' => 'tls',
'auth' => false, 'auth' => true,
'port' => 25, 'port' => 587,
'reply_to' => 'noreply@universidad.edu.ar', 'reply_to' => 'fcyt_sistemas@uader.edu.ar',
'smtp_debug' => SMTP::DEBUG_OFF, 'smtp_debug' => SMTP::DEBUG_OFF,
'auth_type' => mail::AUTH_TYPE_USER_PASS,
'usuario' => 'fcyt_sistemas@uader.edu.ar',
'clave' => 'ndbuflrbfurnfiij',
], ],
/** /**
@ -152,7 +155,7 @@ return [
* Configuración de puntos de acceso * Configuración de puntos de acceso
*/ */
'accesos' => [ 'accesos' => [
'default' => [ 'colegio' => [
'personalizacion' => NULL, 'personalizacion' => NULL,
/** /**
@ -161,7 +164,7 @@ return [
'database' => [ 'database' => [
'vendor' => 'pgsql', 'vendor' => 'pgsql',
'dbname' => 'preinscripcion', 'dbname' => 'preinscripcion',
'host' => 'postgres', 'host' => 'preinscripcion_postgres',
'port' => '5432', 'port' => '5432',
'pdo_user' => 'postgres', 'pdo_user' => 'postgres',
'pdo_passwd' => 'postgres123', 'pdo_passwd' => 'postgres123',
@ -177,12 +180,12 @@ return [
*/ */
'database_guarani' => [ 'database_guarani' => [
'vendor' => 'pgsql', 'vendor' => 'pgsql',
'dbname' => 'gestion', 'dbname' => 'toba_3_3',
'schema' => 'public', 'schema' => 'negocio',
'host' => 'postgres', 'host' => '10.0.60.27',
'port' => '5432', 'port' => '7010',
'pdo_user' => 'postgres', 'pdo_user' => 'postgres',
'pdo_passwd' => 'postgres123', 'pdo_passwd' => 'postgres',
], ],
/** /**

90
instalacion/login.php

@ -0,0 +1,90 @@
<?php
return [
'form' => [
'activo' => (!empty($_SERVER['PERFIL'])) && ($_SERVER['PERFIL'] == 'alumno'),
'clase' => 'modelo\\autenticacion\\auth_form',
'parametros' => [
'clase_login' => "extension_kernel\\login"
]
],
'form_documento' => [
'activo' => (!empty($_SERVER['PERFIL'])) && ($_SERVER['PERFIL'] == 'alumno'),
'clase' => 'modelo\\autenticacion\\auth_form_documento',
'parametros' => [
'clase_login' => "extension_kernel\\login"
]
],
'admin' => [
'activo' => (!empty($_SERVER['PERFIL'])) && ($_SERVER['PERFIL'] == 'admin'),
'clase' => 'modelo\\autenticacion\\auth_admin',
'parametros' => [
'clase_login' => "extension_kernel\\login_admin"
]
],
'token' => [
'activo' => (!empty($_SERVER['PERFIL'])) && ($_SERVER['PERFIL'] == 'alumno'),
'clase' => 'modelo\\autenticacion\\auth_token',
'parametros' => [],
],
'cuentas_ext' => [
/**
* Si desea habilitarse alguno de los servicios de login con servicios externos,
* primero se debe establecer la siguiente directiva en true
*/
'activo' => false,
'clase' => 'modelo\\autenticacion\\auth_cuenta_ext',
'parametros' => [
'clase_login' => "extension_kernel\\login",
'proveedores' => [
'google' => [
/**
* Para habilitar el login mediante Google:
* + establecer 'activo' => true,
* + crear un proyecto en https://console.developers.google.com/
* + habilitar la Google+ API y obtener los valores de ID y secreto de cliente para completar aquí.
* + En la sección URIs de redireccionamiento completar http://<url_preinscripcion_completa>/acceso/index?auth=cuentas_ext&f=google
*/
'activo' => false,
'tipo' => 'oauth2',
'icono' => 'img/login/google.jpg',
'app_key' => 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.apps.googleusercontent.com',
'app_secret' => 'xxxxxxxxxxxxxxxxxxxxxxx',
'scope' => 'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email',
'auth_url' => 'https://accounts.google.com/o/oauth2/auth',
'acc_url' => 'https://accounts.google.com/o/oauth2/token',
'id_url' => 'https://www.googleapis.com/oauth2/v1/userinfo',
'id_path' => 'id', //de que campo saca el id
'email_path' => 'email', //de que campo saca el mail
],
'facebook' => [
/**
* Para habilitar el login mediante Facebook, establecer 'activo' => true
* y generar valores para app_key y app_secret como se explica en
* https://repositorio.siu.edu.ar/trac/Portal-G3/wiki/G2/Preinscripcion/2.9.0/DocTecnica/Instalacion/ConfigFacebook
*/
'activo' => false,
'tipo' => 'oauth2',
'icono' => 'img/login/facebook.jpg',
'app_key' => 'xxxxxxxxxxxxxxx',
'app_secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'scope' => 'email',
'auth_url' => 'https://www.facebook.com/dialog/oauth',
'acc_url' => 'https://graph.facebook.com/oauth/access_token',
'id_url' => 'https://graph.facebook.com/me',
'id_path' => 'id',
'email_path' => 'email',
],
],
],
],
];

0
instalacion/rewrite.conf

Loading…
Cancel
Save