Archive for Enero, 2006

Instalar mysql en CentOS

Domingo, Enero 29th, 2006

Siguiendo en la línea de pequeñas guias para poner a punto nuestro servidor casero, hoy le toca a MySQL.

No entraré en detalle sobre las características de MySQL, para eso lo mejor es visitar la web oficial, simplemente comentar que se trata de unos de los motores de bases de datos open source más populares de la actualidad. Es uno de los componentes principales de la plataforma LAMP, así que si queremos montar alguna aplicación PHP, blog, etc. seguro que nos hará falta, así que, sin más dilaciones…

Tomamos como escenario de partida el descrito en el artículo anterior, servidor Linux con CentOS. La versión “oficial” de MySQL en CentOS 4 es la 4.1.12 , no es la última versión (la 5) pero nos sirve para la mayoría de casos, y al tratarse de un paquete oficial en la distribución es más fácil de configurarlo posteriormente, así que ya nos va bien.

La instalación y posterior configuración la realizaremos en modo comando, por tanto nos conectamos a nuestro servidor vía ssh, o bien si hemos abierto una sesión local abrimos una ventana de terminal.

Instalación

Lo primero es ver como se llaman los paquetes a instalar, para ello usaremos up2date:

up2date --whatprovides=mysql

Que nos devuelve:

mysql-4.1.12-3.RHEL4.1

Este paquete proporciona los programas cliente, y a nosotros nos interesa el servidor así que probamos con:

up2date --whatprovides=mysql-server

Que nos muestra:

mysql-server-4.1.12-3.RHEL4.1

Ya tenemos la información que necesitabamos, vamos a instalar el paquete del servidor, y dejaremos que up2date se encargue de resolver las dependencias:

up2date mysql-server

up2date mysql-server

Como vemos en la captura anterior, up2date ya se encarga de descargar e instalar otros paquetes necesarios, ahora sólo tenemos que preocuparnos de los ajustes finales:

Arrancar el servicio

Tecleamos:

service mysqld start

Para arrancar el servicio. Si todo va bien el sistema nos mostrará un OK.

Establecer la contraseña del usuario root

Por defecto, el usuario root no tiene asignada una contraseña y esto no es nada recomendable, así que vamos a establecer una. Utilizamos el comando:

mysqladmin -u root password 'loquesea'

Cambiar ‘loquesea’ por la contraseña que desemos establecer, pero es importante no olvidarse de teclear las comillas simples.

Comprobamos la nueva contraseña abriendo una sesión en mysql:

mysql -u root -p

Nos pedirá la contraseña, la tecleamos, y si todo es correcto entraremos en la interfaz del cliente de MySQL, podemos teclear algún comando de mysql para interactuar con el servidor, por ejemplo:

mysql> show databases;

Nos mostrará las bases de datos que existan en el servidor, normalmente y si acabamos de instalar, aparecerán las bases de datos mysql y test.

Tecleamos exit para salir del programa cliente.

Configurar el servicio

Lo habitual será que cuando arranque o se pare nuestro servidor tambien se inicie o detenga el MySQL, para ello existe una forma muy fácil:

chkconfig --level 35 mysqld on

Esto activa el demonio mysqld en los runlevel 3 y 5, y lo detiene en el resto. Si queremos comprobar el estado del servicio podemos utilizar lo siguiente:

chkconfig --list mysqld

Y con esto finalizamos la instalación de MySQL en nuestro servidor. Espero que esta guía sea de utilidad.

Montar un servidor web casero (Parte y II)

Domingo, Enero 15th, 2006

Ver la primera parte de este artículo.

Bueno, ya tenemos nuestro servidor instalado, y hemos configurado nuestro router para que el “mundo mundial” pueda llegar a nuestra máquina, hemos hecho la parte más difícil, vamos ahora a por unos detalles que nos facilitan la vida:

Servicio DNS dinámico

Es mucho más cómodo encontrar nuestra máquina usando http://miservidor.dominio.com que tener que memorizar una dirección IP, y que además puede cambiar en cualquier momento. Por esto y por si no eres de los pocos afortunados que tienen una dirección IP fija, necesitas los servicios de un DNS dinámico.

Existen varios servicios de este tipo en Internet, uno de los más populares y el que vamos a utilizar en esta guía es dyndns.com. Además de ofrecer otros productos típicos de cualquier ISP, la gente de DynDNS, nos permite disponer gratuitamente de un servicio de DNS dinámico. Para ello, lo primero que tenemos que hacer es registrarnos y crearnos una cuenta, este primer paso es completamente grátis y suficiente para nuestras necesidades.

En el proceso de registro, nos pedirá un nombre de usuario y dirección de correo, es muy importante que facilitemos una dirección de correo válida, porque será en esta dirección donde nos llegarán los avisos de expiración de registro, veremos más adelante que significa esto.

De momento, si ya tenemos nuestro usuario y nos hemos identificado correctamente, debemos ir a My Services:

My Services

Dentro de esta sección administramos los servicios que nos ofrece DynDNS, vamos a la opción en el menú izquierdo My Hosts > Dynamic DNS. Hacemos clic en el enlace Add Host para crear un nombre para nuestro servidor, en este formulario, hay información importante que debemos comentar:

Formulario Add Host

En el campo hostname, introduciremos el nombre que queramos darle a nuestra máquina, hay que tener en cuenta que nuestro nombre de host irá sobre unos dominios de segundo nivel que DynDNS pone a nuestra disposición, por ejemplo: homeip.org, homelinux.net, etc.

Por tanto, escogeremos el dominio que más nos guste del desplegable y pondremos el nombre para nuestra máquina. En el campo IP address aparecerá informada la dirección IP externa con la que estamos saliendo a Internet, la dejamos informada y pulsamos el botón Add Host. Si tenemos suerte y nuestro nombre + dominio escogido no ha sido registrado por alguien antes, ya tendremos creado un nombre de host que direcciona a nuestro servidor de casita. Si el nombre ya existe, paciencia e ir probando combinaciones con otros dominios u otros nombres.

Bueno, pues ya tenemos un nombre para nuestro servidor, ahora para probarlo debemos intentar navegar desde fuera de nuestra LAN, o pedirle a algún coleguilla que intente acceder via http a nuestro host. Si intentamos acceder a nuestro nombre de servidor desde nuestra red privada no podremos llegar al servidor web con la dirección externa, si queremos ver nuestra web debemos utilizar la dirección interna, según nuestro ejemplo 192.168.1.15

Actualizar automáticamente nuestra IP dinámica

Vale, ya tenemos el nombre de servidor y se supone que podemos acceder, ¿Qué pasa si cambia la dirección con la que salimos a internet?
Pues sencillamente que se nos desmonta el invento, a no ser que vayamos de nuevo a nuestro panel de control del DynDNS y actualicemos la IP en nuestro host. Evidentemente, hacer esto manualmente no es la solución, así que recurrimos a la utilidad ddclient.

ddclient es una utilidad escrita en Perl, que nos permite automatizar los cambios de IP en los registros de DynDNS. Podemos configurar ddclient para que periodicamente compruebe si nuestra IP externa ha cambiado y envíe los cambios al servidor de DynDNS.

Afortunadamente, diría que ddclient está disponible para la mayoría de distribuciones de linux, así que sea cual sea nuestra distro, seguro que no tendremos dificultades en localizarlo. En nuestro ejemplo utilizamos un servidor CentOS 4.2 así que buscaremos un rpm para Red Hat Enterprise Linux 4. Lo bajamos de aquí, concretamente nos bajamos la versión 3.6.7 a nuestro servidor web. Desde una consola como usuario root, instalamos ddclient:

rpm -i ddclient-3.6.7-1.2.el4.rf.noarch.rpm

Ahora vamos a configurarlo, editamos el fichero /etc/ddclient/ddclient.conf. El fichero tiene un montón de posibles opciones comentadas, detallo las imprescindibles para que la cosa funcione:


# Muy importante retocar esta variable,
# si chequeamos muy a menudo
# nuestro servidor, la gente de DynDNS
# nos bloqueará el servicio por abusones
# un buen valor es cada hora 60 * 60 = 3600 segundos
daemon=3600
protocol=dyndns2


# Esta opcion obtiene
# automáticamente nuestra ip externa
use=web, web=checkip.dyndns.org


# Estos son los valores utilizados
# en la autenticación
server=members.dyndns.org
login=ponaquituusuariodedyndns
password=pontupassworddedyndns


# A continuación especificamos el nombre
# de nuestro host que hayamos
# registrado en DynDNS
nombredehost.dominio

Guardamos el archivo con nuestros cambios, y configuramos ddclient como daemon para que automáticamente realice las comprobaciones:

chkconfig --level 345 ddclient on

Y arrancamos el servicio:

service ddclient start

Para saber si la cosa ha ido bien, lo más rápido es consultar el log del sistema, si hacemos un:

tail /var/log/messages

Deberiamos ver algo parecido a esto:

Jan 15 19:15:10 hydra ddclient: Iniciación de ddclient succeeded
Jan 15 19:15:12 hydra ddclient[8034]: SUCCESS: updating hydra.dynalias.org: nochg: No update required; unnecessary attempts to change to the current address are considered abusive

Bueno, y con esto damos por finalizamos nuestro briconsejo de hoy. Espero que esta guía sea de vuestra ayuda.

Montar un servidor web casero (Parte I)

Domingo, Enero 15th, 2006

Hoy en día, practicamente cualquiera puede disponer de un alojamiento web de calidad a unos precios muy asequibles. Sin embargo, los ISP en la mayoría de los casos, no permiten instalar cualquier tipo de software, o por ejemplo, en el caso de Java la oferta de proveedores no es muy amplia que digamos.

Ahí es donde podemos sacar partido a nuestra conexión ADSL para montar un servidor en nuestra casa que pueda ser accesible por cualquiera que esté conectado a Internet. Evidentemente, no podremos tener una disponibilidad de servicio de 24×7, pero seguro que nos permitirá hacer nuestros experimentos caseros sin ninguna limitación.

Esta guía no es muy exhaustiva, pero el escenario de partida es bastante habitual:

Esquema de una típica red local casera

Si tienes una conexión a Internet mediante un router ADSL, tu red se parecerá bastante al esquema anterior, y si no has pagado a tu proveedor para tener una IP pública fija, atento a lo que viene a continuación.
Los pasos a seguir en lineas generales se resumen en:

  • Instalar el servidor
  • Configurar NAT en el router
  • Disponer de un servicio de DNS
  • Actualizar automáticamente nuestra dirección externa

En este primer artículo, trataremos brevemente los dos primeros puntos.

Instalar el servidor

No voy a detallar aquí el proceso de intalación de un servidor linux, hay un montón de material disponible en Internet, simplemente detallaré la configuración escogida en mi caso.
Para nuestro servidor casero, hemos instalado un CentOS 4.2 con una configuración de servidor típica. Y hemos desactivando otros servicios innecesarios, por ejemplo la compartición de archivos Windows (servidor SAMBA).
Una vez finalizada la instalación realizamos los típicos ajustes:

  • Actualizar el sistema con up2date -u, ver este artículo anterior
  • Configuramos el firewall de la máquina con system-config-securitylevel, debemos permitir el tráfico en el puerto 80 (http) como mínimo
  • Asignamos una IP fija del rango de nuestra LAN, por ejemplo: 192.168.1.15

Una vez listo esto, comprobamos que la salida a internet desde nuestro servidor es correcta y todo funciona como si se tratara de un cliente normal y corriente. Ahora vamos a por el router.

Configuración del router

Debemos configurar nuestro router para que reenvie el tráfico entrante de un puerto determinado a la dirección interna que nos interese. En pocas palabras, y tomando como ejemplo el esquema de red anterior, si queremos hacer “visible” nuestro servidor web, debemos configurar el router para que el tráfico entrante sobre el puerto 80 (http) sea redirigido o mapeado hacia la IP interna 192.168.1.15

Los pasos a seguir dependerán del modelo de router que tengamos, en Internet existen varios sitios donde poder obtener información detallada. Un buen sitio con muchísima información es: ADSL Ayuda, aquí hay información detallada para la mayoría de modelos de router que se comercializan en España. Por ejemplo, podeis encontrar una explicación más detallada sobre el mapeo de puertos, o una guía para el router que tengo en casa.

Ver la segunda parte de este artículo.