En esta entrada vamos a configurar las carpetas compartidas de VirtualBox como directorio web de Apache en CentOS. Este directorio debería ser un proyecto web que tenemos en local y queremos ejecutarlo bajo otro entorno, en este caso el de CentOS.

Para ello, antes deberíamos de haber realizado las siguientes tareas:

Y una vez realizadas, empezamos. Al principio de cada punto pondré entre corchetes en qué sistema operativo se deben realizar, si en el nuestro personal (anfitrión) o en el de la máquina virtual CentOS (invitado).

1. Seleccionar la carpeta que queremos compartir

[Anfitrión]

En VirtualBox, para compartir una carpeta en nuestra máquina virtual tenemos que hacer click con el botón derecho sobre nuestra máquina virtual → Configuración → Carpetas compartidas.

2. Deshabilitar SELinux en CentOS

[Invitado]

Antes de continuar, decir que SELinux (Security-Enhanced Linux), es una capa de seguridad transparente para el usuario, y que su función es limitar el acceso que las aplicaciones tienen a los ficheros de nuestro ordenador.

* ¿Y por qué lo vamos a deshabilitar? Por que si no, nuestra máquina virtual no nos daría acceso externo a través de las carpetas compartidas de VirtualBox. Además no debería haber ningún tipo de peligro, ya que es una máquina virtual a la que solo vamos a tener acceso nosotros o nuestro grupo de trabajo.

Y dicho esto, y con la máquina virtual arrancada, deshabilitemos SELinux.

2.1. Editar el fichero /etc/selinux/config:
$ vi /etc/selinux/config
2.2. Cambiar “SELINUX=enforcing” por “SELINUX=disabled”. Debería quedar algo así:

Deshabilitar SELinux CentOS 6

2.3. Reiniciar la máquina virtual con el comando reboot o escribir en consola:

$ setenforce 0

3. Configurar servidor virtual (VirtualHost)

[Invitado]

3.1. Editar el fichero /etc/httpd/conf/httpd.conf:
$ vi /etc/httpd/conf/httpd.conf
3.2. Descomentar la siguiente línea (quitar el símbolo de almohadilla # del principio):

NameVirtualHost *:80

3.3. Añadir las siguientes líneas cambiando la ruta hasta hasta nuestro directorio (DocumentRoot) y el nombre del servidor (ServerName) y guardar:

<VirtualHost *:80>
    DocumentRoot /ruta/hasta/nuestro/directorio
    ServerName nombre.loc
</VirtualHost>

3.4. Reiniciar el servidor de Apache:
$ service httpd restart
* Recordad que las carpetas que compartimos en VirtualBox se montan en dentro del directorio /media de CentOS.

** Recomiendo poner como nombre del servidor el dominio de nuestro proyecto con extensión .loc (refiriéndonos a local).

*** Y por supuesto hay muchas más directrices que se pueden aplicar a los VirtualHost, pero esto es suficiente para empezar a trabajar.

4. Dar permisos al usuario apache para el grupo vboxsf

[Invitado]
$ usermod -a -G vboxsf apache

5. Configurar el fichero hosts

[Anfitrión]

Ahora solo falta indicar a nuestro ordenador (NO la máquina virtual), que cuando accedamos desde el navegador a la URL de nuestro proyecto, la busque en la máquina virtual.

Para ello tenemos que editar el archivo hosts, que dependiendo el sistema operativo que usemos estará en un directorio o en otro. Copio de la wikipedia la localización del archivo en los sistemas operativos más comunes:

Sistema OperativoRuta
Windows 95 / 98 / MeC:\Windows\hosts
Windows NT / 2000C:\WINNT\System32\drivers\etc\hosts
Windows XP / 2003 / Vista / 7 / 8C:\Windows\System32\drivers\etc\hosts
Mac OS / iPhone OS/private/etc/hosts
Unix / Linux / BSD/etc/hosts
Novell NetWareSYS:etc\hosts
OS/2 / eComStation“bootdrive”:\mptn\etc\
BeOS/bots/beos/etc/hosts
Symbian OS 6.1-9.0C:\system\data\hosts
Symbian OS 9.1+C:\private\10000882\hosts
Android/system/etc/hosts

Una vez abierto con nuestro editor preferido, tendríamos que añadir una línea con la IP que le hayamos asignado a nuestra máquina virtual y el nombre de nuestro servidor (ServerName de Apache):

192.168.1.185     proyecto.loc

Y con esto ya deberíamos tener configuradas nuestras carpetas compartidas de VirtualBox como directorio web de Apache. Ya sabéis, podéis escribir cualquier duda o problema en los comentarios e intentamos solucionarlo.