{"id":221,"date":"2014-01-02T13:35:35","date_gmt":"2014-01-02T13:35:35","guid":{"rendered":"https:\/\/blogs.ua.es\/jpm33\/?p=221"},"modified":"2015-04-02T10:18:02","modified_gmt":"2015-04-02T10:18:02","slug":"configurar-un-multihost-con-apache2-y-en-debianubuntu","status":"publish","type":"post","link":"https:\/\/blogs.ua.es\/jpm33\/2014\/01\/02\/configurar-un-multihost-con-apache2-y-en-debianubuntu\/","title":{"rendered":"Configurar un multihost con apache2 y en Debian\/ubuntu [ACTUALIZADO]"},"content":{"rendered":"<h1>Introducci\u00f3n<\/h1>\n<p>Como desarrollador Web en alguna ocasi\u00f3n he tenido que realizar alg\u00fan 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 c\u00f3modos pero poco profesionales).<\/p>\n<ul>\n<li>Contratar un multihost a alg\u00fan proveedor de servicios de hosting<\/li>\n<li>Instalar una m\u00e1quina servidor configurandola con multihost y su propio DNS, etc.<\/li>\n<li>Instalar un servidor LAMP con multihost en el equipo de trabajo<\/li>\n<\/ul>\n<p>En esta entrada me voy a decantar por esta \u00faltima opci\u00f3n por comodidad y rapidez. Pero hay que tener en cuenta que esta soluci\u00f3n s\u00f3lo servir\u00e1 para tener un entorno multihost para uno mismo, si se trabaja en grupo en un red no ser\u00e1 un sistema v\u00e1lido.<\/p>\n<h1>Instalando apache2, php5, mysql5 &#8230; (lamp)<\/h1>\n<p>Lo primero, es instalar un sistema LAMP (Linux, Apache, Mysql, PHP). Esto en un sistema Debian\/Ubuntu es tan sencillo c\u00f3mo ejecutar en consola:<\/p>\n<pre>$ 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-prefork libapache2-mod-php5 libtidy-0.99-0 php5 php5-cli php5-common php5-curl php5-gd php5-mysql php5-odbc php5-sqlite php5-tidy php5-xdebug php5-xmlrpc libapache2-mod-auth-mysql libphp-jpgraph dbconfig-common libmcrypt4 php-doc php5-mcrypt phpmyadmin<\/pre>\n<p>A continuaci\u00f3n, como sana costumbre recomiendo cambiar la clave de <b>root<\/b> de <b>MySQL<\/b>.<\/p>\n<pre>mysql -u root\r\nmysql&gt; SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourpassword');<\/pre>\n<p>Y por \u00faltimo, si hemos instalado PHP, editar el fichero <b>\/etc\/php5\/apache2\/php.ini<\/b> y habilitar el uso de mysql, en la l\u00ednea:<\/p>\n<pre>;extension=mysql.so\r\n\r\nCambiadla por: \r\n\r\n1extension=mysql.so<\/pre>\n<h1>Un poco de DNS<\/h1>\n<p>Apache2 se configura de modo que se le indica al servidor en que interfaces de red y puertos debe funcionar. Tomemos la imagen siguiente:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Esquema de sistema multrihost con apache2 y multidominio\" src=\"http:\/\/1.bp.blogspot.com\/-Gz16KCvdIEs\/UCPEh01E4HI\/AAAAAAAAAJY\/rNO_8jX0FwI\/s1600\/virtual_hosts_diagram.jpg\" alt=\"\" width=\"673\" height=\"295\" \/><\/p>\n<p>Disponemos de varios nombres de dominio (reales o ficticios) y deseamos que apunten a la misma m\u00e1quina, 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.<\/p>\n<p>Si estuvi\u00e9ramos en un entorno real y profesional, tendr\u00edamos un servidor DNS y un servidor LAMP dedicado con una IP W.X.Y.Z, e indicar\u00edamos al servidor DNS que cada dominio apunte al servidor con IP W.X.Y.Z. Como estamos probando en un servidor &#8220;monopuesto&#8221; no necesitamos configurar ning\u00fan servidor DNS, s\u00f3lo debemos editar el fichero <b>\/etc\/hosts<\/b>. Este fichero es una reminiscencia del origen de Internet y contiene parejas del tipo (nombre, ip).<\/p>\n<p>De modo que si queremos a\u00f1adir el dominio de prueba &#8220;midominio&#8221;, s\u00f3lo debemos a\u00f1adir al final del fichero <b>\/etc\/hosts<\/b> la sighuiente l\u00ednea:<\/p>\n<pre>127.0.0.1    midominio<\/pre>\n<p>Una vez hecho esto, nuestro equipo sabe que la IP del dominio <b>midominio<\/b> es 127.0.0.1. Pero, s\u00f3lo nuestro equipo, este fichero es local al equipo d\u00f3nde lo hemos editado de ah\u00ed que este sistema s\u00f3lo nos sirva para el equipo de trabajo no para trabajar en equipo.<\/p>\n<h1>Sistema multihost en apache2<\/h1>\n<p>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 <b>\/home\/usuario\/www<\/b>, debemos seguir estos pasos:<\/p>\n<ol>\n<li><b>A\u00f1adir el usuario al grupo WWW-DATA de apache2<\/b>: Para que apache pueda leer\/escribir sin problemas en sus carpetas (Cambiad USUARIO por vuestro usuario)\n<pre>$ sudo usermod -G www-data USUARIO<\/pre>\n<\/li>\n<li><b>Poner los permisos 775 para directorios y 664 para ficheros<\/b>: Por lo mismo que en el apartado anterior ($PWD se eval\u00faa como el directorio actual, se puede indicar el directorio correspondiente).\n<pre>$ find $PWD -type d -print -exec chmod 775 {} \\;\r\n$ find $PWD -type f -print -exec chmod 664 {} \\;<\/pre>\n<\/li>\n<li><b>Cambiar los permisos del directorio del vhost<\/b>:\n<pre>$ sudo chown -R USUARIO:www-data *<\/pre>\n<\/li>\n<li><b>Edita el fichero del virtual host<\/b>:\n<pre><code>\r\n&lt;VirtualHost *:80&gt;\r\n\tServerAdmin\tinfo@miemail.com\r\n\tServername\tmidominio\r\n\tDocumentRoot\t\/home\/usuario\/www\/midominio\r\n\tLogLevel\twarn\r\n\tErrorLog \t${APACHE_LOG_DIR}\/midominio_error.log\r\n\tCustomLog\t${APACHE_LOG_DIR}\/midominio_access.log combined\r\n\t&lt;Directory \/&gt;\r\n\t\tOptions FollowSymLinks\r\n\t\tAllowOverride None\r\n\t&lt;\/Directory&gt;\r\n\t&lt;Directory \/home\/usuario\/www\/midominio&gt;\r\n\t\tOptions Indexes FollowSymLinks MultiViews\r\n\t\tAllowOverride All\r\n\t\tOrder allow,deny\r\n\t\tallow from all\r\n\t&lt;\/Directory&gt;\r\n&lt;\/VirtualHost&gt;<\/code><\/pre>\n<p>Debemos tener cuidado con lo siguiente, en Debian\/Ubuntu <b>la configuraci\u00f3n inicial de apache2 desactiva el uso del fichero .htaccess<\/b>. Para habilitarlo debemos ser cuidadods de poner la directiva <b> AllowOverride All<\/b> como en el ejemplo anterior.<\/p>\n<p style=\"background-color: yellow\"><strong>Novedad:<\/strong> En versiones recientes de apache est\u00e1 configuraci\u00f3n puede no ser suficiente y debemos a\u00f1adir alguna directiva adicional, para no encontrartos un error HTTP 403 Forbbiden. De modo que en la configuraci\u00f3n del directorio con el DOCUMENT ROOT debemos a <strong>Require all granted<\/strong>, quedando algo as\u00ed<\/p>\n<p>:<\/p>\n<pre>&lt;Directory \"your directory here\"&gt;\r\n   Order allow,deny\r\n   Allow from all\r\n   # New directive needed in Apache 2.4.3: \r\n   Require all granted\r\n\r\n<\/pre>\n<p>Tal y como podemos leer en <a href=\"http:\/\/stackoverflow.com\/questions\/6959189\/apache-virtualhost-403-forbidden\">Stack Overflow<\/a>.<\/li>\n<li><b>Activar el mod_rewrite<\/b>:\n<pre>$ sudo a2enmod rewrite\r\n$ sudo service apache2 restart<\/pre>\n<\/li>\n<li>Accede a http:\/\/midominio<\/li>\n<\/ol>\n<p>Suerte con vuestros servidores LAMP!<\/p>\n<h1>Referencias<\/h1>\n<ol>\n<li>DNS en Wikipedia: <a href=\"http:\/\/en.wikipedia.org\/wiki\/Domain_Name_System\" target=\"_blank\">http:\/\/en.wikipedia.org\/wiki\/Domain_Name_System<\/a><\/li>\n<li>Virtual Host: <a href=\"http:\/\/httpd.apache.org\/docs\/2.2\/vhosts\/\" target=\"_blank\">http:\/\/httpd.apache.org\/docs\/2.2\/vhosts\/<\/a><\/li>\n<li>Ejemplos: <a href=\"http:\/\/httpd.apache.org\/docs\/2.2\/vhosts\/examples.html\" target=\"_blank\">http:\/\/httpd.apache.org\/docs\/2.2\/vhosts\/examples.html<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Como desarrollador Web en alguna ocasi\u00f3n he tenido que realizar alg\u00fan 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 &hellip; <a href=\"https:\/\/blogs.ua.es\/jpm33\/2014\/01\/02\/configurar-un-multihost-con-apache2-y-en-debianubuntu\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3080,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[135,374,236731],"tags":[481,154,236729,236718,23],"class_list":["post-221","post","type-post","status-publish","format-standard","hentry","category-linux","category-programacion","category-web","tag-debian","tag-ingenieria","tag-linux","tag-programacion-2","tag-web"],"_links":{"self":[{"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/posts\/221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/users\/3080"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/comments?post=221"}],"version-history":[{"count":6,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/posts\/221\/revisions"}],"predecessor-version":[{"id":314,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/posts\/221\/revisions\/314"}],"wp:attachment":[{"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/media?parent=221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/categories?post=221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/tags?post=221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}