Вы находитесь на странице: 1из 3

Blog de Jos Prez Martnez

Mi pequeo rincn tecnolgico

Configurar un multihost con apache2 y en Debian/ubuntu [ACTUALIZADO]


Posted on 2 enero, 2014
Introduccin
Como desarrollador Web en alguna ocasin he tenido que realizar algn proyecto sin disponibilidad de tener un servidor de desarrollo. Hasta este punto, existen tres opciones si queremos trabajar con un servidor de desarrollo en lugar de usar un WAMP o un XAMPP (que son cmodos
pero poco profesionales).
Contratar un multihost a algn proveedor de servicios de hosting
Instalar una mquina servidor configurandola con multihost y su propio DNS, etc.
Instalar un servidor LAMP con multihost en el equipo de trabajo
En esta entrada me voy a decantar por esta ltima opcin por comodidad y rapidez. Pero hay que tener en cuenta que esta solucin slo servir para tener un entorno multihost para uno mismo, si se trabaja en grupo en un red no ser un sistema vlido.
Instalando apache2, php5, mysql5 (lamp)
Lo primero, es instalar un sistema LAMP (Linux, Apache, Mysql, PHP). Esto en un sistema Debian/Ubuntu es tan sencillo cmo ejecutar en consola:

$ sudo apt-get install apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libaprutil1-dbd-sqlite3 libaprutil1-ldap libhtml-template-perl mysql-server mysql-server-5.5 mysql-server-core-5.5 apache2-mpm-pref

A continuacin, como sana costumbre recomiendo cambiar la clave de root de MySQL.

mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourpassword');

Y por ltimo, si hemos instalado PHP, editar el fichero /etc/php5/apache2/php.ini y habilitar el uso de mysql, en la lnea:

;extension=mysql.so
Cambiadla por:
1extension=mysql.so

Un poco de DNS
Apache2 se configura de modo que se le indica al servidor en que interfaces de red y puertos debe funcionar. Tomemos la imagen siguiente:

Disponemos de varios nombres de dominio (reales o ficticios) y deseamos que apunten a la misma mquina, pero claro, no queremos que apache nos facilite las mismas Webs para cada uno, sino que sean proyectos diferentes (multihost), para ello debemos indicar el sistema DNS que
esos nombres apuntan a la IP del servidor de trabajo.
Si estuviramos en un entorno real y profesional, tendramos un servidor DNS y un servidor LAMP dedicado con una IP W.X.Y.Z, e indicaramos al servidor DNS que cada dominio apunte al servidor con IP W.X.Y.Z. Como estamos probando en un servidor monopuesto no
necesitamos configurar ningn servidor DNS, slo debemos editar el fichero /etc/hosts. Este fichero es una reminiscencia del origen de Internet y contiene parejas del tipo (nombre, ip).
De modo que si queremos aadir el dominio de prueba midominio, slo debemos aadir al final del fichero /etc/hosts la sighuiente lnea:

127.0.0.1

midominio

Una vez hecho esto, nuestro equipo sabe que la IP del dominio midominio es 127.0.0.1. Pero, slo nuestro equipo, este fichero es local al equipo dnde lo hemos editado de ah que este sistema slo nos sirva para el equipo de trabajo no para trabajar en equipo.
Sistema multihost en apache2

Y por fin, vamos a ver los pasos para configurar un sistema multihost en nuestro apache2. Supongamos que los DocumentRoot de los diferentes dominios estan en la carpeta /home/usuario/www, debemos seguir estos pasos:
1. Aadir el usuario al grupo WWW-DATA de apache2: Para que apache pueda leer/escribir sin problemas en sus carpetas (Cambiad USUARIO por vuestro usuario)
$ sudo usermod -G www-data USUARIO

2. Poner los permisos 775 para directorios y 664 para ficheros: Por lo mismo que en el apartado anterior ($PWD se evala como el directorio actual, se puede indicar el directorio correspondiente).
$ find $PWD -type d -print -exec chmod 775 {} \;
$ find $PWD -type f -print -exec chmod 664 {} \;

3. Cambiar los permisos del directorio del vhost:


$ sudo chown -R USUARIO:www-data *

4. Edita el fichero del virtual host:


<VirtualHost *:80>
ServerAdmin
info@miemail.com
Servername
midominio
DocumentRoot
/home/usuario/www/midominio
LogLevel
warn
ErrorLog
${APACHE_LOG_DIR}/midominio_error.log
CustomLog
${APACHE_LOG_DIR}/midominio_access.log combined
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/usuario/www/midominio>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>

Debemos tener cuidado con lo siguiente, en Debian/Ubuntu la configuracin inicial de apache2 desactiva el uso del fichero .htaccess. Para habilitarlo debemos ser cuidadods de poner la directiva AllowOverride All como en el ejemplo anterior.
Novedad: En versiones recientes de apache est configuracin puede no ser suficiente y debemos aadir alguna directiva adicional, para no encontrartos un error HTTP 403 Forbbiden. De modo que en la configuracin del directorio con el DOCUMENT ROOT debemos a
Require all granted, quedando algo as
:

<Directory "your directory here">


Order allow,deny
Allow from all
# New directive needed in Apache 2.4.3:
Require all granted

Tal y como podemos leer en Stack Overflow.


5. Activar el mod_rewrite:
$ sudo a2enmod rewrite
$ sudo service apache2 restart

6. Accede a http://midominio
Suerte con vuestros servidores LAMP!
Referencias
1. DNS en Wikipedia: http://en.wikipedia.org/wiki/Domain_Name_System
2. Virtual Host: http://httpd.apache.org/docs/2.2/vhosts/
3. Ejemplos: http://httpd.apache.org/docs/2.2/vhosts/examples.html
This entry was posted in Linux, Programacin, Web and tagged Debian, Ingeniera, Linux, programacin, Web by Jos Prez Martnez. Bookmark the permalink [http://blogs.ua.es/jpm33/2014/01/02/configurar-un-multihost-con-apache2-y-en-debianubuntu/] .
2 THOUGHTS ON CONFIGURAR UN MULTIHOST CON APACHE2 Y EN DEBIAN/UBUNTU [ACTUALIZADO]

Fran
on 10 agosto, 2014 at 21:57 said:

Hola! Gracias por el tutorial. Tengo un par de dudas, a ver si me puedes ayudar:
1. En el punto 3, donde dices Cambiar los permisos del directorio del vhost, da igual dnde est ese directorio? Es un directorio que debo crear o debo usar alguno en concreto?
/etc/apache2/sites-available? Y el archivo del virtual host, debe acabar en .conf?
2. Y, una vez creado el archivo del virtual host, debemos habilitarlo con a2ensite mivhost.conf?
He estado echando un ojo al manual de Apache, pero me cuesta encontrarlo. De todas maneras seguir investigando, pero si me guias un poco estara muy agradecido.

Jos Prez Martnez


on 15 septiembre, 2014 at 11:00 said:

Hola, en respuesta a tus preguntas:


1- El directorio da igual donde est. Slo importa que la ruta este bien puesta en fichero de apache y que los caracteres especiales estn escapados. Tambin es importante que
apache tenga permiso de lectura tanto en el directorio como para acceder a esa ruta.
2- Habilitar el vhost depende del sistema operativo y versin de apache. No se hace igual en XAMPP, que en WAMP, que en un apache2 genrico en un debian. Si usas debian/ubuntu seguramente sea a2ensite mivhost sin el conf. Te aconsejo que mires en google como funciona tu versin.
PS: Perdona que haya tardado en responder.
PS2: Por Google si pones Apache Virtual Host on Ubuntu podrs encontrar mucha mucha informacin y opciones. Suerte!

Вам также может понравиться