HARDWARE Y SISTEMAS OPERATIVOS, GNU/Linux, Windows, Mac > GNU/Linux, Unix, *BSD and Free Software, Android
apache 2.2 virtual host configuration (SOLUCIONADO)
pulchras:
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
pulchras:
Bueno chicos!!
Despues de unos dias sin poder entretenerme con todo esto ya se como hacerlo.
Muchas gracias por la ayuda igualmente!!
pulchras
destroyer:
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
Dabo:
yo llego tarde sorry ! Pero siempre lo creo en sites-avaibles después de crear la zona del CNAME en el DNS, un saludo ;)
pulchras:
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: ---<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>
--- Fin del código ---
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: ---sudo cp /etc/apache2/sites-available/000-default /etc/apache2/sites-available/www.superpagina.com
--- Fin del código ---
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: ---sudo a2disiste 000-default
--- Fin del código ---
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: ---sudo nano /etc/apache2/sites-available/www.superpagina.com
--- Fin del código ---
Y lo dejo como sigue:
--- Código: ---<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>
--- Fin del código ---
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: ---sudo mkdir /var/www/superpagina.com
sudo chmod 755 -R /var/www/superpagina.com
--- Fin del código ---
Copio el típico fichero de prueba de apache para que el introducir la url pueda ver algo (para saber si va)
--- Código: ---sudo cp /var/www/index.html /var/www/superpagina.com/index.html
--- Fin del código ---
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: ---sudo a2ensite www.superpagina.com
--- Fin del código ---
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: ---sudo ln -s /etc/apache2/sites-available/www.superpagina.com /etc/apache2/sites-enabled/www.superpagina.com
--- Fin del código ---
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
Navegación
[#] Página Siguiente
Ir a la versión completa