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:
postgres:
image: bitnami/postgresql:11
image: postgres:11.6
container_name: preinscripcion_postgres
environment:
POSTGRESQL_DATABASE: preinscripcion
POSTGRESQL_USERNAME: postgres
POSTGRESQL_PASSWORD: postgres123
POSTGRESQL_ENCODING: LATIN1
POSTGRESQL_LC_COLLATE: C
POSTGRESQL_LC_CTYPE: C
POSTGRES_DB: preinscripcion
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres123
# Solo se aplican si el volumen está vacío (primera vez)
POSTGRES_INITDB_ARGS: "--encoding=LATIN1 --locale=C --lc-collate=C --lc-ctype=C"
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
- ./docker/init-db.sql:/docker-entrypoint-initdb.d/02-init.sql
ports:
- "5432:5432"
networks:
- preinscripcion_network
- "7011:5432"
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB} || exit 1"]
interval: 5s
timeout: 3s
retries: 20
web:
build: .
container_name: preinscripcion_web
depends_on:
- postgres
postgres:
condition: service_healthy
ports:
- "8080:80"
- "7003:80"
volumes:
- .:/var/www/html
- ./instalacion/config.php:/var/www/html/instalacion/config.php
- ./instalacion/alias.conf:/var/www/html/instalacion/alias.conf
- ./instalacion/login.php:/var/www/html/instalacion/login.php
- apache_logs:/var/log/apache2
- ./apache_logs:/var/log/apache2
environment:
- DB_HOST=postgres
- DB_PORT=5432
- DB_NAME=preinscripcion
- DB_NAME=postgres
- DB_USER=postgres
- DB_PASSWORD=postgres123
networks:
- preinscripcion_network
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..."
# Esperar a que PostgreSQL esté disponible
# Esperar a que PostgreSQL esté disponible (sin nc)
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
done
echo "PostgreSQL está disponible"
# Configurar permisos
# Permisos
chown -R www-data:www-data /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
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
# Compilar recursos si aplica
if [ "$ENVIRONMENT" = "production" ]; then
echo "Compilando recursos para producción..."
cd /var/www/html
if [ -f "bin/preinscripcion" ]; then
./bin/preinscripcion compilar_recursos
./bin/preinscripcion compilar_recursos || true
fi
fi

69
instalacion/alias.conf

@ -1,65 +1,36 @@
# Configuración de alias para Docker - SIU-Preinscripción
# Este archivo define los puntos de acceso del sistema
# Alias dentro del contenedor
Alias /preinscripcion/ /var/www/html/src/siu/www/
Alias /preinscripcion_admin/ /var/www/html/src/siu/www/
# Alias del punto de acceso de ALUMNOS
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\">
<Directory "/var/www/html/src/siu/www/">
Options FollowSymLinks
DirectoryIndex index.php
<IfModule !mod_authz_core.c>
Order allow,deny
Allow from all
</IfModule>
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
include c:\xampp74\htdocs\preinsc_colegio\instalacion\rewrite.conf
IncludeOptional /var/www/html/instalacion/rewrite.conf
</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/>
# --------------------------------------------------------------------------
# PUNTO DE ACCESO: alumnos de la instalación del punto de acceso default
# --------------------------------------------------------------------------
# Admin
SetEnvIfNoCase Request_URI "^/preinscripcion_admin(/|$)" ID_PTO_ACCESO=colegio
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
# Setea el perfil funcional de quienes acceden por este punto de acceso.
# NO MODIFICAR ESTE VALOR
SetEnv PERFIL alumno
# 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/
SetEnvIf always_match ^ ACC_ALIAS=/preinscripcion
</Location>
<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
# Setea el perfil funcional de quienes acceden por este punto de acceso.
# NO MODIFICAR ESTE VALOR
SetEnv PERFIL 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
SetEnvIf always_match ^ ACC_ALIAS=/preinscripcion_admin
</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)
*/
'smtp' => [
'from' => 'noreply@universidad.edu.ar',
'from_name' => 'SIU-Preinscripción',
'host' => 'localhost',
'seguridad' => 'ssl',
'auth' => false,
'port' => 25,
'reply_to' => 'noreply@universidad.edu.ar',
'from' => 'fcyt_sistemas@uader.edu.ar',
'from_name' => 'Colegio jj urquiza',
'host' => 'smtp.gmail.com',
'seguridad' => 'tls',
'auth' => true,
'port' => 587,
'reply_to' => 'fcyt_sistemas@uader.edu.ar',
'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
*/
'accesos' => [
'default' => [
'colegio' => [
'personalizacion' => NULL,
/**
@ -161,7 +164,7 @@ return [
'database' => [
'vendor' => 'pgsql',
'dbname' => 'preinscripcion',
'host' => 'postgres',
'host' => 'preinscripcion_postgres',
'port' => '5432',
'pdo_user' => 'postgres',
'pdo_passwd' => 'postgres123',
@ -177,12 +180,12 @@ return [
*/
'database_guarani' => [
'vendor' => 'pgsql',
'dbname' => 'gestion',
'schema' => 'public',
'host' => 'postgres',
'port' => '5432',
'dbname' => 'toba_3_3',
'schema' => 'negocio',
'host' => '10.0.60.27',
'port' => '7010',
'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