No space left on device: mod_rewrite… Solución para servidor web Apache

servidor apache

servidor apache

En alguna ocasión me he topado con que al reiniciar Apache después de matar todos los procesos con killall -9 httpd el servidor Apache no quiere arrancar, Apache start [FALLA], dando en el log el error de más arriba. Se trata de que Apache no ha liberado recursos del sistema y debemos hacerlo nosotros. En concreto se trata de semáforos. Linux tiene dos comandos que me ayudan a hacer esto (ipcs e ipcrm). Por si acaso antes vamos a eliminar los procesos zoombie:

Ver procesos zoombie:

# ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]’

Matar procesos zoombie (tardará un poco):

# kill -HUP `ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]’ | awk ‘{print $2}’`

Este es el error al reiniciar o arrancar Apache:

[crit] (28) No space left on device: mod_rewrite: could not create rewrite_log_lock Configuration Failed

Solución:

Revisar los semáforos de Apache

# ipcs -s | grep apache

Eliminamos todos los semáforos de los procesos de Apache

# ipcs -s | grep apache | perl -e ‘while () { @a=split(/\s+/); print `ipcrm sem $a[1]`}’

Iniciar Apache

# service httpd start

Script de Nautilus para compartir cualquier directorio en Internet con Ubuntu

Comparte cualquier directorio en Internet en 10 segundos solo con Nautilus y un Script

Hasta el momento la forma mas fácil de compartir archivos en Internet con todo el mundo es usando algún servicio de compartición o sincronización de archivos, tales como Ubuntu One, Dropbox, Wingedbox, etc.

Pero el usuario de Gnome-Look hardball ha subido a Gnome-Look un script que hace lo mismo que cualquiera de estos servicios pero directamente desde tu equipo y en unos cuantos segundos, permitiéndote compartir todo lo que quieras con el que quieras por el puerto :8000 de tu equipo.
El script te permite incluso compartir directorios montados con gvfs, como los directorios de Windows, y lo única dependencia que necesita para funcionar es Zenity.

Comparte cualquier directorio en Internet en 10 segundos solo con Nautilus y un Script

Otro punto a favor de este script seria el mantener todos tus datos dentro de tu propio equipo, mas que nada en estos días donde la privacidad cumple un papel tan importante y donde incluso el concepto de los servicios en la nube se pone a prueba por el lanzamiento de Google Chrome OS.

Ahora para instalar el script solo debes descargarlo desde Gnome-Look – share-http-here, darle permisos de ejecución, copiarlo al directorio ~/.gnome2/nautilus-scripts/ y reiniciar Nautilus para poder acceder a este desde el menú contextual Scripts del directorio que desees compartir.

Comparte cualquier directorio en Internet en 10 segundos solo con Nautilus y un Script

También puedes ejecutar los siguientes comandos en la terminal para instalarlo de forma mas sencilla:

wget http://gnome-look.org/CONTENT/content-files/136489-share-http-here chmod +x ./136489-share-http-here mv 136489-share-http-here ~/.gnome2/nautilus-scripts/share-http-here nautilus -q 

Comparte cualquier directorio en Internet en 10 segundos solo con Nautilus y un Script

Nota: es posible que tengas que modificar el script en caso de tener conexión por medio de WiFi en lugar de cableada. Para esto solo tienes que reemplazar eth0 por wlan0 dentro del script.

Nueva herramienta SEO para analizar una web al detalle

Mi nueva herramienta SEO para analizar una o tantas webs como querramos , se trata de yourSEOtools.net, ofrece mucha información sobre un sitio web, sin necesidad de gastar un centimo… no hay que registarse para poder acceder a todas las herramientas seo que ofrece la web, esta en Inglés pero weno para los que conocemos el Spanglish es fácil. Pues nada amigos¡¡¡¡ espero que entreis y la useis, si veis algún fallo decirmelo en este post, un saludo¡¡

URLs estáticas y agradables para cualquier aplicación web

La idea de este artículo es mostrar un sencillo ejemplo de cómo hacer que los links de nuestras aplicaciones web sean “bonitos”, algo así como los que podemos utilizar con WordPress. De tal manera no tendríamos links como estos:

http://www.sitio.com/index.php?accion=consultar&objetivo=personas

Sino algo estéticamente más agradable como:

http://www.sitio.com/personas/

¿Qué necesito?

Es necesario tener en cuenta los prerrequisitos para poder hacer esto. Para este ejemplo voy a suponer que la aplicación la estás haciendo sobre el servidor Apache, y que estás programando en PHP+MySQL. Necesitas:

  • Manejar la mayor parte del trabajo con el archivo index.php. Esto más que un requisito es un consejo. Cuando estés desarrollando aplicaciones en PHP es recomendable que la mayor parte del sistema tenga que ser procesado inicialmente por este archivo, el cual se encargará de manejar todas las peticiones y utilizar los módulos que se necesiten. Esto, por supuesto, NO quiere decir que TODO el código vaya dentro del archivo index.php; una buena práctica es separar el código en módulos y llamarlos con funciones como include o require.
  • Es necesario tener instalado el mod_rewrite, el cual se utilizará desde un archivo .htaccess. El ModRewrite es un módulo para Apache que por lo general se configura (definir reglas) en el archivo httpd.conf, pero es posible poner una configuración ModRewrite en cualquier directorio de nuestro servidor web dentro del archivo .htaccess.
  • Puesto que de acuerdo al string que pasemos en la URL se debe determinar qué hacer, es necesario hacer algo de esto:
    • Hacer que dentro de la base de datos la llave primaria de la tabla a consultar sea una cadena de texto, ó
    • Hacer otro campo en la tabla de MySQL aparte de la llave primaria

Ejemplo

Para nuestro ejemplo necesitamos un servidor Apache con ModRewrite, PHP y MySQL. Lo primero es crear la base de datos, así:

Continuar leyendo «URLs estáticas y agradables para cualquier aplicación web»

Bloquear visitas procedentes de un sitio web (Referrer Block)

Suele pasar a veces que hay links de spammers hacia tu web que no has puesto tu o vienen de sitios webs de sospechosa procedencia y no nos interesan esas visitas. Pueden ser sitios de spam, foros de spammers, sitios porno, o simplemente webs de las que no quieres recibir visitantes.

Para bloquear los visitantes procedentes de estos sitios webs, es necesario agregar unas pocas líneas en tu archivo .Htaccess

# spam_ref variable definida
SetEnvIfNoCase Referer "^ http:// (www.)? Refferer.com Sitio" spam_ref = 1
SetEnvIfNoCase Referer "^ http:// (www.)? Otra-site.com" spam_ref = 1
SetEnvIfNoCase Referer "^ palabra-incluido-en-dirección-url" spam_ref = 1
# bloquear todo el conjunto en spam_ref
<FilesMatch "(.*)">
Orden allow, deny
Dejar de todas las
Deny from env = spam_ref
</ FilesMatch>

«#»Añadido delante de las líneas. Htaccess, cancelar la línea. Digamos que una línea informativa.

SetEnvIfNoCase Referer "^ palabra-incluido-en-dirección-url" spam_ref = 1

Esto bloquea la línea de todos los sitios que contengan la URL, pon tu palabra, por ejemplo:

SetEnvIfNoCase Referer "^ adulto" spam_ref = 1

La línea anterior bloquear todos los sitios que contengan referencia «adulto»En la URL. adult123.com, adult.ro, 210391adult.net.

Esta es otra forma de bloquear SPAM en formularios, foros, comentarios …