sábado, 11 de diciembre de 2010

Instalacion de Servidor Web Apache+Mysql+PHP en Ubuntu 10.04

Instalacion de Servidor Web Apache+Mysql+PHP en Ubuntu 10.04
La instalacion se hara desde la consola ya que muchas veces es el unico medio diponible en servidores o cuando se hacen instalaciones mediante el uso de SSH.
También hay formas mas sencillas de hacerlo mediante el uso de las herramientas gráficas como pueden ser Synaptic, KPackageKit y muchas otras utilidades.
Como se menciono estos comandos son para Ubuntu así que usaremos sudo para ganar privilegios y la utilidad apt-get. El proceso es bastante sencillo y rápido desde la consola.
sudo apt-get install mysql-server-5.1 apache2 php5 php5-mysql libapache2-mod-auth-mysql
Para asegurarnos reiniciamos Mysql y Apache con los comandos
sudo /etc/init.d/apache2 restart
sudo service mysql restart
Para verificar que todo quedo bien instalado pondremos un archivo llamado info.php en la carperta /var/www/ con el siguiente contenido
phpinfo();
?>
Abrimos el navegador de internet y navegamos la URL http://127.0.0.1/info.php y deberiamos ver algo asi

Otras Formas de Instalacion
Linux Ubuntu viene con una utilidad para instalar grupos de paquetes llamada ( tasksel ) esta hace el mismo efecto que el seleccionar un grupo de paquetes durante la instalación del sistema operativo. Tasksel puede mostrarnos una lista de grupos de paquetes disponibles para instalar de serie. Entre ellos se encuentra el paquete LAMP que no es ni mas ni menos que un conjunto de paquetes que equiparan a nuestro servidor de el servidor web Apache2, servidor de bases de datos MySQL 5.1 y soporte para PHP5,Perl y Python. Vamos a instalarlo.

Como les decía Linux Ubuntu viene equipada con la utilidad para instalar grupos de paquetes llamada Tasksel. Para saber que grupos de paquetes podemos instalar tan solo tendremos que arrancar nuestro servidor, identificarnos y ejecutar lo siguiente:

tasksel --list-tasks
En la lista veremos la letra ( u ) como grupo disponible y la letra ( i ) como grupo instalado. Si nos fijamos existe un grupo llamado ( lamp-server ) y será este el que utilicemos para la instalación del servidor web de la siguiente forma:
sudo tasksel install lamp-server
El sistema comenzará a descargar los archivos necesarios desde Internet hasta llegar al siguiente paso



Aquí vamos a introducir la contraseña del súper usuario ( root ) para acceder al servidor de bases de datos MySQL. Recordemos apuntar bien esta contraseña ya que la vamos a necesitar cada vez que queramos una base de datos nueva para cualquiera cualquier palicacion que alojemos. Una vez introducida pulsamos la tecla ( Enter )

Introducimos de nuevo la misma contraseña para verificar que no nos hemos equivocado, pulsamos la tecla ( Enter ) y finalizará aquí mismo la instalación del conjunto de paquetes que forman LAMP.

Ahora desde otro ordenador que tengamos conectado a nuestra red de área local vamos a comprobar que nuestro servidor web funciona ejecutando un navegador e introduciendo la IP fija de nuestro servidor Web, en mi caso http://192.168.128.186

Como podemos ver esto es la pagina por defecto que nos ofrece el servidor web Apache para cerciorarnos de que todo ha ido bien. En nuestro disco duro esta pagina por defecto se ubica en el directorio /var/www con lo cual quiere decir que todo lo que este dentro de ese directorio puede ser visto vía web con tan solo poner nuestra IP fija ” de momento “.

Ahora que ya sabemos donde está y porque se muestran nuestros contenidos en un navegador web vamos a instalar el administrador de bases de datos MySQL llamado PhpMyAdmin. Todos los paquetes que necesitamos para poder administrar nuestras bases de datos han sido instaladas junto al grupo de paquetes lamp-server pero para administrarlas de una forma mas fácil e intuitiva vamos a instalar el interface web phpmyadmin con el que podremos hacer de todo con nuestras bases de datos pero con un entorno web y no desde la terminal simplificando aun mas nuestra tarea. Para instalarlo ejecutaremos lo siguiente:
sudo aptitude install phpmyadmin
Durante la instalación llegaremos a este punto donde tendremos que indicarle para que tipo de servidor Web queremos que adapte la instalación. En nuestro caso marcamos la opción ( Apache2 ) con la barra espaciadora y pulsamos la tecla ( Enter ).

PhpMyAdmin necesita de una base de datos para funcionar. Esta la crearemos ahora mismo seleccionando la opción ( Si ) y pulsando la tecla ( Enter )



Para crear la base de datos el sistema nos pide la contraseña que antes le indicamos para el súper usuario ( root ). Se la introducimos y pulsamos la tecla ( Enter )



Ahora la aplicación PhpMyAdmin necesita que le indiquemos una contraseña con la que podremos acceder a el. Introducimos la que mas nos guste y nos acordamos de apuntárnosla para que no se nos olvide y pulsamos la tecla ( Enter )


Le volvemos a introducir la nueva contraseña, pulsamos de nuevo la tecla ( Enter ) y con esto terminaremos la instalación de PhpMyAdmin. Ahora nos vamos a otro ordenador que tengamos conectado a la misma red local y ejecutamos un navegador con el que podremos ver el entorno de administración desde la dirección http://192.168.128.186/phpmyadmin

Servidor DNS con ubunto 10.04 y BIND9

Resultado esperado: Configurar un servidor DNS con ubunto 10.04 y Bind9

Desarrollo:

BIND es el servidor de nombres de dominio más popular en Internet, que trabaja en todas las plataformas informáticas principales y se caracteriza por su flexibilidad y seguridad.

Domain Name Service (DNS) es el servicio que resuelve los nombres de dominio asociados a una dirección IP para direccionar las peticiones a un servidor en específico. Se utiliza cuando un nodo (o host) en Internet contacta a otro mediante el nombre de domino de la máquina y no por su dirección IP.

A través de este documento se verán las generalidades del servicio de resolución de nombres, la configuración y mantenimiento de un servicio de nombres con BIND, bajo la plataforma Linux, aunque la mayoría de estos conceptos se pueden aplicar a la cualquier servicio de DNS sobre otras plataformas.

Regularmente, todos los equipos que están en Internet o una Intranet tienen una dirección IP única que las identifica, generalmente dividido en cuatro segmentos u ‘octetos’, cuya representación es, por ejemplo, ’172.29.183.217′, pero el recordar todas las direcciones en este formato sería sumamente difícil, por lo que utilizamos los nombres de dominio para referenciarlos.

Existen varios productos que realizan esta función y en todas las plataformas, pero el más usado es BIND (Berkeley Internet Name Domain), que es distribuido bajo la GNU GPL.

La estructura básica del DNS es similar a un árbol, donde se tiene una raíz o root, los Dominios de Nivel Principal (Top Level Domains) y los dominios de segundo nivel.

Los nombres de dominio completamente calificados o FQDN (fully qualified domain name) se componen por lo general del nombre del host, un nombre de dominio secundario y un nombre de dominio primario o de nivel máximo (top-level domain), que son secciones organizadas jerárquicamente.

Por ejemplo: ‘www.ejemplo.com’. Leyéndolo de derecha a izquierda tenemos un dominio primario (‘COM’), un dominio secundario (‘EJEMPLO’) y el nombre del host (‘WWW’). Algunos dominios primarios son:

org – Organizaciones no lucrativas.
com – Organizaciones lucrativas.
net – Organizaciones en Internet.
gob – Agencias gubernamentales en latinoamérica.
mx – Sufijo de México.
es – Sufijo de España.

Existen cuatro tipos diferentes de servidores de resolución de nombres:

  • Master (maestro o primario). Aloja los registros autoritarios de una zona, responde las peticiones de resolución de nombres como servidor de autoridad y delega copias a los servidores esclavo.

  • Slave (esclavo o secundario). Responde a las peticiones de resolución de nombres como servidor de autoridad, pero la información es distribuida por los servidores primarios. Se considera que como medida de seguridad, se requiere al menos uno de estos, preferentemente independiente de la infraestructura del primario (red, energia eléctrica y ubicación geográfica).

  • Caching-only (sólo de cache). Responde a las peticiones de resolución de nombres pero no es servidor de autoridad, las respuestas las guarda en memoria por un período determinado.

  • Forwarding (de reenvío). Reenvia las peticiones a una lista de servidores de nombres.

Tipos de registros.

Para ofrecer suficiente flexibilidad en la configuración, se pueden declarar diversos tipos de registros, que hacen referencia a la función del host. A continuación veremos los más importantes.

  • A (Address). Es el registro más usado, que define una dirección IP y el nombre asignado al host. Generalmente existen varios en un dominio.

  • MX (Mail eXchanger). Se usa para identificar servidores de correo, se pueden definir dos o más servidores de correo para un dominio, siendo que el orden implica su prioridad. Debe haber al menos uno para un dominio.

  • CNAME (Canonical Name). Es un alias que se asigna a un host que tiene una dirección IP valida y que responde a diversos nombres. Pueden declararse varios para un host.

  • NS (Name Server). Define los servidores de nombre principales de un dominio. Debe haber al menos uno y pueden declararse varios para un dominio.

  • SOA (Start Of Authority). Este es el primer registro de la zona y sólo puede haber uno en cada archivo de la zona y sólo está presente si el servidor es autoritario del dominio. Especifica el servidor DNS primario del dominio, la cuenta de correo del administrador y tiempo de refresco de los servidores secundarios.

Configuración

Veamos como configurar BIND9 para disponer de un servidor DNS en una intranet, que resuelva dominios internos. Por ejemplo, en la intranet se utilizaran dominios que terminen en “danielesorto.homeip.net” como “saturno.danielesorto.homeip.net” o “luna.danielesorto.homeip.net”. El servidor DNS se encargará de resolver esos dominios en sus respectivas IPs, además de resolver otros dominios de Internet como “google.com”.

Instalamos BIND9 y nos desplazamos a su directorio de configuración:

aptitude install bind9 cd /etc/bind/

Editamos named.conf.local y añadimos la zona “danielesorto.homeip.net”, haciendo referencia a su fichero de configuración:

zone "danielesorto.homeip.net" {     type master;     file "/etc/bind/db.danielesorto"; };

Creamos el fichero de configuración “db.danielesorto” a partir de “db.local”:

cp db.local db.marblestation

Editamos “db.danielesorto”, reemplazamos la palabra “localhost” por “danielesorto.homeip.net”, cambiamos la IP “127.0.0.1″ por la que queramos asignar al dominio y añadimos al final del fichero todos los A, MX y CNAME que queramos, quedando:

;

; BIND data file for local loopback interface ;
$TTL 604800
@ IN SOA danielesorto.homeip.net. root.danielesorto.homeip.net. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS danielesorto.homeip.net.
@ IN A 192.168.48.32
@ IN MX 0 danielesorto.homeip.net.
www IN A 192.168.48.32
saturno IN CNAME danielesorto.homeip.net.

En este ejemplo vemos primeramente el dominio a resolver, ‘danielesorto.homeip.net.’ y el segundo es la cuenta de correo del administrador, ‘root.danielesorto.homeip.net.’ (sustituyéndo el primer punto por arroba, lo que dejaría ‘root@danielesorto.homeip.net’). Debemos notar que al final de cada dominio viene un punto, que identifica la raíz de este. El resto de los parámetros son:

  • Serial: es un identificador del archivo, puede tener un valor arbitrario pero se recomienda que tenga la fecha con una estructura AAAA-MM-DD y un consecutivo.

  • Refresco: número de segundos que un servidor de nombres secundario debe esperar para comprobar de nuevo los valores de un registro.

  • Reintentos: número de segundos que un servidor de nombres secundario debe esperar después de un intento fallido de recuperación de datos del servidor primario.

  • Expiración: número de segundos máximo que los servidores de nombre secundarios retendrán los valores antes de expirarlos.

  • TTL mínimo: Significa Time To Live y es el número de segundos que los registros se mantienen activos en los servidores NS caché antes de volver a preguntar su valor real.

A continuación se definen los registros necesarios, cuyos tipos ya han sido explicados anteriormente en este documento.

Cada vez que se cambia la configuración de BIND9, debemos reiniciar el demonio:

/etc/init.d/bind9 restart

Para que nuestra máquina utilice el servidor de DNS que hemos configurado, debemos editar “/etc/resolv.conf” y dejamos únicamente la línea:

nameserver 127.0.0.1

Se debería hacer lo mismo con el resto de máquinas de la intranet que vayan a utilizar el servidor, con la única diferencia que habrá que substituir la IP 127.0.0.1 por la IP que tenga el servidor en la red.

Para comprobar el correcto funcionamiento, utilizamos el comando “host” el cual sirve para resolver dominios:

$ host danielesorto.homeip.net

danielesorto.homeip.net has address 192.168.48.32
danielesorto.homeip.net mail is handled by 0 danielesorto.homeip.net.

$ host saturno.danielesorto.homeip.net
saturno.danielesorto.homeip.net is an alias for danielesorto.homeip.net.
danielesorto.homeip.net has address 192.168.48.32
saturno.danielesorto.homeip.net is an alias for danielesorto.homeip.net.
saturno.danielesorto.homeip.net is an alias for danielesorto.homeip.net.
danielesorto.homeip.net mail is handled by 0 danielesorto.homeip.net.

Si deseamos también disponer de resolución de dominios inversa, es decir, que podamos preguntar por la IP “192.168.48.32″ y el servidor DNS nos diga que pertenece a marblestation.homeip.net, debemos añadir a “/etc/bind/named.conf.local”:

zone "192.in-addr.arpa" {    

type master; file "/etc/bind/db.192";
};

Creamos el archivo de configuración “/etc/bind/db.192″ a partir del “/etc/bind/db.127″:

cd /etc/bind/ cp db.127 db.192

Editamos “/etc/bind/db.192″, substituimos “localhost” por “danielesorto.homeip.net” y cambiamos la última línea:

;

; BIND reverse data file for local loopback interface ;
$TTL 604800 @ IN SOA danielesorto.homeip.net. root.danielesorto.homeip.net. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL ;
@ IN NS danielesorto.homeip.net.
32.48.168 IN PTR danielesorto.homeip.net.

De forma que, la última linea indica que la IP [192.]168.48.32 (escrita a la inversa y omitiendo el 192 que ya se especifico en “named.conf.local”) corresponde al dominio danielesorto.homeip.net.

Podemos comprobar su funcionamiento reiniciando el demonio BIND9 y realizando una consulta:

$ /etc/init.d/bind9 restart

$ host 192.168.48.32
32.48.168.192.in-addr.arpa domain name pointer danielesorto.homeip.net.