Estos días he tenido que preparar un servidor Apache2 para que funcionase con varios dominios diferentes desde la misma IP, es decir, que un único servidor Apache alojase y resolviese 2 dominios por separado. Es lo que se conoce como configurar VirtualHosts basados en nombres.

Lo primero es instalar el servidor Apache2:

#apt-get install apache2 apache2-common

Una vez instalado, toda la configuración de Apache está en /etc/apache2/.

Mirando el contenido de este directorio, observamos distintos archivos y directorios, entre los cuales están: sites-available y sites-enabled.

En ambos directorios debe existir un archivo “default”, el cual tomaremos como base para editar la configuración de nuestros Hosts Virtuales. En sites-available tendremos los VirtualHosts disponibles (pero no “activados”) para ser usados y en sites-enabled, tendremos los VirtualHosts que tenemos funcionando. La forma de trabajar entre estos directorios es a través de un enlace simbólico; así el default de sites-enabled será un enlace simbólico del default de sites-available.

Debian incluye sus propias herramientas para activar y desactivar tanto sitios web como módulos:

a2ensite-> Activa un sitio web.
a2dissite-> Desactiva un sitio web
a2enmod-> Activa un módulo de apache disponible en mods-available.
a2dismod->Desactiva un módulo.

Por defecto, apache nos crea un “index.html” como página de inicio de nuestro servidor web. Para desactivarla y comenzar a hacer uso de los VirtualHosts desactivaremos antes este inicio por defecto:

#a2dissite default

Imaginamos que tenemos “dominio1.com” y “dominio2.com”. Vamos a comenzar a preparar estos dos VirtualHosts. Para ello nos dirigimos a /etc/apache2/available-sites/ y utilizaremos el archivo default como base para preparar la configuración de estos, para ello hacemos una copia:

#cp default dominio1.com
#cp default dominio2.com

El contenido de estos dos sitios web lo podemos volcar en /var/www/dominio1 y en /var/www/dominio2 respectivamente. Para ello, creamos estos dos directorios donde volcaremos los contenidos de ambas webs:

#mkdir  /var/www/dominio1
#mkdir  /var/www/dominio2

Una vez creado estos dos directorios volcado el contenido de las webs en ellos, sólo queda editar los archivos de configuración de los hosts virtuales.

Editaremos en primer lugar el del dominio1. Para ello:

#nano /etc/apache2/sites-available/dominio1.com

El cual debe quedar parecido a esto:

#
#  dominio1.com (/etc/apache2/sites-available/www.dominio1.com)
#

NameVirtualHost 192.168.1.3 -> (IP de nuestro servidor)

<VirtualHost 192.168.1.3>
ServerAdmin webmaster@dominio1.com
ServerName  www.dominio1.com
ServerAlias dominio1.com *.dominio1.com

# Indexes + Directory Root.
DirectoryIndex index.html index.php
DocumentRoot /var/www/dominio1/

# Logfiles
ErrorLog  /var/www/dominio1/logs/error.log -> (hay que crear los directorios si no existen)
CustomLog /var/www/dominio1/logs/access.log combined -> (hay que crear los directorios si no existen)
</VirtualHost>

Y lo mismo con elotro virtualHost /etc/apache2/sites-available/dominio2.com

#
#  dominio2.com (/etc/apache2/sites-available/www.dominio2.com)
#

NameVirtualHost
192.168.1.3 -> (IP de nuestro servidor)

<VirtualHost 192.168.1.3>
ServerAdmin webmaster@dominio2.com
ServerName  www.dominio2.com
ServerAlias dominio2.com *.dominio2.com

# Indexes + Directory Root.
DirectoryIndex index.html index.php
DocumentRoot /var/www/dominio2/

# Logfiles
ErrorLog  /var/www/dominio2/logs/error.log -> (hay que crear los directorios si no existen)
CustomLog /var/www/dominio2/logs/access.log combined -> (hay que crear los directorios si no existen)
</VirtualHost>

Ahora solamente nos queda que activamos los dos sitios:

#a2ensite dominio1.com
#a2ensite dominio2.com

Esto creará el enlace simbolico de estos archivos entre sites-available y sites-enabled. Ahora sólo tendremos que recargar la configuración para que apache coja los cambios.

# /etc/init.d/apache2 reload

y miramos si la configuración de los virtualhosts está bien:

#apache2 -S

VirtualHost configuration:
192.168.1.3:* is a NameVirtualHost
default server dominio1.com (/etc/apache2/sites-enabled/dominio1.com:2)
port * namevhost dominio1.com (/etc/apache2/sites-enabled/dominio1.com:2)
port * namevhost dominio2.com (/etc/apache2/sites-enabled/dominio2.com:2)
Syntax OK

Con esto, ya podemos comprobar si realmente funcionan nuestros VirtualHosts.

Configurar Apache con mod_wsgi para Django

Asumo que ya tienes un servidor Apache funcionando correctamente y solo debemos cambiar algunos detalles para trabajar con Django. Vamos a tener dos servidores web corriendo al mismo tiempo y debemos estar seguros que no habrá conflictos entre las direcciones IP y los puertos que usaremos. Empezamos modificando /etc/apache2/ports.conf:

Listen 192.168.0.192:80 Listen 192.168.0.180:8080 #Listen 80

Nota que he comentado la opción predeterminada, Listen 80, que indicaba que Apache use todas las direcciones IP disponibles, y he preferido especificar solo los valores que usaré. Si necesitas trabajar con SSL deberás incluir las referencias al puerto 443 de la misma manera.

Si estás usando virtual hosts en Apache confirma que esté escuchando en las direcciones y puertos correctos. Yo tengo esto en /etc/apache2/sites-enabled/example.com:

NameVirtualHost 192.168.0.192

Reinicia Apache y confirma que todos tus sitios funcionan correctamente. Yo siempre pruebo luego de cada paso y te sugiero hacer lo mismo.

sudo /etc/init.d/apache2 restart

Este es el momento de añadir mod_wsgi en Apache. Versiones recientes de Ubuntu tienen el módulo en el repositorio:

sudo apt-get install libapache2-mod-wsgi

En versiones antiguas, como Gutsy, debes encontrar el archivo .deb y usar dpkg -i para instalarlo.

Aora creamos un archivo de configuración para cataybea.com en /etc/apache2/sites-available/cataybea.com:

<VirtualHost 192.168.0.180:8080> ServerAdmin alexis@ventanazul.com ServerName www.cataybea.com ServerAlias cataybea.com <Directory /home/alexis/djcode/cataybea/apache/> Order deny,allow Allow from all </Directory> LogLevel warn ErrorLog /home/alexis/djcode/cataybea/logs/apache_error.log CustomLog /home/alexis/djcode/cataybea/logs/apache_access.log combined WSGIDaemonProcess cataybea.com user=www-data group=www-data threads=25 WSGIProcessGroup cataybea.com WSGIScriptAlias / /home/alexis/djcode/cataybea/apache/cataybea.wsgi </VirtualHost>

Nota la dirección IP y puerto: 192.168.0.180:8080. En ningún momento este sitio se accederá directamente sino a través del proxy desde Nginx. Veremos cómo en la siguiente sección.

fuente: : http://ur1.ca/6p54m

nfuente2:http://www.ventanazul.com/tutoriales/guia-configurar-servidor-django-nginx-apache-ubuntu