El directorio por defecto de apache2 en Ubuntu es /var/www. Aquí es donde normalmente guardamos los archivos de nuestros sitios.
Si queremos cambiar este directorio por otro podemos utilizar los siguientes pasos, estos son realizados en Ubuntu pero deberían servir para cualquier otra distribución.
Crear un nuevo sitio Primero creamos una copia del sitio por defecto ejecutando en el terminal:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/misitio
Donde misitio es el nombre del nuevo sitio que queremos crear puede ser cualquiera que tu quieras.
Luego editamos este archivo como administrador en nuestro editor favorito puede ser nano, vim o gedit:
gksudo gedit /etc/apache2/sites-available/misitio
Dentro del archivo modificamos las siguientes lineas:
**DocumentRoot /var/www** por /home/vensign/misitio
Y **<Directory /var/www/>** por **<Directory /home/vensign/misitio/>**
En este caso cambiamos el directorio por uno dentro de /home/vensign/misitio que es el directorio de nuestro usuario y que debe estar creado (mkdir /home/vensign/misitio en este caso).
Recuerda cambiar
/home/vensign/misitio al directorio que vas a utilizar
También puedes definir logs separados para cada sitio. Para hacer esto cambia las líneas de ErrorLog y CustomLog. Esta opción es opcional, pero es últil si tienes multiples sitios.
Guardamos el archivo y ya tenemos la primera parte.
Activar el nuevo sitio Ahora debemos deshabilitar el sitio por defecto y habilitar el nuevo sitio. Esto lo hacemos con los comandos a2dissite y a2ensite de Apache, ejecutando en terminal
sudo a2dissite default && sudo a2ensite misitio
Recuerden cambiar misitio por el nombre que colocaste en /etc/apache2/sites-available/ en el paso 1
Reiniciar Apache Por último debemos reiniciar Apache para que los cambios tengan efecto:
sudo service apache2 reload
Eso es todo ya deberíamos poder navegar a localhost en el caso de ser un sitio local o a la IP o dirección de nuestro servidor y ver los contenidos del directorio que hemos colocado.
Contexto:
Ubuntu Server 12.04 Precise Pangolin
Apache httpd 2.2.22 (puedes saber la versión introduciendo "/usr/sbin/apache2 -v" en la consola)
Para Ubuntu (que no para cualquier distro) como norma general (y aunque no es estrictamente necesario para lo que voy a explicar) los ficheros y directorios de interés son:
Esta lista de directorios y su explicación no pretende ser exhaustiva ni completa, si necesitas saber algo concreto sobre algún fichero o directorio en Google encontraras de todo y mas. La utilidad de esto es que al menos sepas que si buscas sobre esto, te sera útil para ubuntu 12.04 (para otras distros, pues sinceramente ni idea. Solo sé sobre Ubuntu y para ser honesto sé muy poco). Me ha pasado que te hablan del gran fichero httpd.conf y luego al abrirlo lo encuentras vacío y claro tu ahi ya dudas hasta de tu propia existencia. Luego te enteras de que lo que te cuentan para httpd.conf es valido para Red Hat (y quizás derivados).
Bueno, al tema!
Un virtual host nos permite apuntar diversas urls a un solo servidor para que sirva los contenidos; de esta forma no necesitamos un ordenador para cada pagina que queramos publicar. Los virtual hosts como han dicho los administradores, estan en "/etc/apache2/sites-available". Ahi hay un fichero llamado 000-default (aunque en ubuntu desktop lo he visto nombrado como "default"), que es el host por defecto y que tiene esta pinta:
Código: [Seleccionar]
<VirtualHost *:80>
ServerAdmin webmaster@localhost
Todo esto son directivas que apache utiliza cuando busca información sobre la configuración de los host virtuales. Cuando Apache quiere saber algo (en este caso sobre virtual hosts), va al directorio en cuestión y lo parsea (eso es, analiza sintácticamente lo que hay escrito en los ficheros en busca de instrucciones que le indiquen lo que hay que hacer) y actúa en base a las directivas. En estos ficheros indicando las directivas adecuadas se pueden hacer cosas mucho mas complejas que lo que yo voy a explicar, si quieres ir mas a fondo consulta la documentación de apache sobre este tema en concreto en http://httpd.apache.org/docs/2.0/es/vhosts/
Para ser prácticos lo que yo hice es lo siguiente:
Copié este archivo default y le puse el nombre del host que yo queria configurar (o el nombre que quieras):
Código: [Seleccionar]
sudo cp /etc/apache2/sites-available/000-default /etc/apache2/sites-available/www.superpagina.com
puedes nombrarlos como quieras, siguiendo la numeración (si quieres saber en que orden los pusiste) o solo por el nombre de la url que apuntaras a la ip del servidor (para que si tienes varios se ordenen alfabéticamente de una forma mas comprensible)
Desactivé el archivo default
Código: [Seleccionar]
sudo a2disiste 000-default
Este comando lo que hace es borrar el archivo "/etc/apache2/sites-enabled/000-default". Este archivo es un enlace simbólico que va a buscar a "/etc/apache2/sites-available/000-default" que es donde realmente esta el archivo con la configuración por defecto. Para entendernos, es una forma rápida de ejecutar este comando "sudo rm /etc/apache2/sites-enabled/000-default".
Ahora edito el fichero que he copiado antes:
Código: [Seleccionar]
sudo nano /etc/apache2/sites-available/www.superpagina.com
Y lo dejo como sigue:
Código: [Seleccionar]
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName www.superpagina.com [color=red]<<<< Esto le dice a apache que cuando esta dns le envie una peticion lo reconozca y lo [/color]trate segun las normas que siguen
DocumentRoot /var/www/superpagina.com [color=red]<<<< Esto le dice a apache que aqui es donde hay que dirigir la peticion.[/color]
Options FollowSymLinks
AllowOverride None
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
Nota: para los que vayan con el piloto automatico puesto, aviso que lo que esta en rojo son indicaciones mías, no las copies en el fichero
Creo la carpeta raíz para mi súper pagina y le doy los permisos que tocan
Código: [Seleccionar]
sudo mkdir /var/www/superpagina.com
sudo chmod 755 -R /var/www/superpagina.com
Copio el típico fichero de prueba de apache para que el introducir la url pueda ver algo (para saber si va)
Código: [Seleccionar]
sudo cp /var/www/index.html /var/www/superpagina.com/index.html
Te recomiendo que lo edites y le cambies algo significativo para además comprobar si realmente apache te esta redirigiendo bien.
Una cosa guay de todo esto es que en ServerName le puedes indicar un subdominio como por exemplo www.molami.superpagina.com, le indicas la carpeta que quieras y ya tienes subdominio. En realidad apache lo que entenderá es que tiene que enviar la petición de www.superpagina.com/molami a esa carpeta, pero eso es transparente al usuario, asi que el no se va a enterar.
Ahora viene lo importante que es activar este virtual host:
Código: [Seleccionar]
sudo a2ensite www.superpagina.com
o lo que es lo mismo, crear un enlace simbólico en /etc/apache2/sites-enables que apuntes a /etc/apache2/sites-available/www.superpagina.com
Código: [Seleccionar]
sudo ln -s /etc/apache2/sites-available/www.superpagina.com /etc/apache2/sites-enabled/www.superpagina.com
Ahora ya esta, crea tantos virtual host como quieras, con el mismo directorio raíz si has comprado varios dominios diferentes (.com, .net, .org etc...) y los quieres apuntando a la misma carpeta que contenga la pagina o para diferentes paginas.
Ten en cuenta que para esto funcione en la pagina donde hayas contradado las url's tienes que haber configurado (como dice Dabo) para que apunte hacia la ip de tu servidor. Si eso no es así... al introducir www.superpagina.com no se enviara ninguna peticion al servidor, con lo cual no funcionara.
Pues nada gente, espero que si alguien buscando por ahi encuentra el post, que le sea útil, porque yo sinceramente he sudado sangre por algo que me parece muy facil una vez ha sido bien explicado (y espero que lo considereis una buena explicacion, que esa es otra xDD).
Un saludo! y animo!
pulchras