Cambiar ruta de temporales PHP y de los log o bitácoras de apache2 y mail
En un servidor web con alta demanda y donde los usuarios suben muchos archivos adjuntos, es normal que los log suban mucho de tamaño. Cuando están subiendo muchos archivos, PHP usa como directorio temporal /tmp/requestdir y este puede llegar medir varios GB como en mi caso, y como mi partición raíz no es muy grande, me vi en la necesidad de mover todo lo que creía mucho en cuanto a temporales (/tmp) y bitácoras (/var/log). Mis logs de Apache2 y Mail crecían mucho por el alto tráfico, por lo que también los moví a otra partición con mas espacio.
El proceso siguiente, aplica para Ubuntu y Debian, aunque en mi caso lo hice en un Ubuntu 18.04.
Cambiar ruta (path) de los archivos upload temporales de PHP
Todo archivo que adjunta el usuario y lo sube a nuestro sitio web, por defecto PHP lo guarda el directorio temporal /tmp/requestdir y cuando se quedan procesos rotos, estos no se liberan y consumen espacio hasta que se reinicia el servicio o el servidor.
Cambiar el lugar donde se guardarán los archivos temporales de PHP:
sudo nano /etc/php/7.X/apache2/php.ini
... ; Temporales generales: sys_temp_dir = "/TURUTA/tmp" ... ; Temporales de archivos subidos: upload_tmp_dir = "/TURUTA/tmp" ... ; Si usas SOAP: soap.wsdl_cache_dir="/TURUTA/tmp" ... ; Si usas OpCache; opcache.lockfile_path=/TURUTA/tmp ...
Después de cambiar las rutas, para que se apliquen, solo debes de reiniciar el servicio de Apache2, pero que no se te olvide crear el nuevo directorio:
sudo mkdir /TURUTA/tmp sudo chmod 777 /TURUTA/tmp sudo service apache2 restart
Caso Moodle:
Si usas Moodle y tienes este problema, como en mi caso, en lugar de modificar el php.ini podrás cambiar la configuración de tu instancia Moodle (creo que a partir de la v3.8) para agregar la variable ‘localrequestdir‘, será mas fácil de hacerlo. Editar el archivo config.php
sudo nano /var/www/tu-moodle/config.php
... $CFG->localrequestdir = '/TURUTA/tmp'; // Intended for local only temporary files. The defaults uses sys_get_temp_dir(). ...
Cambiar ruta (path) de los log de apache2
Para cambiar la ruta donde se guardarán los archivos log de un sitio virtual de Apache en un Ubuntu/Debian, deberás hacer en el archivo de configuración del sitio.
sudo nano /etc/apache2/sites-enabled/TUSITIO.conf
... # Original: #ErrorLog ${APACHE_LOG_DIR}/aulas/error.log #CustomLog ${APACHE_LOG_DIR}/aulas/access.log combined # Cambio: ErrorLog /var/TURUTA/log/apache2/SITIO/error.log CustomLog /var/TURUTA/log/apache2/SITIO/access.log combined ...
Antes de continuar, no olviden crear el directorio donde estarán sus nuevos los logs ( ejemplo: sudo mkdir /var/TURUTA/log/apache2) y se recomienda mover los existentes a la nueva ruta, por ejemplo: sudo mv /var/log/apache2/SITIO /var/TURUTA/log/apache2/
sudo service apache2 restart
Cambiar ruta (path) de los log del correo
En Ubuntu 18.04 o mayor, los archivos de logs del correo están en /var/log/mail.log y /var/log/mail.err y para cambiar la ruta tenemos que editar el siguiente archivo:
sudo nano /etc/rsyslog.d/50-default.conf
... #mail.* -/var/log/mail.log mail.* -/var/TURUTA/log/mail.log ... #mail.err /var/log/mail.err mail.err /var/TURUTA/log/mail.err ...
Antes de continuar, no olviden crear el directorio donde estarán sus nuevos los logs ( ejemplo: sudo mkdir /var/TURUTA/log) y se recomienda mover los existentes a la nueva ruta, por ejemplo: sudo mv /var/log/mail.* /var/TURUTA/log/
Tenemos que reiniciar el servicio de rsyslog, quien es el que controla dichos log:
sudo service rsyslog restart