# [How-to] Configurar Servidor http Apache

## ebray187

¿Por Qué Apache?

Bueno no sé si a ustedes, pero compartir ficheros con el mundo a sido un cacho para mi desde siempre, que el amsn se cuelga o simplemente no puede enviarle un fichero a determinado usuario, que el fichero es muy largo y se tiene que enviar en más de un tiempo, que el correo tiene un limite inferior a lo que necesitamos, etc, etc. 

Es por eso que cuando supe de apache me interesó muchísimo, es bastante sencillo de instalar y ofrece bastantes opciones de configuración. 

Apache nos ofrece levantar un servidor http desde nuestro pc, permitiendo a otros usuarios poder descargar ficheros directamente desde la máquina como si se tratase de cualquier página. Nos permite crear páginas dinámicamente en función de los contenidos que estemos compartiendo, todo un lujito.

Me decidí a hacer este How-to para ahorrarle a la gente que quiera probar este programa unas cuantas horas de experimentos y búsquedas, puesto que la información esta por allí, pero en un principio es demasiada y un poco confusa. 

Bueno basta de palabrería: Manos a la obra.

1) Instalando Apache

Primero para tener una version más actualizada, editamos nuestro make.conf e introducimos la variable apache2 a nuestros USE:

```
# nano -w /etc/make.conf

USE="apache2"
```

Y Luego a emerger   :Shocked: !

```
# emerge apache
```

Y ya tenemos un apache Instalado en nuestro sistema, fácil ¿no?

No sé si tenga efectos directos (y me falta la motivación para buscar), pero por tradición agrego el usuario al grupo apache 

```
# gpasswd -a usuario apache
```

Ahora iniciamos apache con:

```
# /etc/init.d/apache2 start
```

En este punto si en nuestro navegador ponemos nuestra dirección ip (# ifconfig debería mostrarla) o http://localhost/, deberíamos ser capaces de ver una página por defecto de apache que nos informa que está todo bien instalado. A esta página debería poder acceder cualquier pc con una conexión a internet.

[img]http://img92.imageshack.us/img92/88/pantalla13317zl.th.jpg[/img]

2) Configurando Apache

Esto esta muy bonito, pero queremos hacer más que una ridícula página, es por eso que nos vamos a remitir a dos ficheros de configuración: apache2 y principalmente httpd.conf

Primero editamos apache2:

```
# nano -w /etc/conf.d/apache2

APACHE2_OPTS="-D USERDIR"
```

Esto nos permitirá que cada usuario tenga un directorio para compartir y nos liberará de la poco aconsejable práctica de logearnos como root para esta clase de tareas.

3) Configurando httpd.conf

Este extenso fichero tiene la configuración de apache en general, una lista con los módulos que se cargarán, las opciones de estos y bastantes comentarios.

Primero agreguemos esta entrada, para así crear una buena página en este directorio (ciertamente puede ser cualquier ruta).

```
# nano -w /etc/apache2/httpd.conf

...

DocumentRoot "/var/www/localhost/web"
```

Si al momento de ejecutar apache nos informa que no hay ningún servername definido, agregamos esto:

```
ServerName localhost
```

Por defecto apache comparte todo lo que este dentro del fichero /home/usuario/public_html, si esto nos incomoda podemos cambiarlo en las opciones del módulo mod_userdir.c

Ahora veamos la sección que más nos interesaría como usuarios normalitos: 

```
<IfModule mod_autoindex.c>

...

    IndexOptions FancyIndexing VersionSort FoldersFirst NameWidth=* SuppressDescription SuppressLastModified

...
```

Basicamente lo que hacen estas opciones es cambiar el tipo de indexado de nuestros directorios, es decir como  mostrará el html el contenido de los ficheros que compartamos.

Una completa lista y descripción de estas opciones la pueden encontrar aquí: http://httpd.apache.org/docs/2.0/mod/mod_autoindex.html.

Para cambiar el look de las cabeceras y firmas, les recomiendo que pongan atención a las entradas ReadmeName y HeaderName dentro del <IfModule mod_autoindex.c>: 

```
ReadmeName .README.html

HeaderName .HEADER.html
```

Hay otra opción (bastante divertida a mi gusto) que nos permite modificar los errores del tipo 404, 403, etc. 

```
ErrorDocument 404 /404.html

ErrorDocument 403 /403.html
```

En mi gentoo, comentar la última línea, Include /etc/apache2/vhosts.d/*.conf, resolvió un mensaje de error que arrojaba al iniciar apache.

Por cierto, si tienen problemas con los acentos, eñes, etc. Prueben cambiando la codificación a la utf-8, al menos funcionó para mi.

Bien ahora guardamos los cambios realizados y reiniciamos apache. 

```
# /etc/init.d/apache2 restart
```

4) Preparando el Index

Crearemos un directorio public_html en nuestro home en el que pondremos cualquier fichero a compartir. A este directorio yo le agregué un par de enlaces a mi directorio de Música y Descargas. Es importante que tengas los permisos correctos de lectura y ejecución para que otras personas puedan acceder a tus ficheros.

En este punto un http://localhost/~tu_usuario (o un http://tu_ip/~tu_usuario) nos debería mostrar un index.html con las opciones que pasamos al httpd.conf.

[img]http://img130.imageshack.us/img130/4176/pantalla15109oi.th.jpg[/img]

Como ven cada usuario puede tener sus compartidos. Para darle una mejor apariencia y que para acceder solo sea necesario poner nuestra ip, crearemos un index.html en el cual pondremos como un iframe nuestro index del home. 

Según lo direccionamos en el httpd.conf hacemos un 

```
# mkdir /var/www/localhost/web
```

Y creamos nuestro index, yo dejo el html que usé para mi página. Obviamente reemplacen el src del index por el de su usuario. 

```
cat /var/www/localhost/web/index.html 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html lang="es">

<head>

  <meta  http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>

  <link rel="SHORTCUT ICON" href="larry.ico"/>

  <title>HAL-9000</title>

</head>

<body bgcolor="#c6d6ed">

        <div align=center><a href="index.html"><img src="icon-penguin.png" align=middle border="0"></a>

        <font size=5><b>HAL-9000 Le Saluda</b></font>

        </div>

        <hr>

        <table border="1" cellpadding="0" align="center" width="93%" height="78%">

          <tr>

                <td bgcolor="#FFFFFF">

                <iframe src="~eduardo" 

                        name="index" width="100%" height="100%" frameborder="0">

                </iframe> 

                </td>

          </tr>

        </table>

        <hr>

<div align="center">

<table border="0" cellpadding="0" width="100%">

    <tr>

        <td width="45%"> 

          <div align="center"><a href="http://www.gentoo.org" target="_blank"><img src="gentoo.png" border=0></a></div></td>

        <td width="55%">

          <div align="center"><a href="http://httpd.apache.org" target="_blank"><img src="apache_pb.gif" border=0></a></div></td>

    </tr>

</table>

</div>

</body>

</html>
```

Pueden agregar los html de sus 404, 403, etc. (Las imagenes que pongan les sugiero que las pongan en otro hosting, así serán visibles de cualquier parte y no solo del /)

```
# cat /var/www/localhost/web/404.html   

<html>

<body>

<p><h1>No Encontrado - Error 404</h1>

La p&aacute;gina a la que intentas ingresar no existe: tipea bien y/o deja de dar jugo.</b></font></p>

<hr>

<img src="404.jpg">

</html>

</body
```

```
# cat /var/www/localhost/web/403.html 

<html>

<body>

<p><h1>Prohibido - Error 403</h1>

Hay problemas con los permisos de lectura, corra y avise a su administrador m&aacute;s cercano.</b></font></p>

<hr>

<img src="403.jpg">

</html>

</body>
```

Si les molesta el INDEX OF, que sale en la cabecera se puede cambiar simplemente agregando un fichero llamado .HEATER. Este fichero funciona como un html, aunque aveces yo he puesto texto solamente e igual funciona. 

```
$ nano -w Musica/.HEADER

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<body>

<table width="75%" border="1" cellspacing="0" align="center">

   <tr> 

      <td height="18" colspan="3"> <div align="center"><font size="4"><strong>Directorio de M&uacute;sica</strong></font></div></td>

   </tr>

</table>

<br>

<table width="100%" border="0" cellpadding="0">

   <tr> 

    <td width="3%"><font size="2">&nbsp;</font></td>

    <td colspan="2"><font size="2"><strong>Adquisiciones 

    Recientes:</strong></font></td>

   </tr>

   <tr> 

    <td><font size="2">&nbsp;</font></td>

    <td width="4%"><div align="center"><font size="2"><img src="/icons/ball.red.gif"></div></td>

    <td><em><div align="left"><font size="2">Univers Zero - Ceux du Dehors</font></div></em></td>

   </tr>

   <tr> 

    <td><font size="2">&nbsp;</font></td>

    <td width="4%"><div align="center"><font size="2"><img src="/icons/ball.red.gif"></div></td>

    <td><em><div align="left"><font size="2">Khachaturian - Concierto para Piano y Orquesta, Gayan&eacute; y la Suite Mascarada</font></div></em></td>

   </tr>

   <tr> 

    <td><font size="2">&nbsp;</font></td>

    <td width="4%"><div align="center"><font size="2"><img src="/icons/ball.red.gif"></div></td>

    <td><em><div align="left"><font size="2">Premiata Forneria Marconi - Discos Varios</font></div></em></td>

   </tr>

   <tr> 

    <td><font size="2">&nbsp;</font></td>

    <td width="4%"><div align="center"><font size="2"><img src="/icons/ball.red.gif"></div></td>

    <td><em><div align="left"><font size="2">Fulano - Trabajos In&uacute;tiles</font></div></em></td>

   </tr>

   <tr> 

    <td><font size="2">&nbsp;</font></td>

    <td width="4%"><div align="center"><font size="2"><img src="/icons/ball.red.gif"></div></td>

    <td><em><div align="left"><font size="2">Sergei Prokofiev - Pedro y el Lobo</font></div></em></td>

   </tr>

   <tr> 

    <td><font size="2">&nbsp;</font></td>

    <td width="4%"><div align="center"><font size="2"><img src="/icons/ball.red.gif"></div></td>

    <td><em><div align="left"><font size="2">Los Jaivas - Obras de Violeta Parra</font></div></em></td>

   </tr>

</table>

</body>

</html>
```

Tal como para las cabeceras editabamos el .HEADER para el pie de páginas podemos utilizar un .README

```
$ nano -w Musica/.README

<html>

<body>

<font size="2" face="Arial, Helvetica, sans-serif">

Si tienen problemas con los formatos les sugiero dejar de usar software de jugete y conseguirse algo de verdad como <a href="http://www.xmms.org/about.php" target="_blank">XMMS.</a> o <a href="http://amarok.kde.org/" target="_blank">Amarok</a> 

</font>

</body>

</html>
```

Y con eso conseguiremos este resultado:

http://img437.imageshack.us/my.php?image=pantalla1716tu8.jpg

http://img437.imageshack.us/my.php?image=pantalla1715gl8.jpg

http://img151.imageshack.us/my.php?image=pantalla14404ki.jpg

http://img87.imageshack.us/my.php?image=pantalla14487zp.jpg

http://img57.imageshack.us/my.php?image=pantalla15091ur.jpg  :Very Happy: 

Ahora último encontré unos iconos más agradables, pueden descargarlos aquí y reemplazarlos por los que vienen por defecto. 

Y les queda algo así:

[IMG]http://img252.imageshack.us/img252/61/pantalla1800gc4.th.jpg[/IMG]

5) Finalizando

Ahora queda guardar todos los cambios y reiniciar apache: 

```
# /etc/init.d/apache2 restart
```

Si quieren agregarlo al inicio para que cada vez que se prenda el pc comience a funcionar apache, todo se soluciona con un: 

```
# rc-update add apache2 default
```

Si les molesta dar su dirección ip (como a mi) y prefieren algo más fácil para recordar, pueden ir a http://www.dyndns.com/ u otro sitio semejante para que se inscriban y les den algún dns estático o dinámico según su conección. Sí su ip es dinámica incluso pueden probar con ddclient, router o algo parecido para que actualice la ip automaticamente.

Ahora pueden ir a lucirse con sus amigos y disfrutar de las opciones que nos ofrece este excelente programilla.

Para información muchísimo más detallada les sugiero que visiten http://httpd.apache.org/docs/2.0/

Como siempre abierto a cualquier sugerencia, crítica o duda.

Saludos

----------

## ZaPa

Muy bueno, yo publicaré otro howto para vsftpd. 

Gracías por este howto, saludos.

----------

## luismanson

buen howto, pero para tu idea te recomiendo otro servidor web, mucho mas liviano  :Smile: 

*  www-servers/lighttpd

      Latest version available: 1.4.15

      Latest version installed: [ Not Installed ]

      Size of downloaded files: [no/bad digest]

      Homepage:    http://www.lighttpd.net/

      Description: Lightweight high-performance web server

      License:     BSD

----------

## Inodoro_Pereyra

Otra idea, ya que estamos: http://www.apachefriends.org/en/xampp.html

Con xampp te ahorras buena parte del setup... Lo dejo por si alguien no lo conocía solamente. 

Yo en particular corro apache + php + mysql tirados desde portage.

Saludos!

----------

