Apache es el servidor web más usado en el mundo y si bien es sencillo configurar una web en cuestión de minutos, también es cierto que tiene multitud de módulos y configuraciones que lo pueden hacer muchísimo más complejo (y completo). Por ello, cuando montamos un servidor de desarrollo en local, por lo general no queremos complicarnos y si estamos en GNU/Linux, los permisos de usuario son un problema.

Una solución rápida es montar nuestro apache en nuestra carpeta /home y asi evitarnos problemas con el usuario www-data y a la vez lo tenemos más a mano que no si estuviese en /var/www/etcetetc. Luego cuando despleguemos el proyecto en el servidor de producción, ya nos pelearemos con apache, pero eso, será en otro momento…

montar Apache en nuestra /home

Editamos el fichero /etc/hosts para que busque la resolución del nombre del dominio en nuestro equipo:

sudo nano /etc/hosts

Y añadimos:

127.0.0.1     dominio.com www.dominio.com

creamos un nuevo sitio en llamado www.dominio.com.conf

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/www.dominio.com.conf

editamos el nuevo fichero www.dominio.com.conf:

sudo nano /etc/apache2/sites-available/www.dominio.com.conf

para que nos quede de esta manera:

<VirtualHost *:80>
	ServerAdmin webmaster@dominio.com
 
	DocumentRoot /home/usuario/www/www.dominio.com
	ServerName dominio.com
	ServerAlias www.dominio.com
	<Directory /home/usuario/www/www.dominio.com/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride all
        Require all granted	
	</Directory>
 
	ErrorLog ${APACHE_LOG_DIR}/error-dominio.log
	CustomLog ${APACHE_LOG_DIR}/access-dominio.log combined
 
</VirtualHost>
 
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Nota: los logs de apache se leen desde /var/log/apache2/.
Nota: para apache < 2.4, hay que sustituir 'Require all granted' por 'Order allow,deny' y 'Allow from all'. activamos el nuevo sitio:

sudo a2ensite www.dominio.com.conf

creamos la carpeta www que contendrá los sitios web en nuestro home

mkdir /home/usuario/www/

y la del sitio web www.dominio.com

mkdir /home/usuario/www/www.dominio.com

(aquí introducimos un fichero de prueba o el sitio web completo)

editamos el fichero envvars de apache2 para que nuestro usuario pueda leer el directorio y ejecutarlo:

sudo nano /etc/apache2/envvars

y buscamos dentro las lineas:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=wwww-data

que sustituimos por las de nuestro usuario y grupo:

export APACHE_RUN_USER=usuario
export APACHE_RUN_GROUP=usuario

por último, recargamos la configuración de apache2:

sudo service apache2 reload

o bien reiniciamos apache2:

sudo service apache2 restart

Y ya tendríamos apache2 funcionando desde nuestra carpeta personal.