Configurar Virtual Host de Apache y que nuestro equipo responda a un dominio ficticio en GNU/Linux

Muchas veces cuando desarrollo proyectos en PHP me gusta configurarles un Virtual Host en Apache y simular que estoy trabajando en dominio en el que quedarán.

Suponiendo que tienen la instalación como la que especifiqué en este post, en la siguiente ruta se encontrará el archivo httpd-vhosts.conf.

/usr/local/apache/conf/extra/httpd-vhosts.conf

En dicho archivo podremos agregar los directorio virtuales que queramos. Para este ejemplo, voy a crear un Virtual Host en con el dominio miejemplo.com, donde los archivos los almacenaré en el directorio /home/javoaxian/miejemplo.com.

Recordar que los cambios a los archivos de configuración de Apache como reiniciar éste, son como usuario root.

La configuración en el archivo httpd-vhosts.conf para lo anterior sería la siguiente:

<VirtualHost *:80>
    DocumentRoot "/home/javoaxian/miejemplo.com"
    ServerName miejemplo.com
    <Directory "/home/javoaxian/miejemplo.com">
        Options FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Guardada esta configuración, necesitamos modificar el archivo httpd.conf para poder habilitar los Virtual Host. En mi caso se encuentra en la siguiente ruta:

/usr/local/apache/conf/httpd.conf

Buscamos la línea:

#LoadModule vhost_alias_module modules/mod_vhost_alias.so

Y la descomentamos quedando de la siguiente manera:

LoadModule vhost_alias_module modules/mod_vhost_alias.so

Ahora buscamos la línea:

#Include conf/extra/httpd-vhosts.conf

y la descomentamos:

Include conf/extra/httpd-vhosts.conf

Ahora reiniciamos Apache para que funcione la nueva configuración:

root@vaiolinuxmintjx # apachectl restart

Hecha la configuración de Apache, deberemos crear en el HOME de nuestro usuario el directorio miejemplo.com:

javoaxian@vaiolinuxmintjx $ mkdir miejemplo.com

Dentro de ese directorio, crearé un archivo index.html muy sencillo con la leyenda:

Hola miejemplo.com

para hacerlo sencillo lo crearé así:

javoaxian@vaiolinuxmintjx $ echo "Hola miejemplo.com" > miejemplo.com/index.html

Ahora trataremos de ver la página de nuestro proyecto poniendo la siguiente dirección en nuestro navegador:

http://miejemplo.com

a lo que en el navegador nos responderá que no encuentra la página.

Aquí es donde viene el truco para que encuentre este dominio y es configurar el archivo del GNU/Linux:

/etc/hosts

Si editamos el archivo, podremos ver un contenido similar al siguiente:

127.0.0.1	localhost
127.0.1.1	vaiolinuxmintjx

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Aquí lo modificaremos para que quede de la siguiente manera:

127.0.0.1       localhost
127.0.1.1       vaiolinuxmintjx
localhost       miejemplo.com
127.0.0.1       miejemplo.com

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Recuerden editar el archivo anterior como usuario root.

Si volvemos ingresar a:

http://miejemplo.com

Y ahora si en el navegador nos mostrará el mensaje:

Hola miejemplo.com

Con esto ya podremos trabajar con nuestro proyecto y nuestro dominio simulado.

 

 

Habilitar public_html en Apache en GNU/Linux

Muchas veces deseamos configurar un servidor de desarrollo o algo similar, donde las cuentas de usuario puedan publicar sus páginas html. Para ello existe un directorio de Apache mejor conocido como public_html, en donde al habilitarlo, las cuentas de usuario en nuestro servidor, podrán tener dicho directorio y ahí podrían poner sus página.

Cabe mencionar que podemos cambiar el nombre de este directorio a por ejemplo htdocs que es el directorio principal de Apache donde se colocan las páginas html, o podríamos ponerle otro nombre, pero para seguir el estándar, sólo habilitaremos el directorio public_html.

Para ello en donde se tiene instalado Apache encontrará el directorio:

extra

Si realizaron la instalación de Apache como en este post que hice, podrán encontrarlo en:

/usr/local/apache/conf/extra

Ahí se encontrará el archivo:

httpd-userdir.conf

El cuál ya tiene una configuración predeterminada.

Ahora lo que necesitamos hacer es editar el archivo httpd.conf que en la instalación antes mencionada lo podemos localizar en:

/usr/local/apache/conf/httpd.conf

buscar la siguiente línea:

#LoadModule userdir_module modules/mod_userdir.so

y descomentarlas quedando de la siguiente manera:

LoadModule userdir_module modules/mod_userdir.so

Ahora buscamos la línea:

#Include conf/extra/httpd-userdir.conf

y la descomentamos quedando de la siguiente manera:

Include conf/extra/httpd-userdir.conf

Ahora sólo bastará con guardar los cambios y reiniciar Apache para que nos habilite el directorio.

Para probarlo, creen el directorio public_html en su HOME y coloquen un archivo html.

Para ver la página html que se acaba de colocar, se deberá ingresar en el navegador algo como lo siguiente:

http://localhost/~usuario/archivo.html

Para ejemplificar esto mi usuario es javoaxian y mi archivo le llamaré hola.html, por lo que pondré lo siguiente:

http://localhost/~javoaxian/hola.html

Y con esto podrán ver la página en el navegador.

Instalar Apache desde código fuente en GNU/Linux

Hace ya 10 años publiqué un post en mi antiguo blog llamado igual:

Instalar Apache desde código fuente en GNU/Linux

En el cuál explicaba como instalar Apache en distribuciones GNU/Linux y Unix, hoy sólo actualizaré y lo sintetizaré ya que actualmente hay que compilar previamente el Apache Portable Runtime (APR) para que podamos instalar Apache.

Descargamos los siguientes paquetes:

apr-1.6.3.tar.bz2

apr-util-1.6.1.tar.bz2

apr-iconv-1.2.2.tar.bz2

httpd-2.4.29.tar.bz2

Para comenzar nos convertiremos en usuario root.

javoaxian@vboxlinuxmintjx $ sudo su -

En mi caso los descargué en mi directorio de Descargas, nos situamos en el directorio donde descargamos los paquetes y los colocamos en /usr/local/src para después instalarlos.

root@vaiolinuxmintjx $ cd /ruta/donde/descargamos
root@vboxlinuxmintjx $ cp apr-* /usr/local/src/
root@vboxlinuxmintjx $ cp httpd-2.4.29.tar.bz2 /usr/local/src/
root@vboxlinuxmintjx $ cd /usr/local/src/

Comenzaremos instalando apr.

root@vboxlinuxmintjx $ tar -jxvf apr-1.6.3.tar.bz2
root@vboxlinuxmintjx $ cd apr-1.6.3/
root@vboxlinuxmintjx $ ./configure --prefix=/usr/local/apr

Es posible que en esta parte, mande algunos errores de dependencia, como por ejemplo que no tienen instalado gcc, o los fuentes de GCC como es el paquete libc6-dev.

Para instalarlos en sistemas basados en Debian, como Ubuntu, simplemente ejecuten el comando apt-get install con los paquetes que vayan necesitando, por ejemplo:

root@vboxlinuxmintjx $ apt-get install gcc libc6-dev

Ahora seguimos con la instalación.

root@vboxlinuxmintjx $ make
root@vboxlinuxmintjx $ make install

Ahora instalamos apr-utils.

root@vboxlinuxmintjx $ cd /usr/local/src/
root@vboxlinuxmintjx $ tar -jxvf apr-util-1.6.1.tar.bz2
root@vboxlinuxmintjx $ cd apr-util-1.6.1/
root@vboxlinuxmintjx $ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

Si obtenemos el siguiente error:

xml/apr_xml.c:35:19: fatal error: expat.h: No existe el archivo o el directorio
compilation terminated.
/usr/local/src/apr-util-1.6.1/build/rules.mk:206: fallo en las instrucciones para el objetivo 'xml/apr_xml.lo'
make[1]: *** [xml/apr_xml.lo] Error 1
make[1]: se sale del directorio '/usr/local/src/apr-util-1.6.1'
/usr/local/src/apr-util-1.6.1/build/rules.mk:118: fallo en las instrucciones para el objetivo 'all-recursive'
make: *** [all-recursive] Error 1

Instalaremos el siguiente paquete:

root@vboxlinuxmintjx $ apt-get install libexpat1-dev

Continuamos la instalación:

root@vboxlinuxmintjx $ make
root@vboxlinuxmintjx $ make install

Ahora instalamos apr-iconv.

root@vboxlinuxmintjx $ cd /usr/local/src/
root@vboxlinuxmintjx $ tar -jxvf apr-iconv-1.2.2.tar.bz2
root@vboxlinuxmintjx $ cd apr-iconv-1.2.2/
root@vboxlinuxmintjx $ ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
root@vboxlinuxmintjx $ make
root@vboxlinuxmintjx $ make install

Ahora procederemos a instalar apache.

root@vboxlinuxmintjx $ cd /usr/local/src/
root@vboxlinuxmintjx $ tar -jxvf httpd-2.4.29.tar.bz2
root@vboxlinuxmintjx $ cd httpd-2.4.29/
root@vboxlinuxmintjx $ ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so

Si nos aparece el siguiente error:

checking for pcre-config... false
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

Instalamos el siguiente paquete:

root@vboxlinuxmintjx $ apt-get install libpcre3-dev

Continuamos con la instalación:

root@vboxlinuxmintjx $ make
root@vboxlinuxmintjx $ make install

Con esto ya queda instalado apache, para arrancar el servidor bastará ejecutar lo siguiente:

root@vboxlinuxmintjx $ /usr/local/apache/bin/apachectl start

Y para detenerlo:

root@vboxlinuxmintjx $ /usr/local/apache/bin/apachectl stop

En mi caso me gusta agregar la ruta de las herramientas en el PATH de todos los usuarios, para ello hay que editar el archivo como usuario root:

/etc/profile

y agregamos las siguientes líneas:

export APACHE=/usr/local/apache
export PATH=$PATH:$APACHE/bin

Si se desea más información, como configurar un script de arranque y otras cosas, visita mi viejo post.