Está en la página 1de 20

Montando un servidor web casero: Debian + Apache

Bernux

NDICE
Introduccin ................................................................................................................................1
Que se necesita para montar un servidor web? .................................................................1
Antes de comenzar. ...............................................................................................................3
Instalando y configurando servidor web.....................................................................................4
Instalando Apache2................................................................................................................4
Configurar Apache2................................................................................................................4
El dominio....................................................................................................................................6
Obteniendo nuestro dominio...................................................................................................6
Dominio gratuito con DynDns.............................................................................................6
Dominio gratuito con No-ip.................................................................................................8
Otras configuraciones.................................................................................................................9
Direccin IP esttica...............................................................................................................9
Configurando clientes DynDns y/o No-ip..............................................................................10
Cliente DynDns (ddclient).................................................................................................11
Cliente No-ip (noip2).........................................................................................................14
Abrir y redireccionar puertos.................................................................................................17

Montando un servidor web casero: Debian + Apache


Introduccin
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 bsicas 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. Adems, est basado en mis experiencias al
momento de aprender, as que siempre existir documentacin oficial que puede ayudarnos ms.
Para este tutorial necesitaremos:

Una PC o laptop con Debian que ser el servidor.

Una conexin a internet, de preferencia a travs de un modem/router.

Configurar algunas cuentas y dominios gratuitos (se ver ms adelante).

Que se necesita para montar un servidor web?


Antes de comenzar de lleno con lo prctico 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 pequeo 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 fcil, 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 direccin IP (http://74.125.45.100/) que
es ms difcil 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,

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 configuracin 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 pginas 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 bsica, una IP pblica que es la que proporciona la
conectividad a internet y una IP privada para el servidor, que ser la direccin final a donde llegarn las
peticiones.
Algunos links que informan de manera ms 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

Antes de comenzar.
Primero que nada tendremos que ver como estn nuestras conexiones fsicas. En este caso ser muy simple,
una computadora conectada a un modem/router el cual est conectado a la linea telefnica 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 mscara 255.255.255.0, el cual sirve para asignarles direccin ip a los nuevas
computadoras que se conectan a el.
La direccin ip del modem/router es la 192.168.0.1
La computadora que servir de servidor tendr la direccin 192.168.0.10 con mscara 255.255.255.0.
Los DNS sern los del ISP, en este caso Telmex.
Y un diagrama sencillo es este:

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 ms:
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 mdulos 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", indicndonos que qued bien
instalado. No es muy prctico 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 lneas 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.

Tipicamente un servidor web para un dominio quedara 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
pgina.
A partir de ahora somos libres de colocar el contenido que se necesite para que funcione como una aplicacin

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 ms en especfico
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
ms "serio", pero para conocer como es el proceso nos queda bien.
Si por otro lado, estuviramos contratando un hosting y comprando y registrando un dominio, en este caso si
podramos 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 ms 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 seccin My hosts:

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

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 seleccin por defecto (Host with IP address), que crear un host que resuelve una ip
dinmica.
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 pblica 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 caractersticas podemos ir a la seccin "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 seccin "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.

Y bsicamente es eso. Damos click en "Create host" y una vez aadido, 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 direccin 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 configuracin 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 escribamos http://localhost pero OJO!, esto sigue siendo localmente, todava no
podemos verlo desde internet.

Otras configuraciones
Direccin IP esttica
Es turno de poner una direccin IP esttica (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 direccin IP privada (ms adelante se explican los detalles).
Para poner una ip esttica 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

address 192.168.0.10

#La ip del servidor web (que ser esttica)

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 continuacin 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 esttica 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 mayora de los hogares y con la mayora de ISPs, una suscripcin "casera" asigna una IP pblica
dinmica cada determinado tiempo, es decir, que cada cierto tiempo se renueva nuestra IP que proporciona
conexin 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 pblica, estaramos viendo el contenido del servidor web,
pero el problema es que cada cierto tiempo esa direccin cambiara y si el da de hoy tenemos una direccin, el
da de maana ser otra distinta, es decir, es como si nos estuviramos 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 pblica dinmica 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 informacin al servicio DNS cada determinado
tiempo con nuestra IP pblica 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.

Cliente DynDns (ddclient).


El primer paso es instalar el paquete ddclient en nuestro servidor:
$sudo aptitude install ddclient
Durante la instalacin aparecern varios campos a llenar:
Primero seleccionamos el servicio de DNS dinmico, en este caso www.dyndns.com

Ahora hay que introducir nuestros hosts o dominios creados previamente en la pgina de DynDns
(midominio.homelinux.com)

Despus introduciremos el usuario y password de nuestra cuenta de DynDns (con la que nos logueamos en la
pgina).
En el ltimo paso de la configuracin 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 deteccin de la actualizacin de la ip
pblica correr a cargo de "checkip.dyndns.com".
En otros casos se podra usar "if" en vez de "web" e indicar una interfaz preferentemente wan, o la interfaz que
contenga la direccin ip pblica, en este caso usamos web porque en nuestro servidor la interfaz eth0 es la
nica que tenemos cerca y no controla la ip pblica, sino la ip de la LAN.

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 actualizacin (en segundos) en la lnea:
daemon_interval="300"
Reiniciamos el servicio ddclient:
$sudo /etc/init.d/ddclient restart
Hasta este momento la direccin ip pblica se actualiza automticamente.
Usando herramienta de configuracin de DynDns.
NOTA: En ocasiones, la configuracin que da ddclient por defecto no funciona, para una mejor configuracin
podemos usar la herramienta de actualizacin de DynDns, la cual genera un archivo de configuracin bsico y
funcional para nuestros dominios. Si la configuracin que hace la instalacin de ddclient no genera problemas
puede ignorarse esta seccin.
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 tambin
seleccionaremos ddclient como formato de configuracin, damos click en Generate y veremos un archivo de
configuracin. 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
mail-failure=mimail@deregistro.com # 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

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 informacin importante acerca de los clientes de actualizacin:


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

Cliente No-ip (noip2).


Instalaremos el paquete noip2:
$sudo aptitude install noip2
La configuracin durante la instalacin 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 actualizacin de la direccin ip (expresada en minutos).

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

Especificar la interfaz encargada de la ip pblica, en este caso la dejaremos en blanco.

Indicar si deseamos que se deshabilite la traduccin NAT, diremos que NO.

Para cambiar alguna configuracin habr que escribir en consola:


$sudo dpkg-reconfigure noip2

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 especfico 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 peticin se
hace por el puerto 80, as que la peticin viaja a travs de internet hasta llegar a nuestro modem/router
(192.168.0.1) pero como el puerto 80 est cerrado entonces la peticin muere en ese momento y no alcanza a
llegar a nuestro servidor.
Si el puerto estuviera abierto y direccionado a nuestro servidor la peticin se realiza por el puerto 80, viaja a
travs de internet, al llegar a nuestro modem/router ve el puerto 80 abierto y dice que para seguir la peticin
debe ir al servidor (192.168.0.10) y entonces, al llegar al servidor este responde de forma adecuada y la peticin
regresa a su lugar de origen con una respuesta satisfactoria.
La manera de abrir puertos de un modem/router o algn dispositivo de red varia de acuerdo a la marca/modelo
del mismo, pero de manera bsica se puede accesar a travs del browser, generalmente el modem/router debe
estar conectado fsicamente a la computadora que lo acceder.
En el browser escribimos la direccin 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 navegacin ser diferente para cada modem, pero en general hay que buscar una
seccin que hable de puertos, como "Port redirecting", "Port access", "Special applications", "Application and
gaming" etc.
Una vez que hayamos ubicado esto generalmente debemos indicar:

Nmero 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, adems, 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.

También podría gustarte