Autor Tema: apache 2.2 virtual host configuration (SOLUCIONADO)  (Leído 44703 veces)

Desconectado pulchras

  • Junior Member
  • **
  • Mensajes: 42
  • www.daboweb.com
apache 2.2 virtual host configuration (SOLUCIONADO)
« en: 13 de Mayo de 2012, 01:41:36 pm »
Hola de nuevo!

Sigo configurando cosillas de la instancia amazon ec2 corriendo ubuntu server 12.04 y me he topado con un problemilla.

Quiero configurar un subdominio del estilo "www.subdomain.domain.com" con apache httpd asi que me he puesto manos a la obra para buscar algun tutorial que explique de forma sencilla como hacerlo. Como todavia no domino (aunque ya se que no es lo recomendable) pues voy probando paso por paso los tutoriales que encuentro por ahi, con la documentacion de apache al lado para ver si me entero de lo que quieren hacer.

Entonces, he visto que hay diferencias entre los apache instalados segun sean redhat, ubuntu (con windows correremos un tupido velo xD) y alguno mas. Esto de entrada ya es de lo mas desorientador porque los ficheros de configuracion a veces no contienen lo mismo, o parece que ni siquiera estan (como el vhost.map que no se si es que hay que crearlo y es algo de dominio publico o que).

De todo lo que he leido, al final he visto dos soluciones que se repiten y que parece que son las buenas (almenos para Ubuntu). En estas paginas hay un tutorial para cada "tipo" de configuracion.
http://www.matthewwittering.co.uk/blog/ubuntu-tips/apache-htaccess-mod-rewrite-virtual-host.htm
http://funwithlinux.net/2012/05/ubuntu-12-04-web-server/

En uno te dicen que toques el /etc/apache/sites-available con mod_rewrite, y en el otro que incluyas el site en /etc/apache2/conf.d/mysite.com.conf

En la documentacion apache dicen que hacerlo con mod_rewrite es desaconsejable, que si hay otra opcion que lo hagas con otra. Pero tampoco me queda claro exactamente cuando una opcion y cuando otra.

Si me podeis orientar un poco, os lo agradeceria mucho... porque las dos soluciones que mas parecen abundar por internet no se parecen mucho y no se si esk que hay alguna contraindiciacion al seguir un metodo u otro.

Un saludo!
pulchras

Desconectado pulchras

  • Junior Member
  • **
  • Mensajes: 42
  • www.daboweb.com
Re:apache 2.2 virtual host configuration
« Respuesta #1 en: 18 de Mayo de 2012, 06:30:21 pm »
Bueno chicos!!

Despues de unos dias sin poder entretenerme con todo esto ya se como hacerlo.

Muchas gracias por la ayuda igualmente!!
pulchras

Desconectado destroyer

  • Administrator
  • *
  • Mensajes: 15869
  • Si quieres cambiar al mundo, cámbiate a ti mismo
    • cajondesastres.com De todo un poco
Re:apache 2.2 virtual host configuration
« Respuesta #2 en: 20 de Mayo de 2012, 02:29:06 pm »
Hola:
Sentimos no llegar a todo pero, sería interesante si nos pudieras comentar un poco la resolución de la misma para usuarios futuros.

Un saludo

PD.- Bienvenido al foro

Desconectado Dabo

  • Administrator
  • ******
  • Mensajes: 15348
    • https://www.daboblog.com
Re:apache 2.2 virtual host configuration
« Respuesta #3 en: 20 de Mayo de 2012, 05:49:22 pm »
yo llego tarde sorry ! Pero siempre lo creo en sites-avaibles después de crear la zona del CNAME en el DNS, un saludo ;)
Hacking, computing, are in my blood, are a part of me, a part of my life...Debian GNU/Linux rules.

Twitter; https://twitter.com/daboblog
Instagram: @daboblog


www.daboblog.com | www.debianhackers.net | www.caborian.com | www.apachectl.com | www.davidhernandez

Desconectado pulchras

  • Junior Member
  • **
  • Mensajes: 42
  • www.daboweb.com
Re:apache 2.2 virtual host configuration
« Respuesta #4 en: 21 de Mayo de 2012, 12:53:19 am »
Hola a todos!

La verdad es que estaba releyendo el ultimo mensaje y quedo un poco del palo xD
Quería escribir una explicación sobre lo que había hecho y como lo había hecho pero no me contentaba en hacerlo en versión reducida y como voy a contra reloj para poner un servidor digno en marcha, pues no me pude entretener. La cosa es que he estado buscando tutoriales a saco, leyendo mil cosas y en ningún sitio lo explicaban bien de verdad. Una vez lo conseguí, la verdad es que flipé en colores de no haber encontrado absolutamente nada que me iluminara el camino, siendo la cosa tan facil como es. Entonces, ya lo aviso lo que voy a escribir ahora no es apto para "pros" es más bien para gente que empieza (como yo).

Lo dicho, he encontrado en muchos tutoriales, blogs, foros y demás que te sueltan sin más la solución y cuando la pruebas... sorpresa! No funciona ni patrás!! Entonces si sigues indagando y por fin consigues hacer aquello que querías hacer, te das cuenta que simplemente poniendo en contexto la situación en la que el autor del tutorial estaba configurando, te hubieras ahorrado mil comidas de cabeza. Así que lo primero que haré es situar el contexto, o sea básicamente indicar la distribución y versión de los programas que he usado en los que sé que ha funcionado y los archivos y directorios a considerar para la configuración del programa en general (no solo para el caso concreto). Además, en estos tutoriales simplemente te dicen, haz esto o lo otro pero sin explicar lo que harás o que principios sigue lo que harás, con lo cual si lo que tu quieres hacer no es exactamente lo que quiere hacer el autor del tutorial, entonces o ya lo sabias hacer (y entonces no sirve para los que no sabemos) o el resultado puede ser cualquier cosa, lo cual ni sirve para aprender ni suele tener utilidad practica.

pero en serio, situar un contexto para que puede ser útil? Pues muy fácil, cuando la gente escribe sus tutoriales casi siempre lo hacen usando la ultima versión disponible en ese momento, pero no es nada raro que al cabo de una (o unas pocas) versiones posteriores los desarrolladores hayan tomado alguna decisión y hecho algún cambio que invalida la solución posteada en algún paso. Con lo cual, si al menos conoces la versión usada para la explicación como mínimo puedes descartar que ese sea el problema.


Contexto:
Ubuntu Server 12.04 Precise Pangolin
Apache httpd 2.2.22 (puedes saber la versión introduciendo "/usr/sbin/apache2 -v" en la consola)

Para Ubuntu (que no para cualquier distro) como norma general (y aunque no es estrictamente necesario para lo que voy a explicar) los ficheros y directorios de interés son:

/etc/apache2                                  directorio con los archivos de configuración de apache
/etc/apache2/apache2.conf           archivo de configuración principal para los binarios de apache httpd
/etc/apache2/envvars                    variables de entorno para diferentes scripts usados por apache
/etc/apache2/ports.conf                archivo usado para definir que puertos escucha apache cuando inicia
/etc/apache2/conf.d/                     cuando apache inicia también incluye archivos de configuración contenidos en este directorio
/etc/apache2/mods-available/       en este directorio se encuentran los módulos disponibles para apache
/etc/apache2/mods-enabled/         en este directorio se encuentran los módulos activados para apache
/etc/apache2/sites-available/         host virtuales disponibles para apache
/etc/apache2/sites-enabled/           host virtuales activados para apache
/var/www/                                       directorio raiz por defecto para apache. aqui van todos los archivos html
/usr/lib/cgi-bin/                              directorio por defecto para los scripts CGI
/var/log/apache2/                          directorio estándar para los logs de apache.

Esta lista de directorios y su explicación no pretende ser exhaustiva ni completa, si necesitas saber algo concreto sobre algún fichero o directorio en Google encontraras de todo y mas. La utilidad de esto es que al menos sepas que si buscas sobre esto, te sera útil para ubuntu 12.04 (para otras distros, pues sinceramente ni idea. Solo sé sobre Ubuntu y para ser honesto sé muy poco). Me ha pasado que te hablan del gran fichero httpd.conf y luego al abrirlo lo encuentras vacío y claro tu ahi ya dudas hasta de tu propia existencia. Luego te enteras de que lo que te cuentan para httpd.conf es valido para Red Hat (y quizás derivados).


Bueno, al tema!
Un virtual host nos permite apuntar diversas urls a un solo servidor para que sirva los contenidos; de esta forma no necesitamos un ordenador para cada pagina que queramos publicar. Los virtual hosts como han dicho los administradores, estan en "/etc/apache2/sites-available". Ahi hay un fichero llamado 000-default (aunque en ubuntu desktop lo he visto nombrado como "default"), que es el host por defecto y que tiene esta pinta:

Código: [Seleccionar]
<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>


Todo esto son directivas que apache utiliza cuando busca información sobre la configuración de los host virtuales. Cuando Apache quiere saber algo (en este caso sobre virtual hosts), va al directorio en cuestión y lo parsea (eso es, analiza sintácticamente lo que hay escrito en los ficheros en busca de instrucciones que le indiquen lo que hay que hacer) y actúa en base a las directivas. En estos ficheros indicando las directivas adecuadas se pueden hacer cosas mucho mas complejas que lo que yo voy a explicar, si quieres ir mas a fondo consulta la documentación de apache sobre este tema en concreto en http://httpd.apache.org/docs/2.0/es/vhosts/


Para ser prácticos lo que yo hice es lo siguiente:

Copié este archivo default y le puse el nombre del host que yo queria configurar (o el nombre que quieras):

Código: [Seleccionar]
sudo cp /etc/apache2/sites-available/000-default /etc/apache2/sites-available/www.superpagina.com
puedes nombrarlos como quieras, siguiendo la numeración (si quieres saber en que orden los pusiste) o solo por el nombre de la url que apuntaras a la ip del servidor (para que si tienes varios se ordenen alfabéticamente de una forma mas comprensible)

Desactivé el archivo default

Código: [Seleccionar]
sudo a2disiste 000-default
Este comando lo que hace es borrar el archivo "/etc/apache2/sites-enabled/000-default". Este archivo es un enlace simbólico que va a buscar a "/etc/apache2/sites-available/000-default" que es donde realmente esta el archivo con la configuración por defecto. Para entendernos, es una forma rápida de ejecutar este comando "sudo rm /etc/apache2/sites-enabled/000-default".


Ahora edito el fichero que he copiado antes:

Código: [Seleccionar]
sudo nano /etc/apache2/sites-available/www.superpagina.com
Y lo dejo como sigue:

Código: [Seleccionar]
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName www.superpagina.com      [color=red]<<<< Esto le dice a apache que cuando esta dns le envie una peticion lo reconozca y lo [/color]trate segun las normas que siguen
        DocumentRoot /var/www/superpagina.com       [color=red]<<<< Esto le dice a apache que aqui es donde hay que dirigir la peticion.[/color]
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>


Nota: para los que vayan con el piloto automatico puesto, aviso que lo que esta en rojo son indicaciones mías, no las copies en el fichero


Creo la carpeta raíz para mi súper pagina y le doy los permisos que tocan

Código: [Seleccionar]
sudo mkdir /var/www/superpagina.com
sudo chmod 755 -R /var/www/superpagina.com

Copio el típico fichero de prueba de apache para que el introducir la url pueda ver algo (para saber si va)

Código: [Seleccionar]
sudo cp /var/www/index.html /var/www/superpagina.com/index.html
Te recomiendo que lo edites y le cambies algo significativo para además comprobar si realmente apache te esta redirigiendo bien.


Una cosa guay de todo esto es que en ServerName le puedes indicar un subdominio como por exemplo www.molami.superpagina.com, le indicas la carpeta que quieras y ya tienes subdominio. En realidad apache lo que entenderá es que tiene que enviar la petición de www.superpagina.com/molami a esa carpeta, pero eso es transparente al usuario, asi que el no se va a enterar.

Ahora viene lo importante que es activar este virtual host:

Código: [Seleccionar]
sudo a2ensite www.superpagina.com
o lo que es lo mismo, crear un enlace simbólico en /etc/apache2/sites-enables que apuntes a /etc/apache2/sites-available/www.superpagina.com

Código: [Seleccionar]
sudo ln -s /etc/apache2/sites-available/www.superpagina.com /etc/apache2/sites-enabled/www.superpagina.com

Ahora ya esta, crea tantos virtual host como quieras, con el mismo directorio raíz si has comprado varios dominios diferentes (.com, .net, .org etc...) y los quieres apuntando a la misma carpeta que contenga la pagina o para diferentes paginas.

Ten en cuenta que para esto funcione en la pagina donde hayas contradado las url's tienes que haber configurado (como dice Dabo) para que apunte hacia la ip de tu servidor. Si eso no es así... al introducir www.superpagina.com no se enviara ninguna peticion al servidor, con lo cual no funcionara.


Pues nada gente, espero que si alguien buscando por ahi encuentra el post, que le sea útil, porque yo sinceramente he sudado sangre por algo que me parece muy facil una vez ha sido bien explicado (y espero que lo considereis una buena explicacion, que esa es otra xDD).


Un saludo! y animo!
pulchras

Desconectado pulchras

  • Junior Member
  • **
  • Mensajes: 42
  • www.daboweb.com
Re:apache 2.2 virtual host configuration
« Respuesta #5 en: 21 de Mayo de 2012, 01:01:05 am »
Perdonad... una par de concreciones mas.

todo lo que haga referencia a virtual hosts lo podeis poner en mismo fichero kilometrico, no importa para nada. Yo lo explico separado, porque para activar/desactivar virtual hosts de uno en uno... pues es mucho mas practico. Si se pusiera en un solo archivo, si algun dia se quisiera desactivar un solo.... pues seria mas percal porque lo tendrias que hacer manualmente editando ficheros de configuracion (dejando de lado que parece mas limpio si esta todo separado)

en cuanto al contenido del fichero, yo copio el default tal cual porque configuro otras cosas, pero con menos tambien funciona... si buscais por ahi, vereis en los tutoriales del personal ficheros mucho mas cortos que hacen lo mismo, es cuestion de buscar y ver si hay otras soluciones que es convenzan mas.

Un saludo!
pulchras

Desconectado Liamngls

  • Administrator
  • ******
  • Mensajes: 15688
    • Manuales-e
Re:apache 2.2 virtual host configuration (SOLUCIONADO)
« Respuesta #6 en: 21 de Mayo de 2012, 02:02:23 am »
Gracias por la info  ;-)

Desconectado Dabo

  • Administrator
  • ******
  • Mensajes: 15348
    • https://www.daboblog.com
Re:apache 2.2 virtual host configuration (SOLUCIONADO)
« Respuesta #7 en: 21 de Mayo de 2012, 10:40:36 pm »
Muy bien explicado, sólo añadir alguna cosa ya que te veo ah a tope -;)

Date un vistazo por /etc/apache2/security y cambia las directivas ServerToken por Prod (Producción) y ServerSignature en Off (así no se verá la versión de Apache), pero para que esto esté ok, pasa por /etc/php5/apache2/php.ini y pon expose_php en off, luego un apache2ctl restart y haz una petición del tipo curl -i aqui:tu_web y verás como no sale info de la versión de Apache o PHP

Sobre esto;

Ahi hay un fichero llamado 000-default (aunque en ubuntu desktop lo he visto nombrado como "default"), que es el host por defecto y que tiene esta pinta:

Ahí es donde responde o la web que se ve cuando navegas contra la IP del server, un ejemplo con la de nuestro server; http://188.165.193.24

Se llama así (000) para que esté ordenada alfabéticamente antes que los otros V hosts

Saludos !
Hacking, computing, are in my blood, are a part of me, a part of my life...Debian GNU/Linux rules.

Twitter; https://twitter.com/daboblog
Instagram: @daboblog


www.daboblog.com | www.debianhackers.net | www.caborian.com | www.apachectl.com | www.davidhernandez

Desconectado Liamngls

  • Administrator
  • ******
  • Mensajes: 15688
    • Manuales-e
Re:apache 2.2 virtual host configuration (SOLUCIONADO)
« Respuesta #8 en: 21 de Mayo de 2012, 11:23:27 pm »
apache2ctl

¿Tienes el ejecutable renombrado?  :ciego:

Desconectado Dabo

  • Administrator
  • ******
  • Mensajes: 15348
    • https://www.daboblog.com
Re:apache 2.2 virtual host configuration (SOLUCIONADO)
« Respuesta #9 en: 22 de Mayo de 2012, 10:06:12 pm »
jaja de ahí lo de APACHEctl ;D Mira; (Según la distro cambia, es apachectl en lugar de apache2ctl o httpd)

http://httpd.apache.org/docs/2.0/programs/apachectl.html
Hacking, computing, are in my blood, are a part of me, a part of my life...Debian GNU/Linux rules.

Twitter; https://twitter.com/daboblog
Instagram: @daboblog


www.daboblog.com | www.debianhackers.net | www.caborian.com | www.apachectl.com | www.davidhernandez

 

Aviso Legal | Política de Privacidad | Política de Cookies

el contenido de la web se rige bajo licencia
Creative Commons License