«

»

Oct 17

Como configurar un Virtualhost en Apache

Bueno, me ha dicho Gonzo que no estaría mal publicar este pequeño tutorial que le he hecho de como configurar un Virtualhost en Apache, por si os sirve a alguno 🙂

El tutorial es para Apache2 sobre Ubuntu, concretamente Ubuntu 10.10 (Maverick) pero en otras versiones es más o menos igual. Todos los comandos son para hacerlo a través de la consola, y dicho esto: Comencemos!

Los ficheros de configuración de Apache están en /etc/apache2

cd /etc/apache

Si hacéis un ls vereis varias cosas, entre ellas dos directorios que se llaman sites-available y sites-enabled.

En sites-available es donde están los ficheros de los sites (webs) y en sites-enabled están los sites que están habilitados. En realidad en sites-enabled no hay nada, solo enlaces simbólicos (Accesos directos de los de windows) a los ficheros de sites-available que hayáis habilitado. Si haceis:

cd sites-enabled

Y luego

ls -la

Vereis que el único que hay (000-default) tiene esta pinta:

lrwxrwxrwx 1 root root   26 2010-09-21 00:32 000-default -> ../sites-available/default

Si miráis la primera letra veréis que pone “l” eso quiere decir que es un enlace (l de link) y en el nombre pone el nombre, luego -> y después otro nombre, que es a donde apunta el enlace.

Todo esto no te sirve de nada, pero es cultura general 🙂

Bueno, ponéis

cd ../sites-available

y vamos a donde nos interesa. Ahora vamos a crear el primer virtualhost. Escribes sudo gedit mivirtualhost y se te abrirá una ventana del editor de textos vacía y os picáis esto:

<VirtualHost *:80>
ServerName mivirtualhost
ServerAdmin webmaster@localhost

DocumentRoot /home/tu_usuario/Documentos/tu_directorio_de_la_web
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/tu_usuario/Documentos/tu_directorio_de_la_web/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
DirectoryIndex index.php
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>

Esto son las opciones que suelo utilizar en mi servidor de desarrollo, se puede tocar mucho y opinar mas…Vamos a destriparlo:

ServerName mivirtualhost Es el nombre del servidor web, luego en el firefox pondréis http://mivirtualhost y se os cargará la web, aquí ponéis el nombre que queréis para el servidor, si ponéis nosequeponer luego en el firefox escribiréis http://nosequeponer Podéis ponerle puntos si queréis (P.E. mivirtualhost.de.casa) o guiones bajos y algunos caracteres mas, pero os recomiendo que no pongáis espacios y que tampoco le llaméis mivirtualhost.com porque luego no sabréis si queréis cargar vuestra copia del disco duro o la de internet! 😉

DocumentRoot /home/tu_usuario/Documentos/tu_directorio_de_la_web El el directorio donde tenéis los ficheros, este no tiene nada mas que explicar, poned la ruta a la carpeta donde tenéis los archivos y ya está.

<Directory /home/tu_usuario/Documentos/tu_directorio_de_la_web/> Aquí lo mismo que antes

FIJAOS BIEN EN QUE UNO LLEVA / AL FINAL Y EL OTRO NO!!!

DirectoryIndex index.php Este es el fichero que va a cargar cuando pongáis http://mivirtualhost si no le dices otro. Si vuestro fichero principal es index.html lo poneis en vez de index.php

Y ya esta! Guardáis y cerráis.

Ya está configurado el site, ahora solo falta que Apache se entere, hay que habilitar el sitio, poneis en la consola:

sudo a2ensite mivirtualhost

Si le habéis llamado mivirtualhost: sudo a2ensite mivirtualhost Os recomiendo que llaméis al fichero como se llame el virtualhost, por no liaros.

Y ahora a que se entere el apache de que habéis cambiado la configuración:

sudo /etc/init.d/apache2 reload

A veces el Apache se queda un poco “sordo” y no se entera del reload, así es que en ese caso ponéis:

sudo /etc/init.d/apache2 stop

sudo /etc/init.d/apache2 reload

sudo /etc/init.d/apache2 start

Y por ultimo, pero no por ello menos importante, vamos a editar el fichero hosts para que el firefox sepa que ese servidor esta en vuestro disco y no lo busque por internet:

sudo gedit /etc/hosts

Buscad una linea que pone 127.0.0.1 localhost localhost.localdomain (Quizá ponga mas cosas)

Debajo de esa, por ponerla en alguna parte (Podeis ponerla en cualquier parte) poneis:

127.0.0.1 mivirtualhost

Si añadis mas virtualhost los poneis en la misma linea:

127.0.0.1 mivirtualhost miotrovirtualhost

Y ya esta!

Ahora si poneis

ping -c 1 mivirtualhost

os dirá, en la primera linea:

PING mivirtualhost (127.0.0.1) blah, blah, blah

Eso quiere decir que está buscando el servidor mivirtualhost en vuestro equipo, osea, que funciona!

Ya podéis abrir el firefox y poner http://mivirtualhost y… Magia!!!

Pues así con todos los que queráis!

A ver si os sale!

8 comentarios

Ir al formulario de comentarios

  1. gonzo

    Que bueno, quien te iba a decir que lo necesitaría tan pronto.

  2. onosenday.net

    Me alegro de que te haya servido! 😀

  3. Armando

    Muy bueno el manual, me fue muy útil ya que soy nuevo en software libre, solo una duda, cuando coloco la direccion de mivirtualhost (elnombre virtual) me da esto el navegador

    Forbidden

    You don’t have permission to access / on this server.
    Apache/2.2.16 (Ubuntu) Server at mivirtualhost Port 80

    eso es desde la maquina que tiene el servidor virtual, te aclaro la maquina forma parte de una red lan, y tambien me interesaria que vieran la pagina en el resto de las maquinas en lan

  4. onosenday.net

    Me alegro de que te haya servido 😀

    En cuanto a tu problema, yo diría, sin conocer más detalles, que hay un problema de permisos en la carpeta donde tienes la web.

    En principio, lo suyo es que la carpeta pertenezca o, al menos, al grupo www-data, pero también puedes hacerle un chmod +r

    Espero que te sirva! Un saludo 😀

  5. Roguer P Falconi

    Hola amigo,
    mil Gracias por el manual me sirvio de mucho, pero ahora me sale “You don’t have permission to access / on this server.”.

    Mi carpeta de archivos es /media/SHARE/Proyectos/wamp/www/
    que pertenece a un disco que comparte entre linux y windows, ya que en windows trabajo con wamp a veces.

    Le cambie los permisos con chmod +r como indicaste pero sigo con este problema, me podrias ayudar porfa? porque ya me canse de programar en windows y quiero sacarle el jugo a mi ubuntu! 🙂

    Mil Gracias de antemano por tu tiempo 😀

  6. treboR58

    soy usuario d W,pero una q otra vez me actualizo en Lx. Intentaba instalar mi web sobre un server en squeeze y aunke ya habia configurado mi virual host probé la de este tutorial pero siguió sacándome el cartel FORBIDEN. así que pongo mi solución akí por si alguien se topa el mismo problema:
    chmod -R 777 /var/www/mi_web
    Saludos

  7. Juan Carlos Llorente Fernandez

    Gracias por la aportación, treboR58, es correcto, aunque no muy fino. Con esa orden le das permiso a TODOS para que lean, escriban y ejecuten en todos los directorios de la web y sobre todos los archivos.
    No hay una sola forma de hacerlo, básicamente consiste en que el usuario que ejecuta el demonio de apache (Normalmente www-data) tenga acceso a esos archivos. Puede ser como propietario o como grupo.
    Lo suyo es hacerlo como grupo, quedando nosotros como propietarios, de esta forma la orden seria:
    chmod -R 774 /var/www/mi_web

    Un saludo y gracias!

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>