Saltar al contenido

Archivo

Etiqueta: php

windows-7-logo-copiaProbado en: Windows 7 Ultimate, 64 bits

Bueno… ayer instalé Windows 7 en mi máquina… y la verdad me llevo muy buenas sorpresas. No solo es más bonito :) , si no que también es rápido … eficiente… y no me ha dado problemas con la compatibilidad con programas o drivers (los drivers los he encontrado en las páginas de los fabricantes, listos para windows 7).

De hecho, admito que Windows 7 es genial :) … jaja, digo… tal vez soy linuxero, pero fuera de fanatismos burdos, creo que es un sistema operativo que tiene mucho que ofrecer … es como un XP en esteroides!

En fin, como yo utilizo mi máquina para desarrollo, me es indispensable tener Apache, PHP y MySQL :) … asi que procedí a hacer las instalaciones respectivas. De hecho, pensé que tendrías muchos problemas, como me pasó en Windows Vista … pero ésta vez, no me animé a utilizar XAMP, si no que hice las instalaciones programa por programa y todo salió bien, les platico mi procedimiento.

No entraré mucho en detalles, solo diré que pasos extra hice en Windows 7, quien ya haya instalado a estos 3 amigos en Windows XP ya estará familiarizado con el procedimiento, solo explico como hice funcionar PHP con Apache en 7, puesto que si da unos cuantos problemas.

1.- Bajar Apache … lo instalamos… todo normal.

http://httpd.apache.org/download.cgi

Versión que utilicé: apache_2.2.13-win32-x86-no_ssl.msi

Probamos: http://localhost

2.- Bajar PHP… lo instalamos … todo normal.

http://windows.php.net/download/

Versión que utilicé: PHP 5.3 (5.3.0), VC6 x86 Thread Safe (2009-Jun-30 08:52:55)

- Recordar elegir la carpeta de configuración de Apache, en mi caso: C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf

- Lo padre de la versión 5.3.0 es que ya trae seleccionadas las extensiones que me gustan (mysql, mysqli, sockets).

- La instalación no se llevará a cabo exitosamente, nos dirá que falló algo.

- Volvemos a correr el .msi y seleccionamos reparar (ésto no se si tenga un efecto verdadero, yo lo hice para la buena suerte jaja).

- Ahora si se instaló bien.

- Una vez terminado de instalar PHP, detenemos el servicio de Apache (en el tray icon).

tray

- Vamos a la carpeta de archivos de configuración de Apache y modificamos httpd.conf

Agregamos al final:

#PHP SETTINGS
LoadModule php5_module “C:/Program Files (x86)/PHP/php5apache2_2.dll”
AddType application/x-httpd-php .php
PHPIniDir “C:/Program Files (x86)/PHP”

Y agregamos index.php en la parte de indexación:

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>

- Ok, volvemos a iniciar el servidor Apache (se puede hacer del icon tray)

- Los archivos de páginas web en Apache los guardamos en: C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs

- Creamos un index.php para pruebas

3.- Bajar MySQL, lo instalamos y todo normal :)

http://dev.mysql.com/downloads/mysql/5.1.html

De MySQL, si quieren un manejador gráfico, yo recomiendo SQLyog, a mi gusto… el mejor :)

http://code.google.com/p/sqlyog/downloads/list

Otra aplicación útil para MySQL y que en lo particular me agrada mucho es el MySQL Workbench:

MySQL Workbench is a next-generation visual database design application that can be used to efficiently design, manage and document database schemata.

It is available as both, open source and commercial editions. The Community (OSS) Edition is available from this page under the free software/opensource GNU General Public License (commonly known as the “GPL”)

The Windows version requires the .Net 2.0 framework which is integrated with Windows Vista. Windows XP SP2 users need to download the framework and install it prior to MySQL Workbench.

More information about the project can be found on MySQL Products and the MySQL Workbench Developer Central site.

Lo pueden obtener de aqui: http://dev.mysql.com/downloads/workbench/5.1.html

logo

Es un protocolo utilizado para el manejo de dispositivos en redes IP y es una excelente opción para la administración de nuestra red. Una de sus grandes ventajas es que es un protocolo soportado por una gran cantidad de dispositivos (switches, routers, impresoras, sistemas Windows, sistemas UNIX, etc.) a diferencia de su predecesor, el Simple Gateway Management Protocol (SGMP), el cual sólo estaba pensado para administrar routers.

Podemos utilizar para cosas tan simples como monitorear la condición de nuestros dispositivos hasta poder tener control sobre ellos (por ejemplo, podemos dar de baja interfaces o condiciones más especificas designadas por los fabricantes del hardware).

¿Cómo funciona SNMP?

En el mundo de SNMP hay dos actores: managers y agents.

Se tiene como manager a un servidor que corra un software que pueda administrar tareas para la red, a menudo se les conoce como NMSs (Network Management Stations).

Los agents, son piezas de software que corren en los dispositivos de red que administramos, puede ser un programa separado o puede estar incorporado en el sistema operativo. La mayoría de los dispositivos IP vienen con una especie de SNMP agent.

En SNMP, tenemos que lo importante es la interacción entre estos dos actores, el agent le pasa información al manager, y éste se encarga de administrarla. De hecho el manager puede tener un rol más activo solicitando y actualizando la información del agent.

snmp

Cabe mencionar que el agent tiene una lista de objetos que lo describen (por decir, un objeto podría ser el status operacional de la interfaz de un router) y aquí es donde entran las MIBs.

Una MIB (Management Information Base ) es una base de datos que contiene información de los objetos del agente, el cual puede implementar varias MIBs, sin embargo todos los agents implementan una en particular, la cual es MIB-II y cuyo RFC es el 1213.

SNMP usa UDP (User Datagram Protocol) como su protocolo de transporte para pasar los datos entre managers y agents. La ventaja de que trabaje con UDP en vez de TCP es por la velocidad, debido a que no hay una conexión end-to-end, sin embargo por obvias razones este envío de información no es confiable (pérdida de paquetes, sin embargo no es un problema realmente), depende entonces de la aplicación SNMP el determinar si se perdieron los datagramas y retransmitirlos en todo caso (esto se logra utilizando timeouts).

SNMP usa el puerto UDP 161 para mandar y recibir requests y el puerto 162 para recibir los traps de los dispositivos administrados.

Un punto importante a tratar al hablar de SNMP es lo que se conoce como comunidades (communities) las cuales son la manera en la cual se establecen relaciones seguras (trust) entre managers y agents. A modo de resumen, una comunidad es una contraseña.

Un agent tiene tres nombres de comunidades: read-only, read-write y trap. Cada una controla una diferente actividad y va en relación a su nombre (solo lectura, lectura y escritura y recepción de notificaciones asíncronas respectivamente). Por default, tenemos que public representa a read-only y private a read-write.

Si bien tenemos que en SNMP podemos obtener información operacional sobre los dispositivos queda una pregunta, ¿cómo es representada la información en SNMP?

Cada objeto tiene tres atributos:

Nombre: El nombre o mejor dicho, el identificador del objeto (OID) el cual es único y define a cada objeto. Puede estar representado en forma numérica o en versión “human readable”.

Tipo y sintaxis: El como los datos van a ser representados y transmitidos entre managers y agents (el tipo de dato del objeto), una ventaja es que es independiente de la máquina que sea, por ejemplo, una máquina con Windows 2000 puede comunicarse con una Sun SPARC.

Encoding: Es el como los objetos son encoded y decoded.

Los objetos son organizados en un árbol jerárquico, y de hecho esta estructura es la base para el esquema de nombres en SNMP. Un OID está hecho con una serie de números enteros basados en los nodos del árbol y separados por puntos.

Como en cualquier árbol el primer nodo es la raíz y cualquier nodo con hijos es un subárbol. Cualquier nodo sin hijos a su vez es llamado nodo hoja. Cabe mencionar que solo el subárbol iso(1) del diagrama pertenece a SNMP. La representación numérica, por ejemplo, del subárbol internet(1) sería la siguiente: 1.3.6.1 y en versión “human readable”: iso.org.dod.internet . Como se puede ver cada objeto tiene un número correspondiente (OID) así como un nombre.

Información para el subárbol internet(1):

Respecto al nodo hoja directory(1), actualmente no es utilizado.

El management(2) define un estándar de administración.

Experimental(3) está reservado para pruebas e investigación.

Y en prívate(4) está reservado para que sean definidos nuevos objetos por individuos u organizaciones (para una lista de los números que se han creado de forma privada visitar: http://www.iana.org/assignments/enterprise-numbers , se anexa un documento de todas formas con ésta información).

Ahora veamos el grupo de MIB-II (definido como iso.org.dod.internet.mgmt.1 o lo que es lo mismo 1.3.6.1.2.1) representado en árbol y una lista rápida descriptiva de los objetos que lo integran (analizar el RFC 1213 respectivo a MIB-II para más información):

snmp2

¿Cómo administrar hosts?

Partiendo del hecho de que con SNMP podemos recabar información de las máquinas en nuestra red, podemos usar una rama llamada host que pertenece a MIB-II, con la cual podemos sacar información específica:

host            OBJECT IDENTIFIER ::= { mib-2 25 }
hrSystem        OBJECT IDENTIFIER ::= { host 1 }
hrStorage       OBJECT IDENTIFIER ::= { host 2 }
hrDevice        OBJECT IDENTIFIER ::= { host 3 }
hrSWRun         OBJECT IDENTIFIER ::= { host 4 }
hrSWRunPerf     OBJECT IDENTIFIER ::= { host 5 }
hrSWInstalled   OBJECT IDENTIFIER ::= { host 6 }

El OID de host es 1.3.6.1.2.1.25 (iso.org.dod.internet.mgmt.mib-2.host).

The hrSystem (1.3.6.1.2.1.25.1) información del sistema en si.

The hrDevice (1.3.6.1.2.1.25.3) and hrStorage (1.3.6.1.2.1.25.2) información de los dispositivos del host y de sus medios de almacenamiento respectivamente.

The hrSWRun (1.3.6.1.2.1.25.4), hrSWRunPerf (1.3.6.1.2.1.25.5), and hrSWInstalled (1.3.6.1.2.1.25.6 ) se refieren aspectos respectivos al software instalado en el sistema y a los procesos, etc.

En el siguiente diagrama presentamos el árbol para la rama de host en MIB-II, la razón, con la información extraida del árbol podemos obtener datos para administrar nustros hosts:

snmp3

Ok… ahora como comentario final, diré que podemos hacer nuestrar propias herramientas de administración con PHP (bueno, con otros lenguajes es posible también, pero yo me anime a hacerlo en PHP para tener una herramienta web fácil de desarrollar y administrar sin tantos líos), de hecho desarrolle un sistema para este fin, al cual le llamé junto con un amigo Free-Love Scanner y puedes encontrar más información de él (incluido más documentación y código fuente) en el siguiente link: http://www.apuntux.com/category/proyectos/free-love-scanner/

Bibliografía:

SNMP – http://es.wikipedia.org/wiki/SNMP

SNMP Tutorial-http://www.dpstele.com/layers/l2/snmp_l2_tut_part1.php

Essential SNMP, Second Edition, by Douglas R. Mauro and Kevin J. Schmidt. Copyright 2005 O’Reilly Media, Inc., 0-596-00840-6

logoQue tal, en estos dias me di el tiempo para trabajar sobre algo que se me hizo interesante… geolocalización de IP. Me daba curiosidad como algunas páginas podían determinar la ubicación de alguien por su IP e investigando me topé con MaxMind. Bueno, pues quise documentar el proceso y se los paso a ver si les sirve o les interesa.

El fin del documento es al final poder hacer una página que “geolocalice” una IP y que meta los datos en Google Maps. Anexo también los archivos de la página para que la prueben en sus servidores, cualquier duda la pueden comentar en esta entrada, salu2!.

Ejemplo del programa corriendo en mi servidor:

http://www.apuntux.com/geo/geoAvanzado.php

Descargar tutorial:

http://www.mediafire.com/file/ykn30wmy1jy/Geolocalizacion.pdf

Descargar archivos del programa:

http://www.mediafire.com/file/ounjytlm2hm/geo.zip