|
|
## Distribuciones derivados de Debian
|
|
|
|
|
|
Una distribución derivada de Debian es una distribución que está basada en el trabajo hecho en Debian pero que tiene sus propias metas, identidad y audiencia, y que ha sido creada por una entidad independiente de Debian. Ej: Ubuntu, Kali Linux, entre otros.
|
|
|
|
|
|
En la mayoría de los entornos de producción (y en algunos de desarrollo) instalaremos `tomcat` a partir de un paquete mediante el instalador del sistema (`apt-get`). Antes de poder comenzar a utilizar la instalación de DSpace, será necesario configurar algunos parámetros por defecto en Tomcat.
|
|
|
|
|
|
### Instalación de Tomcat
|
|
|
```bash
|
|
|
sudo apt-get install tomcat8 -y
|
|
|
```
|
|
|
> **NOTA:** en los siguientes ejemplos supondremos que la versión instalada de tomcat es `tomcat8`.
|
|
|
|
|
|
### Configuración de usuario y grupo de tomcat
|
|
|
|
|
|
Por defecto, el sistema operativo crea el usuario y grupo `tomcat8`, asociando todos los directorios utilizados por Tomcat (`/etc/tomcat8`, `/var/log/tomcat8`, etc...) al grupo y usuario `tomcat8`. Hay casos particulares donde sólo se configura el grupo como `tomcat8` y el usuario como `root` (por ejemplo el caso de `/etc/tomcat8`). En otros casos sucede al revés (por ejemplo en `/var/log/tomcat8/catalina.out`).
|
|
|
|
|
|
Supongamos que el dueño y grupo asociado al directorio de instalación de DSpace es 'user_dspace'.
|
|
|
Para que Tomcat pueda escribir sobre los logs de DSpace, será necesario **unificar** el usuario y grupo que utiliza para su funcionamiento con el usuario que utilizamos en el sistema para compilar DSpace, cambiando de `tomcat8:tomcat8` --> (A) --> `user_dspace:user_dspace`.
|
|
|
|
|
|
Para lograrlo deberemos ejecutar los siguientes comandos:
|
|
|
|
|
|
**1**- Detener el servicio de Tomcat
|
|
|
```bash
|
|
|
sudo service tomcat8 stop
|
|
|
```
|
|
|
**2**- Editar los parámetros de inicio por defecto de Tomcat para el *grupo* y *usuario*
|
|
|
```bash
|
|
|
sudo nano /etc/default/tomcat8
|
|
|
#Editar variable TOMCAT8_USER=user_dspace
|
|
|
#Editar variable TOMCAT8_GROUP=user_dspace
|
|
|
```
|
|
|
**3**- Cambiar el grupo y/o usuario donde corresponda
|
|
|
> **(!) ATENCIÓN (!)**: antes de ejecutar cualquier de los siguientes archivos, hacer una **verificación** de cuáles archivos se modificarán quitando el parámetro `-exec`.
|
|
|
|
|
|
```bash
|
|
|
#Cambiamos los archivos con grupo y usuario igual a tomcat8:tomcat8 por user_dspace:user_dspace
|
|
|
sudo find / -user tomcat8 -and -group tomcat8 -exec chown user_dspace:user_dspace {} \;
|
|
|
```
|
|
|
|
|
|
```bash
|
|
|
#Cambiamos los archivos con grupo :tomcat8 (y con usuario distinto a tomcat8) a :user_dspace
|
|
|
sudo find / -not -user tomcat8 -and -group tomcat8 -exec chown :user_dspace {} \;
|
|
|
```
|
|
|
|
|
|
```bash
|
|
|
#Cambiamos los archivos con usuario tomcat8 (y con grupo distinto a tomcat8) a user_dspace
|
|
|
sudo find / -user tomcat8 -and -not -group tomcat8 -exec chown user_dspace {} \;
|
|
|
```
|
|
|
|
|
|
**4**- Actualizar tareas de rotación y cronjobs
|
|
|
Actualizar todas las referencias al usuario:grupo **tomcat8:tomcat8** en las cronjobs definidas en el sistema (en `/etc/cron.d` por ejemplo) y las tareas de rotación de logs (en `/etc/logrotate.d/tomcat8` por ejemplo):
|
|
|
|
|
|
**En el archivo `/etc/logrotate.d/tomcat8`, PASAR DE**
|
|
|
```bash
|
|
|
/var/log/tomcat8/catalina.out {
|
|
|
copytruncate
|
|
|
weekly
|
|
|
rotate 52
|
|
|
compress
|
|
|
missingok
|
|
|
create 640 tomcat8 adm
|
|
|
}
|
|
|
```
|
|
|
|
|
|
**A ESTO**
|
|
|
```bash
|
|
|
/var/log/tomcat8/catalina.out {
|
|
|
copytruncate
|
|
|
weekly
|
|
|
rotate 52
|
|
|
compress
|
|
|
missingok
|
|
|
create 640 user_dspace adm
|
|
|
}
|
|
|
```
|
|
|
|
|
|
**5**- Reiniciamos Tomcat.
|
|
|
```bash
|
|
|
sudo service tomcat8 start
|
|
|
```
|
|
|
|
|
|
### Configuración JVM
|
|
|
#### Aumentar memoria máxima de JVM
|
|
|
|
|
|
**1**- Abrir un editor sobre el archivo `/etc/default/tomcat8`
|
|
|
```bash
|
|
|
sudo nano /etc/default/tomcat8
|
|
|
```
|
|
|
**2**- Cambiar opción [-Xmx128m](http://stackoverflow.com/a/14763095/3406552) por una mayor cantidad de memoria (por ejemplo -Xmx2048m) en la variable `JAVA_OPTS`.
|
|
|
```bash
|
|
|
#Quedando por defecto de la siguiente manera
|
|
|
JAVA_OPTS="-Djava.awt.headless=true -Xmx2048m --XX:+UseConcMarkSweepGC"
|
|
|
```
|
|
|
|
|
|
El indicador `Xmx` especifica el grupo de asignación máxima de memoria para una Maquina Virtual de Java (JVM), mientras que `Xms` especifica el grupo de asignación inicial de memoria.
|
|
|
Esto significa que nuestra JVM se iniciará con una cantidad de memoria `Xms` y podrá usar una cantidad máxima de memoria `Xmx`. Por ejemplo, una JVM podría iniciarse con 1024 MB y permitir que el proceso utilice hasta 2048 MB de memoria:
|
|
|
```bash
|
|
|
JAVA_OPTS="-Djava.awt.headless=true -Xms1024m -Xmx2048m --XX:+UseConcMarkSweepGC"
|
|
|
```
|
|
|
De igual manera, los indicadores de memoria se pueden especificar en diferentes tamaños como KiloBytes, MegaBytes, GigaBytes, etc.
|
|
|
```bash
|
|
|
JAVA_OPTS="-Djava.awt.headless=true -Xmx2g --XX:+UseConcMarkSweepGC"
|
|
|
```
|
|
|
El indicador `Xms` no tiene un valor predeterminado y `Xms`, generalmente, tiene un valor predeterminado de 256 MB. Un uso común de estos indicadores es cuando nos encontramos con el clásico error `java.lang.OutOfMemoryError`.
|
|
|
|
|
|
> **NOTA**: Tener en cuenta que la JVM usa más memoria de la que se menciona en la variable `JAVA_OPTS`, debido a los métodos de Java, las pilas de subprocesos, los indicadores nativos que se asignan en memoria separada y las estructuras de datos internos de la JVM. |