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 gestionar los ficheros hospedados en nuestro espacio utilizaremos un servidor FTP ftp.nombrededominio.com.
- Para gestionar las tablas de mysql accederemos al programa phpmyadmin en la dirección mysql.nombrededominio.com.
Para ello vamos a instalar el paquete apt install apache2
con dicho paquete vamos a poder tener un servidor web.
Para ello vamos a instalar el paquete apt install proftpd
Y para gestionar las tablas de mysql vamos a instalar apt install mysql-server
y phpmyadmin apt install phpmyadmin
Respuestas a las siguientes preguntas
- ¿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?
- ¿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?
- ¿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?
- ¿Cuantos nombres habrá que dar de alta en la zona de resolución directa de nombrededominio.com?
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
Consultando la base de datos
Debemos configurar proftpd para que el directorio del usuario sea el directorio raíz en ftp.
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:
<VirtualHost *:80> ServerName www.jlramirez.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html/juanlu ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
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í:
<VirtualHost *:80> ServerName mysql.jlramirez.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html/ RedirectMatch permanent ^/$ "/phpmyadmin/" ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
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
:
zone "jlramirez.com" { type master; file "db.jlramirez.com"; };
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
; BIND reverse data file for empty rfc1918 zone ; ; DO NOT EDIT THIS FILE - it is used for multiple zones. ; Instead, copy it, edit named.conf, and use that copy. ; $TTL 86400 @ IN SOA hosting.jlramirez.com. mail.jlramirez.com. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS hosting.jlramirez.com. $ORIGIN jlramirez.com. hosting IN A 192.168.1.53 www IN CNAME hosting ftp IN CNAME hosting mysql IN CNAME hosting
Comprobamos que no tenemos ningún error:
root@hosting:/home/vagrant# named-checkzone jlramirez.com /var/cache/bind/db.jlramirez.com zone jlramirez.com/IN: loaded serial 1 OK
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:
#Descomentamos esta linea RequireValidShell off #Ahora configuramos proftp para que use usuarios virtuales, #que almacenaremos en una base de datos mysql. #En el fichero de configuración añadimos lo siguiente: # Use this to jail all users in their homes DefaultRoot /var/www/html/juanlu juanlu AuthPAM off SQLBackend mysql SQLAuthTypes Backend SQLAuthenticate on SQLConnectInfo ftpd@localhost proftpd proftpd SQLDefaultGID 65534 SQLDefaultUID 65534 SQLMinUserGID 500 SQLMinUserUID 500 SQLGroupInfo grupos groupname gid members SQLUserInfo usuarios username password uid gid homedir shell SQLUserWhereClause "activa=1" SQLLogFile /var/log/proftpd_mysql.log
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:
# the existent SQL backeds. LoadModule mod_sql.c # Install proftpd-mod-mysql and decomment the previous # mod_sql.c module to use this. LoadModule mod_sql_mysql.c
Y reiniciamos el servicio systemctl restart proftpd
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:
root@hosting:/home/vagrant# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 37 Server version: 5.5.53-0+deb8u1 (Debian) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> CREATE DATABASE ftpd; Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL ON ftpd.* TO proftpd@localhost IDENTIFIED BY "usuario"; Query OK, 0 rows affected (0.00 sec)
Una vez creada la base de datos, vamos a acceder use ftpd;
y vamos a crear las tablas y vamos a insetar los datos:
mysql> CREATE TABLE usuarios ( -> username char(20) NOT NULL, -> password char(70) NOT NULL, -> uid int(6) default NULL, -> gid int(6) default NULL, -> homedir char(50) default NULL, -> shell char(30) default NULL, -> activa tinyint(4) default '1', -> dominio char(50) default NULL -> ); Query OK, 0 rows affected (0.01 sec) mysql> CREATE TABLE grupos ( -> groupname char(20) NOT NULL, -> gid int(6) NOT NULL default '65534', -> members longtext -> ); Query OK, 0 rows affected (0.01 sec)
Y insertamos los datos:
mysql> insert into usuarios values('juanlu',password('usuario'),2001,2001,'/var/www/html/juanlu','/bin/bash',1,'jlramirez.com'); Query OK, 1 row affected (0.01 sec) mysql> insert into grupos values('alumnos',2001,'alumnos'); Query OK, 1 row affected (0.00 sec)
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:
mysql> use ftpd; mysql> delete from usuarios where username='juanlu' and dominio='juanlu.com';
Y el directorio rm -rf /var/www/html/juanlu
No se han encontrado comentarios