Cómo montar un servidor web y alojar una web en GNU/Linux
Si alguna vez te has planteado cómo algunos servicios de hosting que existen en la red pueden alojar una página web o qué es un servidor web y cómo funciona, incluso qué son las barras que aparecen en la URL de algunas páginas webs, cómo un cliente puede conectar con una página web remotamente, etc., en este artículo te lo vamos a dejar claro. Te enseñaré no solo los conceptos de lo que es un servidor, también vas a saber cómo crear tu propio servidor web paso a paso gracias a nuestro sencillo tutorial.
Todo el mundo hacemos hoy en día uso de los servicios remotos de todo tipo, también de la floreciente cloud computing, pero si existe un servicio que destaca por encima del resto, quizás sea el que aportan los servidores web, ya que existen toneladas de webs que visitamos de forma diaria para leer nuestras noticias favoritas, consultar correos electrónicos desde interfaces web que aportan algunos servicios como GMail, realizar transacciones, trabajar, realizar compras online, etc. Nadie escapa a estos servicios, ¿verdad? Sin embargo para muchos de sus usuarios siguen siendo desconocidos en cuanto a lo que se esconde tras ellos…
¿Qué es un servidor?
Algunos usuarios piensan que un servidor es algo especial, algo muy diferente a lo que realmente es. Pero dicho con un lenguaje simple, un servidor no es más que un ordenador como el que podemos tener en nuestra casa, solo que en vez de actuar como un cliente, lo está haciendo como un servidor, es decir, está prestando un servicio. Puedes pensar que, en ese caso, por qué esas imágenes que vemos en la tele o en otros medios cuando salen servidores son tan raras…
Bueno, esas imágenes como la que yo he incluido aquí son imágenes de granjas de servidores. Se llama así a una serie de aglomeraciones de ordenadores que trabajan conjuntamente como un único servidor. Ten en cuenta que los servicios que suelen ofrecer estos servidores van destinados a cientos, miles o millones de usuarios que actúan como clientes on sus ordenadores, smartphones, tablets, smarttvs, etc. Por tanto, las capacidades que deben manejar son muy superiores a las de una computadora doméstica.
Solo hay que pensar en servicios como Twitter, cuántos millones de usuarios tiene esta red social, cuántos archivos y mensajes se transfieren cada segundo. Si lo piensas es una gran cantidad de datos, por tanto no vale con una conexión como la que tenemos en casa y un ordenador normalito. Se necesitan conexiones muy rápidas para que no haya retrasos en los accesos de todos esos usuarios, y darle la capacidad necesaria para que puedan alojar toda esa información.
Con esto lo que quiero decir es que para este servicio se usan decenas o cientos de “ordenadores” como los que podemos usar en casa que se alojan en armarios con racks. Pero en esencia, cada uno de ellos no dista mucho de un equipo de sobremesa como el que tenemos en nuesto hogar. Tal vez algunos tengan microprocesadores especiales como los AMD EPYC, Intel Xeon, etc., tal vez también tengan varios discos duros configurados como RAID para evitar que si alguno de ellos falla se pierda la información, pero como digo quédate con que son ordenadores como los que tú manejas ahora mismo, y te comento esto porque ahora te explicaré cómo convertir tu PC en un servidor modesto…
Por supuesto, estos servidores son de muchos tipos, los hay que proveen de servicos cloud, como el almacenamiento, los hay que proveen de servicios de correo electrónico, servidores web, también algunos que simplemente servicios como DNS, NTP, DHCP, LDAP, etc, es decir, todos estos últimos son muy necesarios y seguramente los uses a diario sin darte ni cuenta, ya que son servicios que nos aportan algunos ISP (Internet Service Provider) o proveedor de servicios de Internet.
¿Qué es una página web?
Hemos citado anteriormente que algunos servidores web, en ellos se da alojamiento o hosting para páginas webs. Una página web es un conjunto de inromación (HTML, PHP, CSS,…) electrónica o digital que puede contener solo texto, o también otros contenidos como apps web escritas en ciertos lenguajes de programación específicos o scripts (Perl, JavaScript, Ruby con el framework RoR o Ruby on Rails, PHP, etc.), contenido multimedia (imágenes, vídeos, sonidos, etc), y también enlaces que suelen dirigirte a otro lugar de esta misma página web o a otra diferente.
Y para que esto sea posible tenemos a los servidores web que las alojan, es decir, almacena en su disco duro todo estos datos, y también una serie de protocolos de red como el HTTP (HyperText Transfer Protocol) y HTTPS (HTTP con seguridad por certificado SSL/TLS). Un software se encargará de esto como más adelante te enseñaremos, es decir, de implementar una conexión bidireccional para el cliente y que éste pueda navegar por el contenido de hipertexto, es decir, el medio para compartir, enlazar e interactuar con la información adaptada para la WWW (World Wide Web).
¿Cómo funciona?
Bien, ya sabemos lo que es una web y un servidor web explicado a mi manera y con un lenguaje sencillo para que más o menos todos lo puedan entender, incluso aquellos que no tienen conocimientos sobre esta tecnología. Y ahora sigo con este apartado en el que intentaré de dejar claro el funcionamiento de este sistema cliente-servidor. Pero para ello antes voy a diferenciar entre ambos:
- Cliente: el cliente es el usuario que accede a la página web desde su dispositivo, ya sea un portátil, sobremesa, tablet, smartphone, etc. Para el acceso solo necesita una conexión a Internet y un navegador web, un software muy importante en el lado del cliente que es el encargado de mostrar todo ese contenido web de una forma amigable para el usuario y que éste pueda interactuar con él. Y para ello solo necesitaremos la dirección de la página web o una IP…, aunque puedes estar pensando que no siempre se necesita de esto para acceder, ya que existen los buscadores (e.j.: Google) que mediante palabras clave permiten mostrar estas webs que tienen indexadas, y estás en lo cierto.
- Servidor: como hemos explicado, contendrá todos los datos y un software que actúa como servidor, es decir, permite al cliente conectarse para realizar lo que quiera que vaya a necesitar realizar. En el caso de un servidor web será, por ejemplo, Apache, Lighttpd, etc.
Me gustaría puntualizar algo más, y es que como bien sabes, la dirección IP es la que identifica una máquina conectada en una red, en este caso será la IP del servidor web. Existen algunos servicios como este que te muestran la IP de tu página favorita, por ejemplo, si buscas google.es te mostrará la IP correspondiente al servidor donde se aloja este servicio. Si pruebas a introducir este número en la barra de direcciones de tu navegador web verás que tanto poniendo www.google.es como dicha IP, en ambos casos mostrará Google.
¿Por qué digo esto? Pues porque me sirve para enlazar con los servidores DNS. Estos servidores son otros servicios que contienen tablas con los nombres de las webs y su IP correspondiente, para que cuando alguien busca una dirección mediante su nombre y no usando la IP, el servidor haga que el navegador muestre el contenido de dicha web. Eso se hace para que sea más intuitivo para los humanos. No podemos recordar todos esos números fácilmente, pero sí los nombres de nuestra web favorita, verdad?
Y finalizo especificando qué es la URL (Uniform Resource Locator) o localizador uniforme de recursos, que vemos arriba en la barra de nuestro navegador cuando accedemos a una web. Por ejemplo, imagina que registras el dominio miweb.es. En este caso, ese dominio será tuyo y podrás usarlo para mostrar tu página web. Imagina que alguien accede a la dirección http://www.miweb.es/info/inicio.html#web:
- http://: Indica que estamos accediendo haciendo uso del protocolo HTTP, aunque podría ser también un HTTPS, FTP, etc. Pero en este caso es el primero, por tanto es un contenido web.
- WWW: ya sabes que es de la World Wide Web.
- miweb.es: este es el dominio que has registrado, es decir, el nombre que sutituye a la IP del servidor o host que contiene tu web. Por tanto, será un nombre que identifica a un servidor o máquina, al fin y al cabo… Además, contiene un TLD (Top Level Domain) que en este caso es .es, para identificar que es una web de España, aunque podría ser .se de Suecia, .com de compañía, .org Organización, etc.
- /info/inicio.html#web: esto simplemente define que se ha accedido a este contenido, es decir, a un directorio info y dentro de él se encuentra un fichero inicio.html con el hipertexto y concretamente a la sección web. Podría haber sido también una imagen, un PDF, vídeo, etc. Tal cual ocurre en tu gestor de archivos cuando te diriges a alguna ruta de tu disco duro local, cierto?
Yo creo que con esto queda bastante claro el funcionamiento explicado de una forma sencilla.
Tutorial: montar tu propio servidor web paso a paso
Si tienes una distribución GNU/Linux cualquiera, debes saber que una vez has configurado tu red adecuadamente, ya que no puedes tener una IP dinámica, sino que debe ser estática o de lo contrario cambiará de valor y resultaría más complicado acceder a la web. Además, también debes prestar atención a si tienes configurado algún cortafuegos con iptables u otro software de que ninguna regla esté restringiendo las transferencias por el puerto 80 u 8080, etc., al igual que si tienes AppArmor o SELinux, deberían de estar permitiendo actuar al demonio del servidor web, en este caso Apache.
El siguiente paso es instalar el software para implementar nuestro servidor web, en este caso Apache y otros paquetes adicionales para completar el LAMP, pero podría haber sido otro. En mi caso, desde Debian:
sudo apt-get update
sudo apt-get install apache2
sudo service apache2 restart
sudo apt-get install mysql-server php5-mysql
mysql -u root
mysql -u root -p (sin no introdujiste el password durante la instalación)
sudo apt-get install php libapache2-mod-php5 php5-mycrypt
sudo apt-get install php5-sqlite
Después podrías configurar algunos parámetros del servidor si lo necesitas, o quizás si no funciona y obtienes la página que te muestro en la imagen anterior, mirar los registros porque algo ha ido mal…Por cierto, dicha página la puedes ver accediendo a tu navegador web y poniendo el localhost 127.0.0.1 en la barra de direcciones o la IP estática que hayas configurado para tu servidor. Los puertos por defecto estarán en /etc/apache2/ports.conf por si te apetece modificarlos.
Si quieres también podrás instalar otros paquetes adicionales, si piensas también tener servidor de correo, o algunos paneles de configuración como phpAdmin, etc.
Alojar tu página web en el servidor
Una vez tenemos nuestro servidor listo, recuerda que el PC que hayas dedicado al servidor debe estar siempre encendido y conetado a la red para que la web sea accesible desde cualquier otro dispositivo, de lo contrario el servidor estará “caído”. Ahora ya solo nos queda alojar nuestra web, que podemos haberla creado nosotros mismos usando código HTML u otros, o incluso hacer uso de algún CMS como Wordpress que nos facilita mucho las cosas y que podríamos alojar en el mismo lugar…
Y para ello lo haremos en el directorio /var/www/html/ que salvo quehayamos cambiado la configuración de Apache, será allí donde se alojen las webs. Por ejemplo, podrías hacer una pequeña prueba usando PHP creando un archivo con tu editor de texto favorito con el contenido:
<?php phpinfo() ?>
Llamalo prueba.php y ahora, tras volver a reiniciar el demonio apache2, podrás ver si se puede acceder desde el navegador: 127.0.0.1/prueba.php.
Espero que te haya servido de ayuda este tutorial y que al menos entiendas un poco mejor cómo funcionan los servidores, para que ahora cada vez que accedas a nuestro blog a leer una noticia, sepas todo lo que hay detrás. No olvides dejar tus comentarios, dudas, o sugerencias,…
El artículo Cómo montar un servidor web y alojar una web en GNU/Linux aparece primero en Cómo montar un servidor web y alojar una web en GNU/Linux.