Cómo montar un servidor de páginas web con apache2

apache-logo

Hoy hablaremos de apache. El más que conocido y mundialmente extendido servidor de páginas web.
Lo tenéis disponible para casi todos los sistemas operativos.

Apache, como servidor de páginas web dispone de múltiples funcionalidades a cada cual más peculiar/compleja. Pero hoy no hablaremos de nada complicado. Montaremos un simple servidor web con soporte para múltiples websites o vhosts para poder alojar y servir varios sitios web en un mismo servidor.

Primero de todo aclararemos conceptos. Lo más normal es que queramos ejecutar un servidor LAMP (Linux Apache MySQL y PHP) ya que la mayoría de CMS’s, ERP’s o aplicaciones web (Joomla, WordPress, Prestashop, etc… ) que hay, están desarrolladas sobre estas tecnologías. Cabe mencionar que hay otros frameworks o aplicaciones que corren sobre Python, como por ejemplo Django y algunos otros sobre Perl o Ruby.

Para no dispersar el tema del post nos centraremos en algo básico como la creación de vhosts en apache. El resto de tecnologías están fuera del alcance del post de hoy.

Primero de todo necesitaremos un servidor con Linux, cualquier distribución vale.

Seguidamente necesitaremos instalar apache y configurarlo debidamente para que entienda que queremos que gestione varios sitios web.

Lo que explicaré a continuación NO ES PARA ENTORNOS PRODUCTIVOS ( o no todo ) es una manera rápida de disponer de un entorno de pruebas o de desarrollo para poder trabajar con apache y servir varios websites a la vez.

Llevaremos a cabo la configuración en un entorno Debian 8. Es por ello que quizá encontréis alguna diferencia en los archivos de configuración y probablemente los nombres de los mismos, pero las directivas de configuración de apache son las mismas.

1. Instalación de apache2:

apt-get install apache2

2. Configuración de apache2:

Nos vamos al directorio principal de configuración de apache:

cd /etc/apache2/

Y aquí dentro podemos ver que hay varios directorios, principalmente nos interesan los directorios:

sites-available/ —> donde crearemos nuestros ficheros de conf para cada vhost
sites-enabled/ —> donde se crean enlaces a ../sites-available/pepito.com.conf

Vamos a configurar 3 vhosts y creo que el ejemplo quedará bastante claro. Nuestros 3 nombres de dominio serán:

http://www.vomistar.lan
http://www.vodriophone.lan
http://www.ibertrola.lan

Primero de todo crearemos la estructura de los DocumentRoot’s ( directorios donde se alojarán las páginas web ), para ello aprovecharemos que el DocumentRoot principal de apache está en «/var/www/html/» y aquí dentro crearemos un subdirectorio llamado «virtuals», y dentro crearemos un directorio para cada website o vhost.

cd /var/www/html/
 mkdir -p virtuals/{vomistar.lan,vodriophone.lan,ibertrola.lan}

De manera que nos debería quedar algo así:

ls -la /var/www/virtuals/

drwxr-xr-x 5 root staff 170 24 mar 16:20 .
drwxr-xr-x 5 root staff 170 24 mar 16:20 ..
drwxr-xr-x 2 root staff 68 24 mar 16:20 ibertrola.lan
drwxr-xr-x 2 root staff 68 24 mar 16:20 vodriophone.lan
drwxr-xr-x 2 root staff 68 24 mar 16:20 vomistar.lan

Con la ejecución de los siguientes comandos, dentro de cada uno de los directorios, vamos a poner un fichero index.html con algo de código «HTML» para que cuando pongamos en el navegador http://www.ibertrola.lan por ejemplo nos salga algo y podamos saber que efectivamente estamos viendo la web que toca.

echo "<body bgcolor='#ff9900'><h1>Esto es ibertrola</h1></body>" > ibertrola.lan/index.html
echo "<body bgcolor='#0000ff' text='#fff'><h1>Esto es vodriophone</h1></body>" > vodriophone.lan/index.html
echo "<body bgcolor='#0000ff' text='#fff'><h1>Esto es vomistar</h1></body>" > ibertrola.lan/index.html

Seguidamente vamos a configurar el servidor web para poder decirle que gestione varios vhosts. Esto lo haremos en /etc/apache2/sites-available/

Así que navegamos hasta este directorio:

cd /etc/apache2/sites-available/

Y dentro creamos un fichero para cada vhost con los siguientes datos:

<VirtualHost *:80>

    ServerName ibertrola.lan
    ServerAlias www.ibertrola.lan
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/html/virtuals/ibertrola.lan/

    ErrorLog ${APACHE_LOG_DIR}/ibertrola.lan-error.log
    CustomLog ${APACHE_LOG_DIR}/ibertrola.lan-access.log combined
    LogLevel warn

</VirtualHost>

Vamos a explicar un poco cada una de estas directivas de configuración:

ServerName: Le dice a apache que si le piden ibertrola.lan enseñe lo que hay en el DocumentRoot ….
ServerAlias: todos los nombres de dominio que queremos que muestre también esta web los pondremos aquí
ServerAdmin: Muestra una dirección de contacto cuando aparecen 404’s o 500’s
DocumentRoot: Le dice a apache donde esta la web a mostrar
ErrorLog: Donde guardar los errores relacionados con esta web
AccessLog: Donde guardar y en que formato los logs de acceso paar esta web
NOTA: Haced lo mismo para cada vhost. 😉

Una vez termiando deberíamos tener algo así:

drwxr-xr-x 7 root staff 238 24 mar 16:42 .
 drwxr-xr-x 5 root staff 170 24 mar 16:40 ..
 -rw-r--r-- 1 root staff 0 24 mar 16:42 000-default-ssl
 -rw-r--r-- 1 root staff 0 24 mar 16:41 000-default.conf
 -rw-r--r-- 1 root staff 0 24 mar 16:41 ibertrola.lan.conf
 -rw-r--r-- 1 root staff 0 24 mar 16:41 vodriophone.lan.conf
 -rw-r--r-- 1 root staff 0 24 mar 16:41 vomistar.lan.conf

Ok, ha llegado el momento de activar estos vhosts, y para ello usaremos el comando a2ensite de apache

a2ensite

Al ejecutarlo nos pide cuales de los siguientes vhosts queremos activar, podéis poner cada uno de los que deseáis activar o simplemente un asterisco (*) y se activaran todos a la vez. Después de ejecutar a2ensite nos dirá que tenemos que ejecutar:

service apache2 reload

para que los cambios tengan efecto.

Listo! Ya tenemos por un lado las «pags web» y los vhosts configurados en apache.
Ahora un pequeño truco para no tener que configurar DNS’s. Simplemente editaremos el fichero:

vim /etc/hosts

Y dentro añadiremos a la primera línea o en la que ponga 127.0.0.1 los nombres de dominio (con y sin www) para que nuestro server se identifique a sí mismo como esos nombres de dominio.

Ejemplo de /etc/hosts:

127.0.0.1 localhost ibertrola.lan www.ibertrola.lan vodriophone.lan www.vodriophone.lan vomistar.lan www.vomistar.lan
 255.255.255.255 broadcasthost
 ::1 localhost

Guardamos y salimos del fichero.

Con esto ya lo tenemos todo listo.Ahora podemos abrir el navegador y poner cualquiera de los nombres de dominio y deberíamos ver la web correspondiente.

Con esto hemos aprendido como manejar los vhosts de apache para poder alojar diversas páginas web en un mismo servidor. Probablemente si la gestión manual os parece un poco tediosa para grandes volúmenes de websites probablemente estéis en lo cierto. Hay mejores maneras de poder gestionar esto, como por ejemplo con los paneles de control como: SysCP, ISPC3, o tantos otros.

 

Saludos!

 

Deja un comentario