20
Montando un servidor web casero: Debian + Apache Bernux

Servidorweb casero

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Servidorweb casero

Montando un servidor web casero: Debian + Apache

Bernux

Page 2: Servidorweb casero

ÍNDICEIntroducción ................................................................................................................................1

¿Que se necesita para montar un servidor web? .................................................................1Antes de comenzar. ...............................................................................................................3

Instalando y configurando servidor web.....................................................................................4Instalando Apache2................................................................................................................4Configurar Apache2................................................................................................................4

El dominio....................................................................................................................................6Obteniendo nuestro dominio...................................................................................................6

Dominio gratuito con DynDns.............................................................................................6Dominio gratuito con No-ip.................................................................................................8

Otras configuraciones.................................................................................................................9Dirección IP estática...............................................................................................................9Configurando clientes DynDns y/o No-ip..............................................................................10

Cliente DynDns (ddclient).................................................................................................11Cliente No-ip (noip2).........................................................................................................14

Abrir y redireccionar puertos.................................................................................................17

Page 3: Servidorweb casero

Montando un servidor web casero: Debian + Apache

Introducción

En este tutorial veremos como montar un servidor web casero con Debian y Apache, lo que se pretende es que

al final del tutorial podamos tener un sitio web que pueda ser accesible desde cualquier parte del mundo y haber

visto algunas configuraciones básicas o comunes en Apache, todo esto sin gastar un solo centavo.

Este tutorial esta orientado a personas que no tienen idea de como montar un servidor web y que conocen poco

acerca de los conceptos relacionados a redes y servidores. Además, está basado en mis experiencias al

momento de aprender, así que siempre existirá documentación oficial que puede ayudarnos más.

Para este tutorial necesitaremos:

• Una PC o laptop con Debian que será el servidor.

• Una conexión a internet, de preferencia a través de un modem/router.

• Configurar algunas cuentas y dominios gratuitos (se verá más adelante).

¿Que se necesita para montar un servidor web?

Antes de comenzar de lleno con lo práctico veamos un poco de lo necesario para montar un servidor web.

Hosting: Se refiere al servicio de almacenamiento, es decir, el lugar donde va a estar alojado el contenido que

se mostrará a los visitantes. Actualmente hay muchas empresas que dan un servicio de hosting, esto quiere

decir que las empresas de este ramo rentan un pequeño espacio en sus servidores para poner contenidos web.

Pero cualquier computadora puede servir para crear un servidor web, así que en este caso nuestro "hosting"

será una computadora en nuestra casa.

Dominio: Un nombre de dominio es un nombre que se asocia a una computadora o conjunto de computadoras,

es decir, una red. Esto sirve para que los contenidos de un servidor o de una red puedan ser accesibles de

manera fácil, por ejemplo para acceder a Google simplemente escribimos en nuestro browser http://google.com,

que es el nombre de dominio de Google y no tenemos que escribir una dirección IP (http://74.125.45.100/) que

es más difícil de recordar y manipular.

En este tutorial usaremos un dominio gratuito que ofrecen servicios como DynDNS o No-ip, mas adelante

profundizaremos en el tema.

Servicio DNS: Para que un dominio pase de ser local a universal, es decir, que pueda ser reconocido por todos

los servidores en internet, se requiere un servicio de DNS. Si el hosting es por parte de una empresa,

Page 4: Servidorweb casero

generalmente ellos nos proporcionan las direcciones y nombres de DNS, y en nuestros dominios registrados

podremos cambiar las direcciones de DNS desde el panel de configuración de la empresa que registra el

dominio.

Software servidor: Es el software que servirá como servidor web, es decir, el software que manejará y

presentará las páginas en HTML y todo el contenido y peticiones que se puedan llevar a cabo por medio de

HTTTP. En este caso usaremos Apache.

Direcciones IP: Para un servidor web se requiere de manera básica, una IP pública que es la que proporciona la

conectividad a internet y una IP privada para el servidor, que será la dirección final a donde llegarán las

peticiones.

Algunos links que informan de manera más detallada los conceptos anteriores:

• http://es.wikipedia.org/wiki/Alojamiento_web

• http://es.wikipedia.org/wiki/Direcci%C3%B3n_IP

• http://es.wikipedia.org/wiki/Servidor_web

• http://www.dcc.uchile.cl/~jpiquer/Internet/DNS/node2.html

Page 5: Servidorweb casero

Antes de comenzar.

Primero que nada tendremos que ver como están nuestras conexiones físicas. En este caso será muy simple,

una computadora conectada a un modem/router el cual está conectado a la linea telefónica la cual nos provee

de internet.

El modem/router del tutorial tiene un servidor de DHCP de rango

192.168.0.11-192.168.0.254 con máscara 255.255.255.0, el cual sirve para asignarles dirección ip a los nuevas

computadoras que se conectan a el.

La dirección ip del modem/router es la 192.168.0.1

La computadora que servirá de servidor tendrá la dirección 192.168.0.10 con máscara 255.255.255.0.

Los DNS serán los del ISP, en este caso Telmex.

Y un diagrama sencillo es este:

Page 6: Servidorweb casero

Instalando y configurando servidor web

Instalando Apache2.

Lo primero que haremos es que localmente instalaremos y configuraremos Apache.

$sudo aptitude install apache2

Y en caso de que lo que vayamos a poner en el sitio web utilice Php o una base de datos como Mysql o

Postgresql debemos instalar algunos paquetes más:

libapache2-mod-auth-BASE

php5

php5-BASE

Donde "BASE" es el nombre del DBMS (Data Base Management System) como mysql o pgsql (Postgres) y en

general los módulos y paquetes que se vayan necesitando.

Todos los paquetes de apache los podemos ver así:

$aptitude search apache2

Configurar Apache2.

Una vez que se tiene instalado el servidor web Apache, si tecleamos "localhost" sin las comillas en nuestro

browser accederemos al contenido del servidor, que se encuentra por defecto en la carpeta /var/www/.

La primera vez que accedamos a Apache aparecerá un mensaje "It works", indicándonos que quedó bien

instalado. No es muy práctico ni recomendable que esta ruta sea la que se va a usar, para esto la vamos a

cambiar, esto se logra editando el archivo /etc/apache2/sites-enabled/000-default

Una vez abierto se deben cambiar las siguientes líneas dentro de <VirtualHost>:

DocumentRoot /Dir/de/apache

<Directory /Dir/de/apache>

Donde "/Dir/de/apache" será el directorio que se abrirá por defecto al entrar a localhost, este puede ser

cualquier directorio en el sistema, como por ejemplo una carpeta llamada www/ dentro de nuestro /home.

Page 7: Servidorweb casero

Tipicamente un servidor web para un dominio quedaría asi:

<VirtualHost *:80>

ServerAdmin webmaster@localhost #Email del webmaster

ServerName midominio.com #O el dominio que se vaya a configurar

DocumentRoot /Dir/de/apache #Directorio con el contenido del servidor

<Directory /Dir/de/apache/>

Options Indexes FollowSymLinks MultiViews

AllowOverride All

Order allow,deny

allow from all

</Directory>

LogLevel warn

CustomLog /var/log/apache2/access.log combined

</VirtualHost>

Reiniciamos el servicio de apache:

$sudo /etc/init.d/apache2 restart

Ahora todo el contenido que queramos que aparezca en la web debemos colocarlo dentro de la carpeta

anteriormente establecida. Para ver si está funcionando, crearemos un archivo llamado "index.html" dentro de "/

Dir/de/apache" con el siguiente contenido:

<html>

<head>

<title>Prueba Apache2</title>

</head>

<body>

Hola!!. Esta es una prueba de apache2 que salió bien =D

</body>

</html>

Guardamos, cerramos y entramos a http://localhost desde el browser, si funciona veremos el contenido de la

página.

A partir de ahora somos libres de colocar el contenido que se necesite para que funcione como una aplicación

Page 8: Servidorweb casero

web, un foro, nuestro blog, etc.

Hasta este momento tenemos un servidor Apache2 instalado localmente, es decir, solo nosotros podemos verlo

tecleando http://localhost o http://127.0.0.1 en el browser, el siguiente paso es obtener un dominio.

El dominio

Obteniendo nuestro dominio.

En esta parte obtendremos un dominio para que podamos ser vistos desde internet, es decir que cuando

alguien escriba "midominio.com" en su navegador pueda acceder a nuestra computadora y más en específico

al contenido gestionado por Apache.

Por desgracia, en este tutorial usaremos un dominio gratuito, es decir que no tenemos la libertad de escoger si

es .com o .mx etc., sino que se nos proporcionará una lista de dominios al estilo dyndns.org, homelinux.com

etc. y nosotros antepondremos el nombre que queramos, quedando el dominio asi:

midominio.homelinux.com ó midominio.dyndns.org

Esta es la desventaja de un dominio gratuito, ya que no se tiene la libertad de escoger un nombre "decente" o

más "serio", pero para conocer como es el proceso nos queda bien.

Si por otro lado, estuviéramos contratando un hosting y comprando y registrando un dominio, en este caso si

podríamos elegir midominio.com o midominio.com.mx siempre y cuando nadie lo haya ocupado antes.

Sitios como DynDns o No-ip se dedican a proveer servicios de DNS a "particulares" es decir, nosotros en este

caso, y aquí es donde obtendremos nuestro dominio y los servicios necesarios para montar nuestro servidor.

Antes hay que aclarar que no es necesario usar los dos servicios. He incluido las configuraciones para los dos

ya que DynDns y NoIp son los más usados en estas configuraciones, pero solo usaremos un servicio, el que

ustedes elijan.

Dominio gratuito con DynDns.

Primero iremos a http://www.dyndns.com y crearemos una cuenta gratuita, ya que este creada y activada

iremos a la sección My hosts:

Page 9: Servidorweb casero

Y dentro damos clic en "Add new host" y rellenaremos el formulario:

Page 10: Servidorweb casero

Hostname: Aquí debemos ingresar el nombre de dominio por ejemplo, crearemos "midominio" y en la lista de la

derecha seleccionamos "homelinux.com" quedando como midominio.homelinux.com.

Service type: Dejamos la selección por defecto (Host with IP address), que creará un host que resuelve una ip

dinámica.

IP address: Podemos dar click en el link que dice "Your current location's IP address is xxx.xxx.xxx.xxx"

para que el campo se rellene con la IP pública que tenemos actualmente.

Seguimos con el siguiente paso y nos pondrá el "carro de compras" y nos marcará la cantidad de 0, damos

siguiente y tendremos nuestro dominio activo.

Para verificar los dominios existentes y características podemos ir a la sección "My hosts" y editar las

preferencias.

Dominio gratuito con No-ip.

Entramos a http://www.no-ip.com/ nos registramos y nos logueamos, ya dentro crearemos, como en DynDns

un host.

Vamos a la sección "Add host" y llenamos el formulario. Veremos que es similar a DynDns:

• Debemos especificar el nombre del host, que vendrá siendo nuestro dominio.

• Seleccionar para este caso "DNS Host (A)" en Host Type.

Page 11: Servidorweb casero

Y básicamente es eso. Damos click en "Create host" y una vez añadido, tendremos la lista de nuestros hosts

que podremos usar como dominios para nuestro servidor.

Dominio en archivo Hosts (Opcional).

Una vez que creamos el dominio podemos agregarlo localmente a nuestro servidor, esto se logra editando el

archivo /etc/hosts y generalmente donde esté indicada la dirección 127.0.0.1 o 127.0.1.1 indicaremos los

nombres locales de la computadora.

Si es la primera vez que tocamos este archivo veremos una configuración similar:

127.0.1.1 usuario-desktop localhost

Solo debemos agregar al final de la linea nuestro dominio para que quede así:

127.0.1.1 usuario-desktop localhost midominio.homelinux.com otrosdominios.com

Guardamos, cerramos y si tecleamos en el browser http://midominio.homelinux.com veremos el mismo

contenido que cuando escribíamos http://localhost pero ¡OJO!, esto sigue siendo localmente, todavía no

podemos verlo desde internet.

Otras configuraciones

Dirección IP estática

Es turno de poner una dirección IP estática (en caso de que nuestra IP sea asignada mediante DHCP) a

nuestro servidor. Esto es porque cuando configuremos los clientes de dyndns o no-ip y al abrir los puertos del

modem/router requerirá de preferencia, una misma dirección IP privada (más adelante se explican los detalles).

Para poner una ip estática editaremos el archivo /etc/network/interfaces y cambiaremos este contenido o

similar:

#Interfaz eth0 (cableada)

auto eth0

iface eth0 inet dhcp

por este otro:

#Interfaz eth0 (cableada)

auto eth0

iface eth0 inet static

Page 12: Servidorweb casero

address 192.168.0.10 #La ip del servidor web (que será estática)

broadcast 192.168.0.255

netmask 255.255.255.0

gateway 192.168.0.1 #nuestro router

nameserver 192.168.0.1 #En dns dejaremos nuestro router (porque el router ya tiene configurado como

resolver nombres), pero estos se pueden cambiar si se tienen algunos como OpenDNS o los de nuestro

ISP

Y a continuación reiniciamos los servicios:

$sudo /etc/init.d/networking restart

NOTA: Hay que recordar que si las direcciones ip las genera un servidor DHCP, ya sea en una computadora,

un router etc. habrá que sacar la IP estática del servidor web del DHCP para evitar que otra computadora llegue

a tomar la ip que sera la del servidor.

Configurando clientes DynDns y/o No-ip.

En la mayoría de los hogares y con la mayoría de ISPs, una suscripción "casera" asigna una IP pública

dinámica cada determinado tiempo, es decir, que cada cierto tiempo se renueva nuestra IP que proporciona

conexión a internet y nunca es la misma, así que aquí surge un problema ya que, tenemos nuestro servidor,

nuestro dominio, si escribimos en un browser la IP pública, estaríamos viendo el contenido del servidor web,

pero el problema es que cada cierto tiempo esa dirección cambiaría y si el día de hoy tenemos una dirección, el

día de mañana será otra distinta, es decir, es como si nos estuviéramos mudando diario de casa y las

peticiones fueran los recibos de luz, agua, paquetes de entrega, correo, pizzas etc.

Para solucionar este problema configuramos un dominio en DynDns o No-ip, con esto ya podemos escribir

http://midominio.homelinux.org y acceder al servidor, pero el problema de la IP pública dinámica sigue, ya

que hasta este momento nuestro servicio DNS no sabe que IP tenemos. Para esto existe software cliente que

se instala y configura en el servidor con el objetivo de enviar información al servicio DNS cada determinado

tiempo con nuestra IP pública actual y de esta manera el servicio DNS actualiza la IP y la relaciona con el

dominio configurado, y con esto tenemos nuestro dominio accesible desde cualquier parte en cualquier

momento.

Page 13: Servidorweb casero

Cliente DynDns (ddclient).

El primer paso es instalar el paquete ddclient en nuestro servidor:

$sudo aptitude install ddclient

Durante la instalación aparecerán varios campos a llenar:

Primero seleccionamos el servicio de DNS dinámico, en este caso www.dyndns.com

Page 14: Servidorweb casero

Ahora hay que introducir nuestros hosts o dominios creados previamente en la página de DynDns

(midominio.homelinux.com)

Después introduciremos el usuario y password de nuestra cuenta de DynDns (con la que nos logueamos en la

página).

En el último paso de la configuración nos pide la interfaz que usará el servicio de DynDns. Para este particular

caso dejaremos en blanco el campo y seguimos. Una vez que se instaló ddclient vamos a editar el archivo /etc/

ddclient.conf y donde dice:

use=if, if=

lo cambiaremos por

use=web, web=checkip.dyndns.com/, web-skip='IP Address'

Guardamos y cerramos el archivo. Esto lo hicimos para decir que la detección de la actualización de la ip

pública correrá a cargo de "checkip.dyndns.com".

En otros casos se podría usar "if" en vez de "web" e indicar una interfaz preferentemente wan, o la interfaz que

contenga la dirección ip pública, en este caso usamos “web” porque en nuestro servidor la interfaz eth0 es la

única que tenemos cerca y no controla la ip pública, sino la ip de la LAN.

Page 15: Servidorweb casero

Ahora editaremos el archivo /etc/default/ddclient y cambiamos run_daemon para que quede asi:

run_daemon="true"

y opcionalmente podemos cambiar el tiempo de actualización (en segundos) en la línea:

daemon_interval="300"

Reiniciamos el servicio ddclient:

$sudo /etc/init.d/ddclient restart

Hasta este momento la dirección ip pública se actualiza automáticamente.

Usando herramienta de configuración de DynDns.

NOTA: En ocasiones, la configuración que da ddclient por defecto no funciona, para una mejor configuración

podemos usar la herramienta de actualización de DynDns, la cual genera un archivo de configuración básico y

funcional para nuestros dominios. Si la configuración que hace la instalación de ddclient no genera problemas

puede ignorarse esta sección.

Para acceder se puede ir al sitio https://www.dyndns.com/support/tools/clientconfig.html que se encuentra

en “Support/Tools/Update Client configurator” y seleccionaremos los dominios que queremos y también

seleccionaremos ddclient como formato de configuración, damos click en Generate y veremos un archivo de

configuración. Debemos sustituir nuestro actual /etc/ddclient.conf por el que nos presenta DynDns (no olvidar

escribir el password en vez de ##YOUR PASSWORD##).

El archivo es similar a este:

## ddclient configuration file

daemon=600

# check every 600 seconds

syslog=yes

# log update msgs to syslog

[email protected] # Mail failed updates to user

pid=/var/run/ddclient.pid

# record PID in file.

## Detect IP with our CheckIP server

use=web, web=checkip.dyndns.com/, web-skip='IP Address'

## DynDNS username and password here

Page 16: Servidorweb casero

login=Miusuario

password=##YOUR PASSWORD##

## Default options

protocol=dyndns2

server=members.dyndns.org

## Dynamic DNS hosts

midominio.homelinux.com, midominio2.homelinux.com #Cambiar por nuestros dominios reales

El siguiente link contiene información importante acerca de los clientes de actualización:

http://www.dyndns.com/support/clients/

Cliente No-ip (noip2).

Instalaremos el paquete noip2:

$sudo aptitude install noip2

La configuración durante la instalación será similar a ddclient, es decir, nos hará algunas preguntas, las cuales

son:

Nombre de usuario Noip (email y password con el que nos logueamos).

Frecuencia de actualización de la dirección ip (expresada en minutos).

Page 17: Servidorweb casero

Especificar los hosts o dominios creados en la página de Noip (separados por coma).

Especificar la interfaz encargada de la ip pública, en este caso la dejaremos en blanco.

Page 18: Servidorweb casero

Indicar si deseamos que se deshabilite la traducción NAT, diremos que NO.

Para cambiar alguna configuración habrá que escribir en consola:

$sudo dpkg-reconfigure noip2

Page 19: Servidorweb casero

Abrir y redireccionar puertos.

El último paso de este tutorial es abrir y redireccionar puertos de nuestro modem/router.

Las aplicaciones y recursos en red funcionan bajo un puerto en específico por defecto, aunque pueden

cambiarse, cerrarse, abrirse etc.

Para efectos de este tutorial solo tenemos que saber que el puerto 80 es el que utiliza el protocolo HTTP.

Si estamos fuera de nuestra LAN, es decir, conectados a otra red con internet, la del vecino, en la escuela,

trabajo etc. y tecleamos en el browser http://midominio.homelinux.com no obtendremos respuesta, esto es

porque falta abrir y redireccionar el puerto 80 al servidor (192.168.0.10).

Sin abrir el puerto del modem/rouer, cuando alguien accesa a nuestro servidor desde internet la petición se

hace por el puerto 80, así que la petición viaja a través de internet hasta llegar a nuestro modem/router

(192.168.0.1) pero como el puerto 80 está cerrado entonces la petición muere en ese momento y no alcanza a

llegar a nuestro servidor.

Si el puerto estuviera abierto y direccionado a nuestro servidor la petición se realiza por el puerto 80, viaja a

través de internet, al llegar a nuestro modem/router ve el puerto 80 abierto y dice que para seguir la petición

debe ir al servidor (192.168.0.10) y entonces, al llegar al servidor este responde de forma adecuada y la petición

regresa a su lugar de origen con una respuesta satisfactoria.

La manera de abrir puertos de un modem/router o algún dispositivo de red varia de acuerdo a la marca/modelo

del mismo, pero de manera básica se puede accesar a través del browser, generalmente el modem/router debe

estar conectado físicamente a la computadora que lo accederá.

En el browser escribimos la dirección ip o nombre de host del router, para el caso del tutorial es la 192.168.0.1,

pero repito, depende mucho del modelo, otras posibles direcciones son:

10.0.0.1

192.168.1.1

192.168.254.1

192.168.254.254

Una vez dentro, la interfaz de navegación será diferente para cada modem, pero en general hay que buscar una

sección que hable de puertos, como "Port redirecting", "Port access", "Special applications", "Application and

gaming" etc.

Una vez que hayamos ubicado esto generalmente debemos indicar:

Page 20: Servidorweb casero

• Número de puerto (ahora el 80).

• Protocolo al que pertenece (TCP, UDP o ambos).

• A donde redireccionarlo (192.168.0.10, nuestro servidor).

Puede que tengamos que reiniciar el router, pero una vez hecho, debe de verse nuestro servidor desde internet

escribiendo en el browser el nombre de dominio configurado ya sea en DynDns o Noip.

Aquí algunos enlaces que explican lo que son los puertos y para que sirven:

http://www.iana.org/assignments/port-numbers

http://es.wikipedia.org/wiki/Puerto_de_red

http://es.kioskea.net/contents/internet/port.php3

Hasta aquí este tutorial. Configuraciones existen muchas y todo depende del caso, además, hay que decir que

en este tutorial no se abarca nada de la seguridad, esto es muy importante y lo iremos viendo en tutoriales

posteriores.