Está en la página 1de 20

Montando un servidor web casero: Debian + Apache

Bernux
ÍNDICE
Introducción ................................................................................................................................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
Dirección IP estática...............................................................................................................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

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,
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
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:


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.
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
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:
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 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.
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
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.
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


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.
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
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 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).


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.


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


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:


• 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.

También podría gustarte