---
title: Configurar un Apache en un servidor Linux (DigitalOcean) con Dominio y Subdominios  (Video)
url: https://jarroba.com/configurar-un-apache-en-un-servidor-linux-digitalocean-con-dominio-y-subdominios-partei/
author: Richard [Admin Jarroba]
date: 2014-07-11
modified: 2017-10-21
language: es
license: CC BY-NC-SA 3.0 (https://creativecommons.org/licenses/by-nc-sa/3.0/) — attribution: "Configurar un Apache en un servidor Linux (DigitalOcean) con Dominio y Subdominios  (Video)", Richard [Admin Jarroba], jarroba.com
categories: Sistemas Operativos, Tecnologias Web
tags: apache, apache2, digitalocean, dominio, ip, linux, subdominio, ubuntu, virtualhost
---

# Configurar un Apache en un servidor Linux (DigitalOcean) con Dominio y Subdominios  (Video)

Antes de pasar a explicar como configurar un apache en un servidor Linux en DigitalOcean (que se puede hacer igual con otro proveedor de hosting) vamos a pasar a explicar algunos conceptos para entender los elementos que necesitaremos para montar una aplicación web.

 

Lo primero que se necesita es tener un ***dominio*** como por ejemplo [***jarroba.com***](https://jarroba.com/) o ***vallekano.es*** que es el que utilizaremos para el ejemplo que vamos a desarrollar. Los dominios los podeis comprar a cualquier proveedor de dominios. En el ejemplo que vamos a hacer se compró el dominio a la empresa OVH, pero podeis comprarlo en cualquier otra. Tu proveedor de dominios debe ser el encargado de expandir las DNSs que ahora explicaremos que es.

 

Lo segundo que debes de tener es un ***hosting o alojamiento*** que es donde se guardará el código fuente de tu aplicación web (PHP, Java, Python, Ruby, …) y donde tendrás si lo necesitas la base de datos (MySql, MongoDB, …). En este ejemplo hemos contratado el hosting en la empresa de ***DigitalOcean*** que ofrece unos hosting dedicados a un muy buen precio y los puedes "customizar" a tu gusto ya que lo que hace es crearte máquinas virtuales, muy similar a lo que hicimos en la entrada de "[Como crear entornos de desarrollo con Vagrant y Puppet](https://jarroba.com/como-crear-entornos-de-desarrollo-con-vagrant-y-puppet/)". Una vez que te has creado la máquina en DigitalOcean (ellos los llaman "Droplet") te proporcionan una ***dirección IP*** (a dia de hoy una IPV4) y en este caso nos han proporcionado la IP **104.131.133.244**.

 

Llegados a este punto tenemos ***un dominio, un hosting y una dirección IP***. Ahora tenemos que ver como enlazamos estos tres elementos para que nuestra aplicación web funcione. Lo siguiente que tenemos que hacer es ir a nuestro proveedor de dominios (OVH) y decirle que la url (vallekano.es) apunte a la dirección IP (104.131.133.244) que nos ha proporcionado DigitalOcean.

 

[![dominios_subdominios_ip_jarroba](https://jarroba.com/wp-content/uploads/2014/07/dominios_subdominios_ip_jarroba.png)](https://jarroba.com/wp-content/uploads/2014/07/dominios_subdominios_ip_jarroba.png)

 

Lo siguiente que deba hacer nuestro proveedor de dominio es lo que se conoce como ***"expandir las DNSs"***. Mucho habreis oido hablar sobre las DNS, pues esto no es mas que un fichero de texto que tienen las empresas proveedoras de internet (como Telefonica, Ono, …) en las que guardan la dirección IP asociada a cada dominio; de esta forma cuando se pone en el navegador una URL nuestro proveedor de internet sabe la dirección IP asociada a ese dominio y "enruta" la peticón al servidor correspondiente para que este de una respuesta al usuario. Esto es asi porque para las personas es mucho mas sencillo acordarse del nombre de los dominios que de las direcciones IP, aunque por debajo y sin darnos cuenta funciona todo con direcciones IP. Lo que vengo a decir que en este caso daría igual poner en nuestro navegador "vallekano.es" que la IP "104.131.133.244". En resumen las direcciones IP son algo asi como los números de telefono; cuando marcamos un número de telefono las empresas proveedoras de servicios telefonicos saben donde se encuentra el telefono al que llamamos y establece la conexión para que hablemos; sin que nos importe como hace esa conexión o establecimiento de llamada.

 

En resumen el flujo que he contado lo podeis ver en la siguiente imagen:

 

[![internet_jarroba](https://jarroba.com/wp-content/uploads/2014/07/internet_jarroba.png)](https://jarroba.com/wp-content/uploads/2014/07/internet_jarroba.png)

 

Por lo general la mayoría de las empresas proveedoras de hosting también son proveedoras de dominios, así que todo lo que estamos explicando en esta entrada te lo suelen hacer de forma automática o a través de un panel para gestionar todo esto.

 

Lo siguiente que vamos a hacer es crearnos la máquina virtual Linux (Ubuntu 14.04) en DigitalOcean. El proceso de creación de la máquina virtual la podéis ver en el video ya que es un proceso muy sencillo y se tarda menos de un minuto, por tanto con esto ya tendremos nuestro servidor creado. Si contratáis un servidor dedicado Linux con otra empresa ya os vendrá instalado el Linux y este proceso no tendréis que hacerlo.

 

Una vez que tenemos el Linux en nuestro servidor ya podremos configurarlo a nuestro antojo. A continuación mostramos una imagen en la que vemos el esquema de carpetas que tiene un Linux y mostramos las carpetas y ficheros que crearemos y modificaremos a la hora de crearnos el servidor Apache y configurar el dominio y los subdominios:

 

[![Linux_files_jarroba](https://jarroba.com/wp-content/uploads/2014/07/Linux_files_jarroba.png)](https://jarroba.com/wp-content/uploads/2014/07/Linux_files_jarroba.png)

 

### #Pasos para la instalación y configuración

 

1.- Instalamos el vim (editor de texto) y el a2ensite (para hacer un enlace simbólico del virtualhost) que son programas que nos facilitarán la labor para configurar el apache. Sino os gusta el vim podéis instalar otro editor de texto, vi, nano, …

 

```

$ sudo apt-get install vim
$ sudo apt-get install a2ensite
```

 

2.- Instalamos Apache y después hacemos un restart:

 

```

$ sudo apt-get install apache2
$ sudo /etc/init.d/apache2 restart
```

 

3.- Aunque no sea objetivo de esta entrada, vamos a instalar PHP y MySQL para poder abordar proyectos LAMP (**L**inux-**A**pache-**M**ySQL-**P**HP):

 

```

$ sudo apt-get install php5  			# Instalamos php5
$ sudo apt-get install libapache2-mod-php5   	# Añadimos paquetes
$ sudo /etc/init.d/apache2 restart		# reiniciamos el apache
$ sudo apt-get install mysql-server		# instalación del server
$ sudo apt-get install php5-mysql		# instalación para que corra con php
```

 

4.- Creamos el Virtualhost del dominio. Cuando hemos instalado el Apache nos ha creado una configuración por defecto en el fichero "000-default.conf". Como lo que queremos es cambiar esta configuración, cambiaremos el contenido de este fichero :

 

```

$ cd /etc/apache2/sites-available
$ vim 000-default.conf  		# Si quereis podeis usar otro editor diferente a vim
```

 

Ponemos lo siguiente en el fichero "000-default.conf":

 

```

<VirtualHost *:80>
	ServerName vallekano.es
	ServerAlias vallekano
	DocumentRoot /var/www/vallekano

	DirectoryIndex index.php

	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/vallekano>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
```

 

Lo que estamos haciendo en esta configuración es decirle al Apache que cuando la petición sea a la url de "vallekano.es" que se vaya a la carpeta "/var/www/vallekano" y que ejecute el fichero "index.php". Le podemos indicar que vaya a cualquier otra carpeta y que ejecute cualquier otro fichero, pero en este caso vamos a utilizar esta configuración.

 

5.- Creamos un enlace simbólico para habilitar el virtualhost, por tanto dentro de la carpeta /etc/apache2/sites-available hacemos:

 

```

$ sudo a2ensite 000-default.conf
```

 

6.- Creamos los subdominios. Para ello vamos a hacer una copia del fichero de configuración (en este caso 000-default.conf) para cada subdominio. Dentro de la carpeta /etc/apache2/sites-available hacemos esa copia:

 

```

$ sudo cp 000-default.conf subdominio1.conf
$ sudo cp 000-default.conf subdominio2.conf
```

 

7.- Editamos los virtualhost de los subdominios. Dentro de la carpeta /etc/apache2/sites-available hacemos:

 

```

$ vim subdominio1.conf
```

 

Y lo configuramos cambiando las carpetas en las que se encuentran los ficheros de la aplicación web:

 

```

<VirtualHost *:80>
	ServerName subdomain1.vallekano.es
	ServerAlias subdomain1
	DocumentRoot /var/www/subdominio1

	DirectoryIndex index.php

	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/subdominio1>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
```

 

Y hacemos lo mismo con el subdominio 2 asignándole otra carpeta

 

```

$ vim subdominio2.conf
```

 

```

<VirtualHost *:80>
	ServerName subdomain2.vallekano.es
	ServerAlias subdomain2
	DocumentRoot /var/www/subdominio2

	DirectoryIndex index.php

	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/subdominio2>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
```

 

7.- Una vez que tenemos configurados los virtualhost, vamos a habilitarlos, para ello vamos a utilizar el programa a2ensite que nos hará un enlace simbólico de los virtualhosts a la carpeta “sites-enabled”:

 

```

$ sudo a2ensite subdominio1.conf 
$ sudo a2ensite subdominio2.conf
```

 

8.- Ahora vamos a crear las carpetas que hemos definido en los virtualhost en los que se van a encontrar los ficheros de nuestra aplicación web. Estas carpetas son “/var/www/vallekano” para cuando hagan una petición a “vallekano.es”, “/var/www/subdominio1” para cuando hagan una petición a “subdomain1.vallekano.es” y “/var/www/subdominio2” para cuando hagan una petición a “subdomain2.vallekano.es”. Se ha de decir que hemos definido los ficheros “index.php” como el primer fichero que cargará al hacer las peticiones. Para ello creamos las carpetas:

 

```

$ mkdir /var/www/vallekano
$ mkdir /var/www/subdominio1
$ mkdir /var/www/subdominio2
```

 

9.- En cada una de las carpetas nos creamos nuestros “index.php” que los programaremos haciendo un “echo” del dominio al que llamamos:

 

```

$ vim /var/www/vallekano/index.php
```

 

Escribimos:

 

```

<?php
	echo "vallekano.es";
```

 

Para el subdominio 1:

 

```

$ vim /var/www/subdominio1/index.php
```

 

Escribimos:

 

```

<?php
	echo “subdominio1.vallekano.es";
```

 

Para el subdominio 2:

 

```

$ vim /var/www/subdominio2/index.php
```

 

Escribimos:

 

```

<?php
	echo “subdominio2.vallekano.es";
```

 

10.- Por último hacemos un restart del apache para que se carguen las configuraciones:

 

```

$ sudo service apache2 restart
```

 

Una vez que realizamos todos estos pasos correctamente ya nos debería de funcionar correctamente. Todo este proceso es un poco tedioso pero sencillo y hay que tener muchas cosas en cuenta. Si algo no te ha salido es porque te has saltado algún paso. Si por lo que sea no te ha salido mira el video y sigelo paso por paso. Suerte 😉
