# Instalación

# Requisitos


Los siguientes requisitos definen el entorno donde el funcionamiento de ZWF está
probado.

- Sistema operativo CentOS 6, Debian 7, Debian 8, Ubuntu LTS 12.04, Fedora
  19/20.
- Servidor Apache 2 (`apache2` en caso de Debian/Ubuntu;
  `httpd` en caso de CentOS/Fedora).
- PHP 5.3 instalado como módulo de Apache.
- Extensión de PHP: `pgsql` si se va usar las funciones de ZWF de acceso
  a BD con este motor.
- Extensión de PHP: `mysqli` si se va a usar las funciones de ZWF de
  acceso a BD con este motor.
- Extensión de PHP: `mbstring`.
- Opcional: base de datos PostgreSQL 8.4 o superior o bien MySQL 5.1 o superior.

# Incompatibilidades


En algunos casos el módulo `mod_negotiation`, en concreto la
funcionalidad `MultiViews`, puede provocar problemas si ZWF va a coexistir con
otros ficheros en el mismo directorio y esos ficheros tienen el mismo nombre que
algún controlador de ZWF. En este caso puede ser necesario añadir

```
Options -MultiViews
```

al fichero de configuración de Apache en la sección `<VirtualHost>`
o análoga correspondiente donde vaya a estar alojado ZWF.

# Instalación

Descomprimir y copiar en su caso **el contenido del directorio src**
del paquete ZWF en el directorio raíz del sitio web donde se va a ejecutar la
aplicación. Este directorio suele ser el establecido por `DocumentRoot` en la
configuración de Apache, pero también puede ser un subdirectorio si es que la
aplicación se alojará allí.

ZWF no se ejecuta desde ninguna subcarpeta. Si al descomprimirlo se creó alguna
carpeta (muchos descompresores actúan así), es el contenido de dicha carpeta el
que debe ser copiado al directorio raíz del sitio web.

El resultado final será que tanto `index.php` como `.htaccess` quedarán en el
directorio raíz y, a ese mismo nivel, el resto de directorios.

El fichero `.htaccess` es un fichero oculto. A la hora de copiarlo al directorio
raíz del sitio web, podría ser omitido por el programa que hace la copia (
clientes FTP, SFTP, exploradores de archivos, etc). Hay que asegurarse de que se
copia correctamente.

# Configuración de Apache

## PHP

El módulo PHP para Apache es necesario que esté instalado y activo. Se requiere
la versión 5.3 ó superior. El módulo debe estar compilado, o bien el paquete
instalado, con la extensión **mbstring** (Multi-Byte String)
y, si se va a usar PostgreSQL usando los módulos de acceso a datos de ZWF, la
extensión **pgsql**. Análogamente, en caso de usar MySQL, instalar la
extensión **mysqli**.

## Rewrite

ZWF usa directivas del módulo `mod_rewrite` de Apache. Están definidas en el
fichero `.htaccess`. Por lo tanto es necesario que `mod_rewrite` esté instalado
y activo en Apache. En la sección `<VirtualHost>` o análoga de Apache es
necesario al menos la siguiente directiva:

```
AllowOverride FileInfo
```

También funcionará:

```
AllowOverride All
```

Esto es importante, porque a veces se tiene lo siguiente:

```
AllowOverride None
```

y en tal caso las directivas de `mod_rewrite` que hay en `.htaccess` no
funcionarán y, por lo tanto, ZWF tampoco.

# Permisos de los ficheros


No se requieren permisos especiales. Como toda aplicación web, puede ser
conveniente:

- Crear un directorio con permisos de lectura y escritura para guardar logs,
  ficheros subidos, etc.
- Los ficheros de configuración pueden tener contraseñas. En el caso de ZWF,
  estos ficheros se encuentran en el directorio `cfg/`. Estos ficheros deberían
  tener permisos únicamente de lectura y ser accesibles solo por el usuario (y
  grupo, dependiendo de la configuración que usemos) de Apache.

# Problemas habituales

Si se encuentra un error *file not found* o *index not found*, asegúrese de que
el fichero `.htaccess` existe y es el que venía con el paquete ZWF.

Si el error es *access denied*, compruebe los permisos y propietarios de los
ficheros. La instalación de Apache en Linux suele contener algún fichero de
muestra `index.html` con los permisos y propietarios correctos.

El módulo de Apache `mod_rewrite` debe estar activo. Normalmente al activarlo es
necesario reiniciar el servidor (`apache2` o `httpd`).