Servidorweb casero

2,453
-1

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,453
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
125
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Servidorweb casero

  1. 1. Montando un servidor web casero: Debian + Apache Bernux
  2. 2. ÍNDICEIntroducción ................................................................................................................................1 ¿Que se necesita para montar un servidor web? .................................................................1 Antes de comenzar. ...............................................................................................................3Instalando y configurando servidor web.....................................................................................4 Instalando Apache2................................................................................................................4 Configurar Apache2................................................................................................................4El dominio....................................................................................................................................6 Obteniendo nuestro dominio...................................................................................................6 Dominio gratuito con DynDns.............................................................................................6 Dominio gratuito con No-ip.................................................................................................8Otras 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
  3. 3. Montando un servidor web casero: Debian + ApacheIntroducciónEn este tutorial veremos como montar un servidor web casero con Debian y Apache, lo que se pretende es queal final del tutorial podamos tener un sitio web que pueda ser accesible desde cualquier parte del mundo y habervisto 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 pocoacerca de los conceptos relacionados a redes y servidores. Además, está basado en mis experiencias almomento 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 quese mostrará a los visitantes. Actualmente hay muchas empresas que dan un servicio de hosting, esto quieredecir 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 demanera 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/) quees más difícil de recordar y manipular.En este tutorial usaremos un dominio gratuito que ofrecen servicios como DynDNS o No-ip, mas adelanteprofundizaremos en el tema.Servicio DNS: Para que un dominio pase de ser local a universal, es decir, que pueda ser reconocido por todoslos servidores en internet, se requiere un servicio de DNS. Si el hosting es por parte de una empresa,
  4. 4. generalmente ellos nos proporcionan las direcciones y nombres de DNS, y en nuestros dominios registradospodremos cambiar las direcciones de DNS desde el panel de configuración de la empresa que registra eldominio.Software servidor: Es el software que servirá como servidor web, es decir, el software que manejará ypresentará las páginas en HTML y todo el contenido y peticiones que se puedan llevar a cabo por medio deHTTTP. 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 laconectividad a internet y una IP privada para el servidor, que será la dirección final a donde llegarán laspeticiones.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
  5. 5. 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 proveede internet.El modem/router del tutorial tiene un servidor de DHCP de rango192.168.0.11-192.168.0.254 con máscara 255.255.255.0, el cual sirve para asignarles dirección ip a los nuevascomputadoras que se conectan a el.La dirección ip del modem/router es la 192.168.0.1La 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:
  6. 6. Instalando y configurando servidor webInstalando Apache2.Lo primero que haremos es que localmente instalaremos y configuraremos Apache. $sudo aptitude install apache2Y en caso de que lo que vayamos a poner en el sitio web utilice Php o una base de datos como Mysql oPostgresql debemos instalar algunos paquetes más: libapache2-mod-auth-BASE php5 php5-BASEDonde "BASE" es el nombre del DBMS (Data Base Management System) como mysql o pgsql (Postgres) y engeneral los módulos y paquetes que se vayan necesitando.Todos los paquetes de apache los podemos ver así: $aptitude search apache2Configurar Apache2.Una vez que se tiene instalado el servidor web Apache, si tecleamos "localhost" sin las comillas en nuestrobrowser 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ó bieninstalado. No es muy práctico ni recomendable que esta ruta sea la que se va a usar, para esto la vamos acambiar, esto se logra editando el archivo /etc/apache2/sites-enabled/000-defaultUna 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 sercualquier directorio en el sistema, como por ejemplo una carpeta llamada www/ dentro de nuestro /home.
  7. 7. 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 restartAhora todo el contenido que queramos que aparezca en la web debemos colocarlo dentro de la carpetaanteriormente 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 lapágina.A partir de ahora somos libres de colocar el contenido que se necesite para que funcione como una aplicación
  8. 8. web, un foro, nuestro blog, etc.Hasta este momento tenemos un servidor Apache2 instalado localmente, es decir, solo nosotros podemos verlotecleando http://localhost o http://127.0.0.1 en el browser, el siguiente paso es obtener un dominio. El dominioObteniendo nuestro dominio.En esta parte obtendremos un dominio para que podamos ser vistos desde internet, es decir que cuandoalguien escriba "midominio.com" en su navegador pueda acceder a nuestra computadora y más en específicoal contenido gestionado por Apache.Por desgracia, en este tutorial usaremos un dominio gratuito, es decir que no tenemos la libertad de escoger sies .com o .mx etc., sino que se nos proporcionará una lista de dominios al estilo dyndns.org, homelinux.cometc. y nosotros antepondremos el nombre que queramos, quedando el dominio asi:midominio.homelinux.com ó midominio.dyndns.orgEsta es la desventaja de un dominio gratuito, ya que no se tiene la libertad de escoger un nombre "decente" omá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 sipodrí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 estecaso, 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 dosya que DynDns y NoIp son los más usados en estas configuraciones, pero solo usaremos un servicio, el queustedes elijan.Dominio gratuito con DynDns.Primero iremos a http://www.dyndns.com y crearemos una cuenta gratuita, ya que este creada y activadairemos a la sección My hosts:
  9. 9. Y dentro damos clic en "Add new host" y rellenaremos el formulario:
  10. 10. Hostname: Aquí debemos ingresar el nombre de dominio por ejemplo, crearemos "midominio" y en la lista de laderecha 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 ipdinámica.IP address: Podemos dar click en el link que dice "Your current locations 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, damossiguiente y tendremos nuestro dominio activo.Para verificar los dominios existentes y características podemos ir a la sección "My hosts" y editar laspreferencias.Dominio gratuito con No-ip.Entramos a http://www.no-ip.com/ nos registramos y nos logueamos, ya dentro crearemos, como en DynDnsun 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.
  11. 11. Y básicamente es eso. Damos click en "Create host" y una vez añadido, tendremos la lista de nuestros hostsque 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 elarchivo /etc/hosts y generalmente donde esté indicada la dirección 127.0.0.1 o 127.0.1.1 indicaremos losnombres locales de la computadora.Si es la primera vez que tocamos este archivo veremos una configuración similar:127.0.1.1 usuario-desktop localhostSolo debemos agregar al final de la linea nuestro dominio para que quede así:127.0.1.1 usuario-desktop localhost midominio.homelinux.com otrosdominios.comGuardamos, cerramos y si tecleamos en el browser http://midominio.homelinux.com veremos el mismocontenido que cuando escribíamos http://localhost pero ¡OJO!, esto sigue siendo localmente, todavía nopodemos verlo desde internet. Otras configuracionesDirección IP estáticaEs turno de poner una dirección IP estática (en caso de que nuestra IP sea asignada mediante DHCP) anuestro servidor. Esto es porque cuando configuremos los clientes de dyndns o no-ip y al abrir los puertos delmodem/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 osimilar: #Interfaz eth0 (cableada) auto eth0 iface eth0 inet dhcppor este otro: #Interfaz eth0 (cableada) auto eth0 iface eth0 inet static
  12. 12. 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 ISPY a continuación reiniciamos los servicios: $sudo /etc/init.d/networking restartNOTA: 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 lleguea 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úblicadinámica cada determinado tiempo, es decir, que cada cierto tiempo se renueva nuestra IP que proporcionaconexió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, eldía de mañana será otra distinta, es decir, es como si nos estuviéramos mudando diario de casa y laspeticiones 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 escribirhttp://midominio.homelinux.org y acceder al servidor, pero el problema de la IP pública dinámica sigue, yaque hasta este momento nuestro servicio DNS no sabe que IP tenemos. Para esto existe software cliente quese instala y configura en el servidor con el objetivo de enviar información al servicio DNS cada determinadotiempo con nuestra IP pública actual y de esta manera el servicio DNS actualiza la IP y la relaciona con eldominio configurado, y con esto tenemos nuestro dominio accesible desde cualquier parte en cualquiermomento.
  13. 13. Cliente DynDns (ddclient).El primer paso es instalar el paquete ddclient en nuestro servidor: $sudo aptitude install ddclientDurante la instalación aparecerán varios campos a llenar:Primero seleccionamos el servicio de DNS dinámico, en este caso www.dyndns.com
  14. 14. 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 lapágina).En el último paso de la configuración nos pide la interfaz que usará el servicio de DynDns. Para este particularcaso 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 AddressGuardamos y cerramos el archivo. Esto lo hicimos para decir que la detección de la actualización de la ippú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 quecontenga 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.
  15. 15. 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 restartHasta 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ónpodemos usar la herramienta de actualización de DynDns, la cual genera un archivo de configuración básico yfuncional para nuestros dominios. Si la configuración que hace la instalación de ddclient no genera problemaspuede ignorarse esta sección.Para acceder se puede ir al sitio https://www.dyndns.com/support/tools/clientconfig.html que se encuentraen “Support/Tools/Update Client configurator” y seleccionaremos los dominios que queremos y tambiénseleccionaremos ddclient como formato de configuración, damos click en Generate y veremos un archivo deconfiguración. Debemos sustituir nuestro actual /etc/ddclient.conf por el que nos presenta DynDns (no olvidarescribir 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
  16. 16. 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 realesEl 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 noip2La configuración durante la instalación será similar a ddclient, es decir, nos hará algunas preguntas, las cualesson:Nombre de usuario Noip (email y password con el que nos logueamos).Frecuencia de actualización de la dirección ip (expresada en minutos).
  17. 17. 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.
  18. 18. 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
  19. 19. 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 puedencambiarse, 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 esporque 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 sehace 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 allegar a nuestro servidor.Si el puerto estuviera abierto y direccionado a nuestro servidor la petición se realiza por el puerto 80, viaja através de internet, al llegar a nuestro modem/router ve el puerto 80 abierto y dice que para seguir la peticióndebe ir al servidor (192.168.0.10) y entonces, al llegar al servidor este responde de forma adecuada y la peticiónregresa 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/modelodel mismo, pero de manera básica se puede accesar a través del browser, generalmente el modem/router debeestar 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.1192.168.1.1192.168.254.1192.168.254.254Una vez dentro, la interfaz de navegación será diferente para cada modem, pero en general hay que buscar unasección que hable de puertos, como "Port redirecting", "Port access", "Special applications", "Application andgaming" etc.Una vez que hayamos ubicado esto generalmente debemos indicar:
  20. 20. • 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 internetescribiendo 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-numbershttp://es.wikipedia.org/wiki/Puerto_de_redhttp://es.kioskea.net/contents/internet/port.php3Hasta aquí este tutorial. Configuraciones existen muchas y todo depende del caso, además, hay que decir queen este tutorial no se abarca nada de la seguridad, esto es muy importante y lo iremos viendo en tutorialesposteriores.

×