Apache

De Guifi.net - Wiki Hispano

Apache es un servidor HTTP (web) libre con licencia propia llamada Apache: http://www.apache.org/licenses/ Presenta entre otras características mensajes de error altamente configurables, bases de datos de autenticación y negociado de contenido.

Instalación

aptitude install apache2

Módulos

La arquitectura del servidor Apache es muy modular. El servidor consta de una sección core y mucha de la funcionalidad que podría considerarse básica para un servidor web es provista por módulos.

Habilitar o deshabilitar los módulos

a2enmod
a2dismod

Módulos utilizados en BlogMail soft

rewrite

Reescritura de direcciones servidas (generalmente utilizado para transformar páginas dinámicas como php en páginas estáticas html para hacer la navegación más sencilla y organizada para la usuaria o para engañar a los navegantes o a los motores de búsqueda en cuanto a cómo fueron desarrolladas estas páginas).

php4 o php5

Páginas dinámicas en el lenguaje de scripts PHP.

vhost_alias

Crea servidores virtuales en nombres de subdominio

NameVirtualHost 217.149.150.61
<VirtualHost 217.149.150.61>
        Servername doc.blogmail.cc
        DocumentRoot /home/blogmail/public_html/documents
</VirtualHost>

Para habilitar o deshabilitar un servidor virtual:

a2ensite
a2dissite

Otros módulos interesantes

  • ssl - Comunicaciones Seguras vía TLS.
aptitude install openssl ssl-cert
openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem
a2enmod ssl
  • dav - Soporte del protocolo WebDAV (RFC 2518).
  • deflate - Compresión transparente con el algoritmo deflate del contenido enviado al cliente.
  • auth_ldap - Permite autentificar usuarias contra un servidor LDAP.
  • proxy_ajp - Conector para enlazar con el servidor Jakarta Tomcat de páginas dinámicas en Java (servlets y JSP).
  • perl - Páginas dinámicas en Perl.
  • python - Páginas dinámicas en Python.

Publicar los /home's

# a2enmod userdir

Por defecto la configuración del módulo requiere que cada usuaria cree un subdirectorio llamada exactamente public_html. Ese directorio debería tener al menos permisos de lectura y ejecución para el servidor web. O sea:

~$ mkdir public_html
~$ chmod 0750 public_html
~$ chown user.www-data public_html

Reiniciamos el servidor apache.

/etc/init.d/apache2 force-reload

Virtualhost que redireccionen a otro equipo

Muy útil cuando tenemos varias máquinas servidoras web a partir de una misma IP pública. Una de ellas hace de servidora de entrada (la que tiene el puerto 80) y le pasa a la otra las peticiones de los dominios que le toquen:

Usaremos los módulos de proxy de apache

# a2enmod proxy proxy_connect proxy_ftp proxy_http

y crearemos un virtual host en la servidora de entrada que haga que cualquien petición que vaya a los dominios pertinentes vayan a la otra máquina: en el ejemplo los dominio son [1] y [2] y la otra máquina tiene la IP local 192.168.1.5.

# vim /etc/apache2/sites-available/home.nusepas.com
<VirtualHost *:80>

       ServerName 213.98.143.33
       ServerAlias home.nusepas.com

       ProxyRequests off
       <Proxy *>
               Order deny,allow
               Allow from all
       </Proxy>

       ProxyPreserveHost On

       ProxyPass / http://192.168.1.5/
       ProxyPassReverse / http://192.168.1.5/

</VirtualHost>

Habilitamos el virtual host:

# a2ensite home.nusepas.com

Y recargamos apache

# /etc/init.d/apache2 reload

Listo.

Nota: otra forma de hacer esto es con el servidor de proxy-cache squid configurado como proxy reverso.

Comandos de interés

  • Escuchar el tráfico en el puerto 80:
  • Ver qué servidor web tiene una máquina desde fuera:
nmap -sV -p 80 nombre_o_IP_de_máquina
  • Ver qué máquinas tienen un servidor web dentro de un rango
nmap -sT -p 80 192.168.2.*

Administración

  • Ver los procesos Apache que están coriendo en la máquina
ps ax | grep apache | wc -l

En orwell con casi 1GB de RAM tiene 32 procesos de media, bajando el php.ini a 17MB y deshabilitando bm-comments-post.php se llegan a tan sólo 20

En nodreams, con 512MB de RAM tiene 19 procesos de media

Errores y soluciones

  • Error
 #/etc/init.d/apache2 start
(98)Address already in use: make_sock: could not bind to address [::]:80
no listening sockets available, shutting down
Unable to open logs
  • Solución:
    • Esperar a que apache corte todas las conexiones que tenía abiertas, se pueden monitorear escuhando el tráfico en el puerto 80, esta solución puede hacer esperar varios minutos, pero evita el trauma de tener que reiniciar (tal vez no reinicie)
    • Si lo anterior no funciona, tal vez exista un problema entre varias versiones de apache u otros servidores escuchando en el puerto 80, en tal caso desinstala de forma que sólo quede uno o cambia los puertos de los demás

Enlaces externos

Herramientas personales