Archivo

Archivo para octubre, 2015

OOM-Killer

sábado, 31 de octubre de 2015 Sin comentarios

En servidores con limitaciones importantes de memoria, muchas veces el sistema se queda sin memoria y el señor OOM Killer decide qué proceso tiene que matar para liberar recursos. Esto puede parecer lógico pero, en ocasiones, cuando sucede continuamente y de forma aleatoria supone un serio problema, sobretodo cuando mata el proceso de MySQL, Apache o PHP.

Es por ello que, cuando intentas indagar en la raíz del problema, te encuentras con que el kernel de Linux siempre reserva memoria para las aplicaciones que lo piden sin verificar si dispone de suficiente. Por tanto, las aplicaciones pueden llegar a pedir más memoria de la que realmente existe libre y por ello OOM Killer intentará hacer hueco.

Para cambiar este comportamiento hace falta modificar el fichero “/etc/sysctl.conf”, donde añadiremos estos dos parámetros:

vm.overcommit_memory = 2
vm.overcommit_ratio = 80

Con el primer parámetro forzaremos al kernel a no dar más de lo que existe y el segundo define el ratio con el que se calculará cuánto podrá dar a cada una de las aplicaciones.

Para más info podéis consultar la web del kernel de Linux.

Categories: GNU/Linux Tags: ,

Optimizar tablas en MySQL o MariaDB

viernes, 30 de octubre de 2015 Sin comentarios

Tienes un servidor con una gran cantidad de bases de datos y necesitas lanzar un proceso de optimización de tablas. Puedes ir una a una:

OPTIMIZE TABLE miTabla;

O hacerlo de golpe desde un terminal:

mysqlcheck -u username -p –auto-repair –optimize –all-databases

Malware en nuestro servidor web

jueves, 29 de octubre de 2015 Sin comentarios

Existe la posibilidad de que nuestro servidor se vea infectado a través de software web no actualizado o parcheado correctamente. Esto implica que, a través de una vulnerabilidad de nuestro WordPress o Prestashop, por ejemplo, nuestro servidor sea comprometido y perdamos el control sobre qué es lo que ocurre en él.

Dicho software malicioso puede estar oculto en una única línea de código (sin saltos de línea) en uno de nuestro ficheros .php o incluso en un supuesto fichero de imagen del que se hace un “innocuo” include y que es ejecutado por su dueño a través de un simple navegador web.

34yu55e

crypto-php-joomla-wordpress-1024x572

El llamado CryptoPHP que incluye un sofisticado interfaz web de control para su dueño y que encuentra hábilmente escondido puede llegar a ser un verdadero quebradero de cabeza.

¿Cuál es la mejor forma para deshacerse de ello? Pues usando Linux Malware Detect (LMD).

Lo instalamos de la siguiente forma como root:

cd /opt

wget http://www.rfxn.com/downloads/maldetect-current.tar.gz

tar -zxvf maldetect-current.tar.gz

cd maldetect-1.5/

./install.sh

Y ahora toca configurarlo:

vi /usr/local/maldetect/conf.maldet

De ese fichero de configuración quizás queramos cambiar la dirección de email y lo siguiente:

quarantine_hits=”1″

quarantine_clean=”1″

quarantine_suspend_user=”0″

Y ya sólo queda pasarlo con el siguiente comando:

maldet –scan-all /var/www/

Podremos ver el informe (que son almacenados en /usr/local/maldetect/sess/)

maldet –report 151029-0649.24301

Para poner los archivos en cuarentena y limpiarlos usaremos los siguientes comandos:

maldet -q 151029-0649.24301

maldet -n 151029-0649.24301

Y como se queda en “/etc/cron.daily/maldet”, podemos dormir un poco más tranquilos.

Categories: GNU/Linux Tags: , , , ,

Problemas de memoria en PHP

miércoles, 28 de octubre de 2015 Sin comentarios

Intentas lanzar un script en PHP y no haces más que obtener un error del siguiente estilo:

Allowed memory size of xxxxx bytes exhausted (tried to allocate xxxxxx bytes)

Has modificado todos los ficheros de la configuración de PHP habidos y por haber:

vi /etc/php5/cgi/php.ini

vi /etc/php5/cli/php.ini

vi /etc/php5/apache2/php.ini

vi /etc/php5/fpm/php.ini

Y siempre tienes puesto que el valor sea “memory_limit = 512MB” y no hay forma de que aquello tire.

Pues tras leer una contestación en la maravillosa web de StackOverflow, resulta que el valor, en vez de ser “512MB”, debería ser “536870912”. La lectura recomendada del por qué está en la web de documentación de PHP.

Categories: GNU/Linux Tags: , ,

Renombrando

martes, 27 de octubre de 2015 Sin comentarios

Si te ves en la necesidad de cambiar de nombre de dominio sin previo aviso y ves que la base de datos de tu querida web tiene la dirección web antigua por todas partes, vas a tener algo de trabajo, pero no mucho.

Primero, sería bueno echar un vistazo en PhpMyAdmin para encontrar en cuántos sitios se encuentra nuestra antigua dirección utilizando su búsqueda.

phpmyadmin

Luego, tras comprobar la barbaridad que aquello supondría hacerlo a mano, realizaremos una copia de seguridad de la base de datos con las herramientas que proporciona PhpMyAdmin y, como si de un texto cualquiera se tratase, ejecutaremos el siguiente comando:

sed -i ‘s/www.antiguadireccion.com/www.nuevadireccion.es/g’ ./backupbasedatos.sql

Y sólo tendremos que restaurar la base de datos desde ese fichero que hemos tratado con sed.

Para más info sobre el comando sed, podéis consultar la web de Bruno.

FacturaScripts

lunes, 26 de octubre de 2015 Sin comentarios

El encontrar software que se adapte a nuestras necesidades a veces resulta bastante tedioso, sin embargo hay casos que a veces nos sorprende tal búsqueda. Ese es el caso de un programa de facturación y contabilidad gratuito que encontré y que resultó ser además software libre.

Es el caso de FacturaScripts, un software realizado en PHP que nos permite tenerlo instalado en un servidor LAMP ligero tanto en local como en Internet, accesible simplemente desde un navegador web, con lo que podemos consultarlo desde casi cualquier dispositivo.

Una de las cosas que más me gustó fue su desarrollo abierto, donde tienen en cuenta las opiniones y necesidades de los usuarios y que, poco a poco, se van incorporando a la rama principal del proyecto. Pero si esto no te es suficiente, además incluye un sistema de plugins que facilita el desarrollo de nuevas funcionalidades que, gracias a la documentación, resulta relativamente sencillo si ya has tenido oportunidad de hacer cosas en PHP previamente. Y sino, siempre te quedará el catálogo de plugins donde encontrar soporte para WooCommerce y PrestaShop entre otros.

De todos modos, desde mi experiencia con el software de empresa, lo que más me preocupa muchas veces es que su desarrollo se detenga o no haya seriedad o respaldo del creador del proyecto. Por eso me suelo pasear por los foros para comprobar la actividad y tiempos de respuesta que, en este caso, no parece ser un problema, algo que a mi me da algo de seguridad.

Así que, si buscas un programa de contabilidad en el que no tengas que invertir una suma importante (o innecesaria) de dinero y que además quieres poderlo adaptar a tus necesidades sin tener que pasar por el soporte oficial de una empresa, definitivamente merece la pena probarlo.

mac

Copiando archivos desde un terminal

domingo, 25 de octubre de 2015 Sin comentarios

Cuando estamos haciendo una copia de una carpeta que contiene una cantidad considerable de ficheros y queremos saber con certeza que no ha faltado ningún fichero por copiar, podemos lanzar el siguiente comando que nos mostrará el número de ficheros en la carpeta y subcarpetas del directorio indicado:

ls -R -1 ./micarpeta/ | wc -l

Para más info y posibilidades echad un vistazo en la web de Linux Comando.

Categories: GNU/Linux Tags: ,

Liberando espacio

sábado, 24 de octubre de 2015 Sin comentarios

Cuando un sistema genera una cantidad considerable de log’s y estos no están bien administrados (logrotate), puede que a la larga vayan mermando nuestro espacio en disco. Una buena forma de encontrar cuán grande es nuestro problema es realizando una búsqueda de aquellos ficheros involucrados:

find . -type f -name “*error.log” -exec du -h {} \;

El anterior comando nos mostrará el espacio ocupado por todos aquellos ficheros “error.log” que tan abundantes son en los servidores web. Y para eliminar los ficheros que nos resulten innecesarios (por ejemplo que tengan más de 60 días de antigüedad), usaremos el siguiente comando:

find . -type f -name “*error.log” -mtime +60 -delete

 

Categories: GNU/Linux Tags: , ,