El alojamiento web (en inglés: web hosting) es el servicio que provee a los usuarios de Internet un sistema para poder almacenar información, imágenes, vídeo, o cualquier contenido accesible vía web. Es una analogía de “hospedaje o alojamiento en hoteles o habitaciones” donde uno ocupa un lugar específico, en este caso la analogía alojamiento web o alojamiento de páginas web, se refiere al lugar que ocupa una página web, sitio web, sistema, correo electrónico, archivos etc. en internet o más específicamente en un servidor que por lo general hospeda varias aplicaciones o páginas web.

Las compañías que proporcionan espacio de un servidor a sus clientes se suelen denominar con el término en inglés web host.

El hospedaje web aunque no es necesariamente un servicio, se ha convertido en un lucrativo negocio para las compañías de Internet alrededor del mundo.

Se puede definir como “un lugar para tu página web o correos electrónicos”, aunque esta definición simplifica de manera conceptual el hecho de que el alojamiento web es en realidad espacio en Internet para prácticamente cualquier tipo de información, sea archivos, sistemas, correos electrónicos, videos, etcétera.

Tipos de alojamiento web

  • Alojamiento gratuito
  • Alojamiento por donación
  • Alojamiento compartido
  • Alojamiento de imágenes
  • Alojamiento de vídeo
  • Alojamiento de correo corporativo
  • Alojamiento revendedor (reseller)
  • Servidores virtuales (Virtual Private Server, VPS)
  • Servidores dedicados
  • Servidores dedicados administrados
  • Alojamiento Administrado y No Administrado
  • Colocación (housing)
  • Alojamiento web en la nube (cloud hosting)

El objetivo es montar un servidor que ofrezca un servicio de de hospedaje de páginas web con las siguientes características:

  • Podemos dar de alta a un usuario y al nombre de dominio (por ejemplo nombrededominio.com) por el que va estar referido su espacio.
  • Se podrán hospedar páginas estáticas (html) y páginas web dinámicas construidas con PHP.
    Automáticamente se creará una página principal, que al acceder a la pagina web (www.nombrededominio.com) de la bienvenida e informe que dicha página está en construcción.
  • Para ello vamos a instalar el paquete apt install apache2 con dicho paquete vamos a poder tener un servidor web.

  • Para gestionar los ficheros hospedados en nuestro espacio utilizaremos un servidor FTP ftp.nombrededominio.com.
  • Para ello vamos a instalar el paquete apt install proftpd

  • Para gestionar las tablas de mysql accederemos al programa phpmyadmin en la dirección mysql.nombrededominio.com.
  • Y para gestionar las tablas de mysql vamos a instalar apt install mysql-server y phpmyadmin apt install phpmyadmin

Respuestas a las siguientes preguntas

  1. ¿Qué servidores necesitas instalar en la máquina donde vamos a implantar el hosting? Cuando damos de alta una nueva cuenta en nuestro hosting hay que indicar un usuario y un nombre de dominio. ¿Qué acciones hay que hacer en el servidor con el usuario? ¿Qué acciones hay que hacer con el nombre de dominio?
  2. Servidores apache, ftp, dns, ldap, mysql

    Acciones en el servidor Habilitar su directorio para ftp, Crear usuario en ldap, Crear usuario y una base de datos.

    Acciones en el dominio Crear virtualhost, Introducir los CNAME de los diferentes virtualhost, Crear la zona en el DNS

  3. ¿Cómo puedes comprobar que existe ya un usuario con el mismo nombre?¿y qué ya está dado de alta un determinado nombre de dominio?
  4. Consultando la base de datos

  5. ¿Qué debes tener en cuenta, a la hora de crear el directorio home del usuario, para que accediendo por ftp, el usuario pueda gestionar su página web?
  6. Debemos configurar proftpd para que el directorio del usuario sea el directorio raíz en ftp.

  7. ¿Cuantos nombres habrá que dar de alta en la zona de resolución directa de nombrededominio.com?
  8. http://www.nombrededominio.com
    mysql.nombrededominio.com
    ftp.nombrededomino.com

Instalación y configuración paquete necesarios

Ahora procedemos a descargar todos los paquete necesarios para poner en funcionamiento nuestro servidor de hosting, vamos utilizar usuarios virtuales, un servidor apache, un servidor FTP, una base de datos en mysql y un servidor DNS.

Servidor apache

Podemos ver como instalar y configurar un servidor mas detalladamente en Servidor Web, así que simplemente instalamos el paquete apt install apache2 libapache2-mod-php5, creamos un virtualhost el cual vamos a llamar igual que el dominio /etc/apache2/sites-available/www.jlramirez.com.conf y quedara asi:

También vamos a agregar un VirtualHost para poder acceder a phpmyadmin, el cual hemos instalado anteriormente, para ello hacemos una copia del VirtualHost creado anteriormente cp /etc/apache2/sites-available/www.jlramirez.com.conf /etc/apache2/sites-available/mysql.jlramirez.com.conf y modificamos para que quede así:

Creamos el directorio mkdir /var/www/html/juanlu, habilitamos el virtualhost a2ensite www.juanluramirez.com.conf y por ultimo reiniciamos el servicio systemctl restart apache2

Servidor DNS

A continuación vamos a instalar el Servidor DNS, instalación y configuración que podemos ver mas detallada DNS bind9, en este caso vamos ha hacer una configuración básica para ello instalamos el paquete apt install bind9 y añadimos la zona con autoridad, para la resolución directa /etc/bind/named.conf.local:

Y modificamos el fichero de configuración especificado para la resolución de nombres /var/cache/bind/db.jlramirez.com, para que nos resulte mas facil vamos a copiar la plantilla que viene rellenada cp /etc/bind/db.empty /var/cache/bind/db.jlramirez.com

Comprobamos que no tenemos ningún error:

Y reiniciamos el servicio systemctl restart bind9

FTP

Ahora procedemos a instalar el servidor FTP, el cual podemos ver una explicacion mas detallada en el siguiente post Servidor FTP, en este caso vamos a realizar una instalacion sencilla, por lo tanto instalamos los siguientes paquetes apt install proftpd-basic proftpd-mod-mysql

El siguiente paso es editar el fichero /etc/proftpd/proftpd.conf, para que las siguientes lineas queden como especifico aqui:

Por ultimo modificamos el fichero de los módulos mysql de proftpd, para ello editamos el siguiente fichero /etc/proftpd/modules.conf, descomentaremos las siguiente lineas:

Y reiniciamos el servicio systemctl restart proftpd

Info! Al descomentar las lineas, si descomentas las que no son, no vas a poder reiniciar el servicio ten en cuenta que sean las especificadas en el párrafo anterior.

Mysql

Instalamos el servidor mysql apt install mysql-server phpmyadmin, una ves instalado entramos en la base de datos con el usuario root, creamos la base de datos ftpd y le damos permisos:

Una vez creada la base de datos, vamos a acceder use ftpd; y vamos a crear las tablas y vamos a insetar los datos:

Y insertamos los datos:

Una vez insertados los usuarios vamos a crear un enlace ln -s /usr/share/phpmyadmin /var/www/html/ de phpmyadmin, para que al acceder de un navegador a mysql.jlramirez.com acceda a phpmyadmin.

Para que cada usuario tenga acceso a phpmyadmin y pueda crear una base de datos vamos a crear un usuario en la mysql por cada usuario con acceso ftp.

Para crear el usuario CREATE USER 'myjuanlu'@'localhost' IDENTIFIED BY 'usuario'; y asignamos los privilegios GRANT CREATE,DROP,DELETE,INSERT,SELECT,UPDATE ON * . * TO 'myjuanlu'@'localhost';

Dar de baja a un usuario virtual

DNS

Vamos a deshacer todas las configuración realizadas anteriormente, primero eliminamos la zona DNS, borrando lo añadido del fichero /etc/bind/named.conf.local.

A continuación eliminamos el fichero de definicion de la zona directa rm -rf /var/cache/bind/db.jlramirez.com

Y por ultimo eliminamos los ficheros creados:

Virtualhost

Deshabilitamos a2dissite www.jlramirez.com.conf y eliminamos dicho fichero rm -rf /etc/apache2/sites-available/www.jlramirez.com.conf

Mysql

Eliminamos de la tabla usuarios, el usuario juanlu:

Y el directorio rm -rf /var/www/html/juanlu