Cómo personalizar Apache en Ubuntu

Lo que sucede es que a veces es complicado tener toda la estructura de tu sitio o de tus sitios bajo /var/www, sobre todo si trabajas para otros.

Una solución genial es tener una carpeta para cada proyecto, de modo que sea mas fácil manejarlas. Por ejemplo, to tengo una carpeta en /home/apache/ y dentro de ella todos mis proyectos.

Para configuarlos de esta manera, debes seguir los siguientes pasos.

Crea un nuevo directorio en /home y dale pásale la propiedad al usuario y grupo www-data:

sudo mkdir /home/apache
sudo chown www-data:www-data
cd apache

En este directorio, siempre como usuario administrador (es decir, usando sudo), debes crear todos los directorios que necesites. Al final debes pasarlos al usuario www-data:

sudo tar xvfz ~/descargas/wordpress-2.7.1-es_ES.tar.gz
sudo tar xvfz ~/descargas/MT-4.25com-en.tar.gz
sudo mv wordpress wp && sudo mv MTCOM-4.25-en mt
sudo chown www-data:www-data *

Ahora nos vamos al directorio /etc/apache2 dónde están todas las configuraciones y dónde vamos a crear nuestros directorios. Porque lo que tenemos que hacer es crear un archivo en /home/apache2/sites-avalilable con la configuración que queremos para nuestro sitio. Veamos el ejemplo con WordPress.

sudo vi sites-available/wp.conf

Y con colocar esto dentro del archivo:

Alias /wp/ "/home/apache/wp/"
<Directory "/home/apache/wp/">
    Options Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Siguiendo este mismo ejemplo, creamos un archivo para Movable Type, con la orden sudo vi sites-available/mt.conf:

Alias /mt/ "/home/apache/mt/"
<Directory "/home/apache/mt/">
    AddHandler cgi-script .cgi
    Options ExecCGI Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Antes de terminar, creamos un enlace simbólico de estos dos archivos al directorio sites-available. Esto se hace asi, porque desactivar un sitio solo implica borrar un enlace simbólico, y si queremos recuperar mas tarde la configuración, solo se vuelve a crear.

sudo ln -s /etc/apache2/sites-available/mt.conf /etc/apache2/sites-enabled/002-mt
sudo ln -s /etc/apache2/sites-available/wp.conf /etc/apache2/sites-enabled/002-wp

Para concluir, reiniciamos apache:

sudo /usr/sbin/apache2ctl graceful

Una última cosa: Es necesario que algunos directorios pertenezcan a www:data porque el servidor httpd escribe en ellos, pero hay otros que pueden petenecer a tu usuario, por ejemplo todo el diectorio wp-content, con lo que podrías modificar un tema o instalar un plugin sin permisos de administrador.