Directorios virtuales en Apache (Ubuntu)
Digo Ubuntu sólo porque es la distro que uso, pero esto vale para cualquier distribución Linux.
Los directorios virtuales son comodísimos a la hora de desarrollar sitios web sobre Apache. Lo hago a menudo y por eso lo recomiendo. Doy por hecho que Apache está correctamente instalado y configurado.
En mi directorio de usuario creo un directorio llamado http (donde pongo username has de poner tu nombre de usuario, obviamente)
$ mkdir /home/username/http
En ese directorio voy a construir mis proyectos web. Creo el directorio de mi primer proyecto web (donde pongo proyecto1 has de poner el nombre de tu proyecto, obviamente).
$ mkdir /home/username/http/proyecto1
Recomiendo, para no complicarnos la vida, dar a este tipo de directorios nombres sin eñes, tildes ni espacios.
Y sólo por tener algo, creo el clásico index.html conteniendo el típico saludo:
$ echo "<h1>Hola mundo</h1>" > /home/username/http/proyecto1/index.html
Bueno. Como este directorio no está donde Apache espera que estén sus directorios web, lo primero que tengo que hacer es notificar a Apache esta situación especial. Le diré a Apache que no es el típico directorio web sino un directorio virtual: Un directorio web creado donde me dió la gana
Doy de alta proyecto1 como directorio virtual:
$ cd /etc/apache2/sites-available $ sudo cp default proyecto1 $ sudo gedit proyecto1
En el documento que se abre, para no complicarnos, sustituyo el texto por este otro (adáptalo según tus necesidades, claro):
<VirtualHost *:80>
ServerAdmin aqui.tu@email.com
ServerName proyecto1
DocumentRoot /home/username/http/proyecto1
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/username/http/proyecto1 >
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
Y activo este directorio virtual:
$ sudo a2ensite proyecto1
Edito el archivo hosts en conformidad:
$ sudo gedit /etc/hosts
añadiendo esta línea:
127.0.0.1 proyecto1
Reinicio Apache
$ sudo /etc/init.d/apache2 reload
Y ya está. En http://proyecto1 puedo ver mi página Hola mundo. Ahora, ¡a trabajar!
Añadido el 19 enero de 2012
Tal y como menciona perikitto en los comentarios, el tema de los permisos es de vital importancia y en este tutorial no se ve reflejado. Paso pues, a añadir la información sobre los permisos.
Una vez tengo mi directorio virtual de Apache operativo es importante asignar unos correctos permisos de acceso. El proceso de instalación de Apache en Ubuntu creó un grupo de usuarios llamado www-data y yo debo pertenecer a ese grupo. Lo haré a través del terminar (vuelvo a recordar que donde pongo username has de poner tu nombre de usuario):
$ sudo usermod -a -G www-data username
A continuación hago que el directorio /home/username/http pertenezca también el grupo de usuarios www-data. Esto es importante comprenderlo: el directorio /home/username/http me pertenece a mi, y yo pertenezco al grupo de usuarios www-data, pero ello no significa que mis directorios pertenecen a ese grupo, sino al revés. Si quiero que un directorio mío pertenezca también a un grupo, he de indicarlo.
$ sudo chgrp -R www-data /home/username/http
Y otorgo los permisos correspondientes así:
$ sudo chmod -R 2775 /home/username/http
El -R indica que la orden es recursiva, es decir: que lo que se indique a continuación aplicará a todos los directorios dentro de /home/username/http. Explico ahora lo del número 2755.
Con el 2 inicial no nos compliquemos: simplemente indica que quiero que cada archivo o directorio creado en el futuro dentro de /home/username/http pertenezca al grupo de usuarios al que pertenece /home/username/http. Vamos, que herede esa propiedad. No siempre es necesario indicar esto pero en este caso sí importa.
Son los otros tres dígitos los que veo necesario explicar con más detalle.
Para comprender mejor cómo se calculó ese 775, incluyo la tabla con las operaciones.

Y hecho esto, ya tenemos el directorio /home/username/http dispuesto para albergar todos nuestros proyectos web.
Acerca de esta entrada
Estás leyendo “Directorios virtuales en Apache (Ubuntu)”, de Quenerapú
- Publicado:
- 22|02|2010 a las 18:46h.
- Etiquetas:
- consola, directorio virtual
- Libros en Amazon.es:
- Sobre informática
| Sobre PHP
| Sobre CSS
| Sobre javaScript

10 comentarios
Añadir comentario | comments rss [?] | trackback uri [?]