Posts Tagged ‘Php’

Alertas SMS Gratis

Posted in Google, Php, Servidores on octubre 4th, 2009 by Itimag – 6 Comments

Me he enterado por los foros de ovh de un sistema de envío de alertas sms gratis mediante el uso de un servicio de Google: el Google Calendar.

Podemos exprimir este recurso utilizando el API de Google Calendar y darle múltiples usos. ¿Se os ocurre alguno?  En los foros de OVH se ha pensado en un sistema de monitorización de servidores.

Un usuario de OVH, Power, ha realizado un script php para recibir una alerta por sms en cuanto la carga de alguno de sus servidores supera un “load average” determinado. Otro usuario ha pedido adaptar este script para recibir alertas sms cuando alguno de sus servidores pierde la conexión a internet así que esta tarde me he puesto en ello.

El script resultante ha sido el siguiente:

<?php
/*
SMS PING 0.1 creado el 3 de Octubre 2009
web http://foros.ovh.es/showthread.php?t=5184
 
USO del script:
	1. Introducir tus datos de Google Calendar en la configuración del script.
	2. Introducir el listado de los servidores a monitorizar.
	3. Subir el script al servidor.
	4. Añadir la tarea al cron. El tiempo de ejecución dependerá de la cantidad
 de servidores a monitorizar.
 
Nota: En caso de que un servidor no responda, pasa un tiempo hasta averiguar que 
no responde y enviar el sms.
 
*/
 
// Configuración
$email = "tu_cuenta@gmail.com";
$password = "password";
 
// Lista de servidores a monitorizar. Introducir un dominio o la IP del servidor.
$ips_array = array("ks35xx1:www.google.es","ks35xx2:www.yahoo.es");  
 
// Carga librerías Zend_Gdata
ini_set('include_path', 'ZendGdata/library');
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Calendar');
 
// Conexión con Google Calendar
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; // nombre del servicio 
//de Google Calendar
$client = Zend_Gdata_ClientLogin::getHttpClient($email,$password,$service);
 
// Función para crear evento en Google Calendar
function createQuickAddEvent ($client, $quickAddText) {
  $gdataCal = new Zend_Gdata_Calendar($client);
  $event = $gdataCal->newEventEntry();
  $event->content = $gdataCal->newContent($quickAddText);
  $event->quickAdd = $gdataCal->newQuickAdd('true');
  $newEvent = $gdataCal->insertEvent($event);
}
 
function enviasms($cliente,$servidor){
	$texto = "Fallo en el servidor ".$servidor;
 
    // Hora y minuto con retardo de 2 minutos
    $hora = date("H");
    $minutos = date("i")+2;
 
    // Creación del evento en Google Calendar
    createQuickAddEvent($cliente, $texto." ".$hora.":".$minutos);
}
 
 
while(list($k,$v)=each($ips_array)){
	$datos_ip=explode(":",$v);
	if(substr($datos_ip[1],0,4)!="http"){ 
		$link = "http://".$datos_ip[1];
	}
	$churl = @fopen($link,'r'); 
	if (!$churl) {
		echo "El servidor \"".$datos_ip[0]."\" esta Offline\n";
		enviasms($client,$datos_ip[0]);
	}else{
		echo "El servidor \"".$datos_ip[0]."\" esta Online\n";
	} 
}
 
?>

El script requiere de unas librerías llamadas “Google Data Client Library Files”, las cuales incluyo en la versión descargable del script, preparada para usar. Simplemente debéis introducir activar el servicio de sms hacía vuestro teléfono en la configuración de vuestro google calendar, introducir los datos a éste en el script y añadir los servidores a monitorizar.

¿Cómo funciona el script? Lo que hace es ir comprobando que cada uno de los servidores introducidos respondan a una petición http. En caso de que no responda, se crea un evento en google calendar, el cúal nos enviará un sms a nuestro teléfono.

Se aceptan críticas y sugerencias. Espero que sea de vuestro agrado :) .

Acelera tu servidor Apache + PHP con APC (Alternate PHP Cache)

Posted in Curso Adm. Servidores, Servidores on agosto 13th, 2009 by Itimag – Be the first to comment

Intalación realizada sobre Linux Debian.

Lo primero de todo: actualizar los repositorios:

apt-get update

Ahora instalamos algunos paquetes necesarios:

apt-get install php-pear php5-dev apache2-dev apache2-prefork-dev

Instalarmos APC:

pecl install apc

Ahora que ya tenemos instalado APC, vamos a añadirlo a la configuración de apache. El siguiente comando lo hace solo:

echo "extension=apc.so" > /etc/php5/apache2/conf.d/apc.ini

Finalmente, debemos reiniciar apache:

/etc/init.d/apache2 restart

Para más información, visita php.net.

Esto es todo.

Instalando un servidor web con Apache + PHP5

Posted in Curso Adm. Servidores, Servidores on noviembre 9th, 2008 by Itimag – Be the first to comment

Continuando con el curso de administración de servidores, os voy a explicar como instalar un servidor web con apache + PHP5.

Instalamos apache:

apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

Instalamos PHP5:

apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Durante la instalación nos aparecerá una pantalla en la que se nos pedirá:

¿Quiere continuar instalando libc-client sin soporte para Maildir?

Marcamos que si.

Una vez realizada la instalación editamos el fichero /etc/apache2/mods-available/dir.conf:

nano /etc/apache2/mods-available/dir.conf

y cambiamos la linea “DirectoryIndex”:

          DirectoryIndex index.html index.htm index.shtml index.cgi
          index.php index.php3 index.pl index.xhtml

Editamos el fichero /etc/apache2/ports.conf y añadimos la linea “Listen 443”:

nano /etc/apache2/ports.conf

El fichero resultante es:

Listen 80
Listen 443

Ahora habilitamos algunos módulos de apache (SSL, rewrite, suexec, i include) mediante los siguientes comandos:

a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include

Finalmente, para que los cambios surjan efecto, recargamos la configuración de Apache:

/etc/init.d/apache2 force-reload

Ya tenemos nuestro servidor web en marcha. Ahora simplemente debemos abrir el puerto 80 en nuestro router y nuestro servidor web será accesible en internet escribiendo en el navegador nuestra ip pública.

Un saludo.