Sigue éstos pasos para agregar un host virtual a tu servidor Apache sobre Ubuntu/Debian, puedes usar éstas instrucciones para tu servidor de desarrollo y también para producción.
Permisos de la carpeta
Localiza la ruta completa de la carpeta donde se están los archivos que quieres publicar en el host virtual:
/home/ivancp/projects/proyectophp
En Ubuntu apache se ejecuta bajo el usuario www-data , entonces es necesario que los archivos sean accesibles para ese usuario o grupo. Tenemos dos opciones:
1. Agregar usuario propietario de los archivos (en mi caso es ivancp) al grupo www-data.
sudo usermod -a -G www-data ivancp
2. Establecer como propietario de todos los archivos al usuario www-data, aunque no es recomendado es una salida usual.
sudo chown www-data:www-data /home/ivancp/projects/proyectophp -R
También es necesario cambiar los niveles de acceso a 755 para las carpetas y 644 para los archivos, si estás en una carpeta con numerosos archivos puedes realizar esa tarea con los siguientes comandos:
cd /home/ivancp/projects/proyectophp find . -type d -print0 | xargs -0 chmod 0755 find . -type f -print0 | xargs -0 chmod 0644
Crear el archivo de configuración
Agregar un nuevo archivo a la carpeta de sitios disponibles:
sudo touch /etc/apache2/sites-available/dev.proyectophp.conf
Agregar el siguiente contenido según la versión de Apache:
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName dev.proyectophp.com DocumentRoot /home/ivancp/projects/proyectophp <Directory /home/ivancp/projects/proyectophp> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName dev.proyectophp.com DocumentRoot /home/ivancp/projects/proyectophp <Directory /home/ivancp/projects/proyectophp> Options Indexes FollowSymLinks MultiViews AllowOverride all Allow from all </Directory> </VirtualHost>
Habilitar el sitio con el comando a2ensite y reiniciar el servidor
sudo a2ensite dev.proyectophp.conf sudo service apache2 restart
Ese archivo .conf puede contener más de una configuración de host virtual, dependerá de sus necesidades.
Finalmente deberían agregar la siguiente línea al archivo /etc/hosts
para que el dominio esté disponible desde el navegador solo en caso de que éste no exista
127.0.0.1 dev.proyectophp.com
Luego de ello podrán acceder desde el navegador http://dev.proyectophp.com
Ya esta listo el nuevo dominio, es recomendable que el dominio de desarrollo sea diferente al de producción o al de otros desarrolladores, ya que las configuraciones pueden variar.