File: /home/eblama1/sms.karnplayinland.com/INSTALL_es.md
# INSTRUCCIONES DE INSTALACIÓN
## RosarioSIS Student Information System
RosarioSIS es una aplicación web que depende de un servidor web, el lenguaje de script PHP y un servidor de base de datos PostgreSQL o MySQL/MariaDB.
Para que funcione RosarioSIS se debe primero tener el servidor web, PostgreSQL (o MySQL/MariaDB), y PHP (incluyendo las extensiones `pgsql`, `mysqli`, `gettext`, `intl`, `mbstring`, `gd`, `curl`, `xml` y `zip`) operativos. La implementación de aquellos varia con el sistema operativo así que está fuera del alcance de este breve documento de instalación.
RosarioSIS ha sido probado en:
- Windows 10 x86 con Apache 2.4.16, Postgres 9.3.6, y PHP 7.1.18
- macOS Monterey con Apache 2.4.54, Postgres 14.4, y PHP 8.0.21
- Ubuntu 22.04 con Apache 2.4.52, MariaDB 10.6.12, y PHP 5.6.40
- Ubuntu 22.04 con Apache 2.4.57, Postgres 14.9, y PHP 8.1.2
- Debian Bullseye con Apache 2.4.54, Postgres 13.7, MariaDB 10.5.15, y PHP 8.2.6
- Shared hosting con cPanel, nginx, Postgres 9.2, y PHP 7.2
- a traves de Mozilla Firefox y Google Chrome
- con BrowserStack para la compatibilidad de navegadores (no compatible con Internet Explorer)
Requerimientos mínimos: **PHP 5.5.9** y **PostgreSQL 8.4** o **MySQL 5.6**/MariaDB
Instrucciones de instalación:
- [**Windows**](https://gitlab.com/francoisjacquet/rosariosis/wikis/Instalar-RosarioSIS-en-Windows)
- [**Mac**](https://gitlab.com/francoisjacquet/rosariosis/-/wikis/How-to-install-RosarioSIS-on-Mac-(macOS,-OS-X)) (en inglés)
- [**cPanel**](https://gitlab.com/francoisjacquet/rosariosis/wikis/How-to-install-RosarioSIS-on-cPanel) (en inglés)
- [**Softaculous**](https://gitlab.com/francoisjacquet/rosariosis/-/wikis/How-to-install-RosarioSIS-with-Softaculous) (en inglés)
- [**Docker**](https://github.com/francoisjacquet/docker-rosariosis) (en inglés)
- **Ubuntu** (o cualquier distribución Linux basada en Debian), ver abajo
Instalar el paquete
-------------------
Descomprima el archivo de RosarioSIS, o clona el repositorio usando git en un directorio accesible con el navegador. Edita el archivo `config.inc.sample.php` para definir las variables de configuración apropiadas, y renombralo `config.inc.php`.
- `$DatabaseType` Tipo del servidor de base de datos: mysql o postgresql.
- `$DatabaseServer` Nombre o dirección IP del servidor de base de datos.
- `$DatabaseUsername` Nombre de usuario para conectarse a la base de datos.
- `$DatabasePassword` Contraseña para conectarse a la base de datos.
- `$DatabaseName` Nombre de la base de datos.
- `$DatabaseDumpPath` Camino completo hacia el utilitario de exportación de base de datos, pg_dump (PostgreSQL) o mysqldump (MySQL).
- `$wkhtmltopdfPath` Camino completo hacia el utilitario de generación de PDF, wkhtmltopdf.
- `$DefaultSyear` Año escolar por defecto. Solo cambiar después de haber corrido el programa _Transferir_.
- `$RosarioNotifyAddress` Dirección de email para las notificaciones (nuevo administrador, nuevo estudiante / usuario, nueva inscripción).
- `$RosarioLocales` Lista separada por comas de códigos de lenguajes. Ver la carpeta `locale/` para los códigos disponibles.
#### Variables opcionales
- `$DatabasePort` Número de puerto para acceder a la base de datos. Por defecto: 5432 para PostgreSQL y 3306 para MySQL.
- `$RosarioPath` Camino completo hacia la instalación de RosarioSIS.
- `$StudentPicturesPath` Camino hacia las fotos de los estudiantes.
- `$UserPicturesPath` Camino hacia las fotos de los usuarios.
- `$PortalNotesFilesPath` Camino hacia los archivos adjuntos a las notas del portal.
- `$AssignmentsFilesPath` Camino hacia los archivos de las tareas de los estudiantes.
- `$FS_IconsPath` Camino hacia los iconos del servicio de comida.
- `$FileUploadsPath` Camino hacia los archivos subidos.
- `$LocalePath` Camino hacia los lenguajes. Reinicie Apache después de cambiarlo.
- `$PNGQuantPath` Camino hacia [PNGQuant](https://pngquant.org/) (compresión de las imagenes PNG).
- `$RosarioErrorsAddress` Dirección de email para los errores (PHP fatal, base de datos, intentos de pirateo).
- `$Timezone` Zona horaria usada por la funciones de fecha y tiempo. [Listado de zonas horarias admitidas](http://php.net/manual/es/timezones.php).
- `$ETagCache` Pasar a `false` para desactivar el [caché ETag](https://es.wikipedia.org/wiki/HTTP_ETag) y desactivar el caché de sesión "privada". Ver [Sesiones y seguridad](https://secure.php.net/manual/es/session.security.php).
- `define( 'ROSARIO_POST_MAX_SIZE_LIMIT', 16 * 1024 * 1024 );` Limitar el tamaño de `$_POST` (16MB por defecto). Detalles [acá](https://gitlab.com/francoisjacquet/rosariosis/-/blob/mobile/Warehouse.php#L290).
- `define( 'ROSARIO_DEBUG', true );` Modo debug activado.
- `define( 'ROSARIO_DISABLE_ADDON_UPLOAD', true );` Desactivar el upload de complementos (módulos y plugins).
- `define( 'ROSARIO_DISABLE_ADDON_DELETE', true );` Desactivar la posibilidad de eliminar complementos (modules & plugins).
Crear la base de datos
----------------------
Ahora, está listo para configurar la base de datos de RosarioSIS. Si tiene acceso al símbolo del sistema de su servidor, abra una ventana del terminal, y sigua estas instrucciones.
Las instrucciones siguientes aplican para **PostgreSQL** (ver abajo para MySQL):
1. Entra a PostgreSQL con el usuario postgres:
```bash
server$ sudo -u postgres psql
```
2. Crea el usuario rosariosis:
```bash
postgres=# CREATE USER rosariosis_user WITH PASSWORD 'rosariosis_user_password';
```
3. Crea la base de datos rosariosis:
```bash
postgres=# CREATE DATABASE rosariosis_db WITH ENCODING 'UTF8' OWNER rosariosis_user;
```
4. Salga de PostgreSQL:
```bash
postgres=# \q
```
También, el archivo [`pg_hba.conf`](http://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html) puede ser editado para activar la conexión de usuarios con contraseña (`md5`):
```
# "local" is for Unix domain socket connections only
local all all md5
```
---------------------------------------------
Las instrucciones siguientes aplican para **MySQL** (RosarioSIS versión 10 o superior):
1. Entra a MySQL con el usuario root:
```bash
server$ sudo mysql
```
o
```bash
server$ mysql -u root -p
```
2. Permitir la creación de funciones:
```bash
mysql> SET GLOBAL log_bin_trust_function_creators=1;
```
3. Crea el usuario rosariosis:
```bash
mysql> CREATE USER 'rosariosis_user'@'localhost' IDENTIFIED BY 'rosariosis_user_password';
```
4. Crea la base de datos rosariosis:
```bash
mysql> CREATE DATABASE rosariosis_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
mysql> GRANT ALL PRIVILEGES ON rosariosis_db.* TO 'rosariosis_user'@'localhost';
```
5. Salga de MySQL:
```bash
mysql> \q
```
Instalar la base de datos
-------------------------
Para instalar la base de datos, apunte su navegador a: `http://sudominio.com/REPERTORIO_DE_INSTALACION/InstallDatabase.php`
Es todo!... ahora, apunte su navegador a: `http://sudominio.com/REPERTORIO_DE_INSTALACION/index.php`
y entra con el nombre de usuario 'admin' y la contraseña 'admin'. Con esta cuenta, podrá agregar nuevos usuarios, y modificar o suprimir los tres usuarios de ejemplo.
Problemas
---------
Para ayudarlo a detectar problemas de instalación, apunte su navegador a: `http://sudominio.com/REPERTORIO_DE_INSTALACION/diagnostic.php`
Extensiones PHP
---------------
Instrucciones de instalación para Ubuntu 22.04:
```bash
server$ sudo apt-get install php-pgsql php-mysql php-intl php-mbstring php-gd php-curl php-xml php-zip
```
php.ini
-------
Configuración PHP recomendada. Editar el archivo [`php.ini`](https://www.php.net/manual/es/ini.list.php) como sigue:
```
; Maximum time in seconds a PHP script is allowed to run
max_execution_time = 240
; Maximum accepted input variables ($_GET, $_POST)
; 4000 allows submitting lists of up to 1000 elements, each with multiple inputs
max_input_vars = 4000
; Maximum memory (RAM) allocated to a PHP script
memory_limit = 512M
; Session timeout: 1 hour
session.gc_maxlifetime = 3600
; Maximum allowed size for uploaded files
upload_max_filesize = 50M
; Must be greater than or equal to upload_max_filesize
post_max_size = 51M
```
Reiniciar PHP y Apache.
Otros lenguajes
---------------
Instrucciones de instalación para Ubuntu 22.04. Instalar el lenguaje español:
```bash
server$ sudo apt-get install language-pack-es
```
Luego reinicie el servidor.
[wkhtmltopdf](http://wkhtmltopdf.org/)
--------------------------------------
Instrucciones de instalación para Ubuntu 22.04 (jammy):
```bash
server$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
server$ sudo apt install ./wkhtmltox_0.12.6.1-2.jammy_amd64.deb
```
Definir el camino en el archivo `config.inc.php`:
`$wkhtmltopdfPath = '/usr/local/bin/wkhtmltopdf';`
Envio de email
--------------
Instrucciones de instalación para Ubuntu 22.04. Activar la función PHP `mail()`:
```bash
server$ sudo apt-get install sendmail
```
Configuración adicional
-----------------------
[Guía de Configuración Rápida](https://www.rosariosis.org/es/quick-setup-guide/)
[Asegurar RosarioSIS](https://gitlab.com/francoisjacquet/rosariosis/-/wikis/Secure-RosarioSIS)