Actualizar de Apache 1.3 a Apache 2.0

Categorias: Apache

La primera versión de Apache 1.3 apareció en Mayo de 1998 (1.3.0) y la última actualización oficial fue publicada en Febrero de 2010 (1.3.42).

La versión 2.0 de Apache aparte de corregir bugs y vulnerabilidades de seguridad, tiene nuevas funcionalidades y módulos.

Dado que existen algunas directivas cuya sintaxis es completamente diferente en la nueva versión y a fin de que el proceso de migración sea transparente para nuestros clientes, en Hostinet hemos analizado los .htaccess para buscar las lineas que necesiten ser modificadas. En caso de que detectemos alguna, el día de la migración realizaremos la corrección sobre los .htaccess. El cambio será llevará a cabo a través de un proceso automático y antes de llevarlo a cabo, se realizará una copia de seguridad del fichero existente.

apache

Los cambios más relevantes son los siguientes:

1. Muchas directivas que pertenecían al core (núcleo) del servidor en Apache 1.3 se encuentran ahora en distintos módulos de multiprocesamiento. Si desea que el nuevo servidor se comporte de la forma más parecida posible a como lo hacía Apache 1.3, se debe usar el módulo de multiprocesamiento prefork. Otros módulos de
multiprocesamiento tienen diferentes directivas para controlar la creación de procesos y el procesamiento de peticiones.

2. El módulo proxy ha sido remodelado para ponerlo al día con la especificación HTTP/1.1. Entre los cambios más importantes está el que ahora el control de acceso al proxy está dentro de un bloque <Proxy> en lugar de en un bloque <Directory proxy:>.

3. El procesamiento de PATH_INFO (la información que aparece detrás de un nombre de fichero válido) ha cambiado en algunos módulos. Los módulos que fueron previamente implementados como un handler pero que ahora son implementados como un filtro puede que no acepten peticiones que incluyan PATH_INFO. Filtros como INCLUDES o PHP están implementados sobre el handler principal (core handler), y por tanto rechazarán peticiones con PATH_INFO. Puede usar la directiva AcceptPathInfo para forzar al handler principal a aceptar peticiones con PATH_INFO y por tanto restaurar la posibilidad de usar PATH_INFO en server-side includes.

4. La directiva CacheNegotiatedDocs toma ahora como argumento on u off. Las instancias existentes de CacheNegotiatedDocs deben reemplazarse por CacheNegotiatedDocs on.

5. La directiva ErrorDocument no usa ya dobles comillas al principio del argumento para indicar el mensaje de texto a mostrar. En lugar de esto, ponga entre comillas todo el mensaje. Por ejemplo, ErrorDocument 403 "Mensaje debe sustituirse por ErrorDocument 403 "Mensaje". Si el segundo argumento no es una URL o una ruta válida a un archivo,
será tratado como un mensaje de texto.

6. Las directivas AccessConfig y ResourceConfig han desaparecido. Las instancias existentes de estas directivas pueden ser sustituidas por directivas Include que tienen una funcionalidad equivalente. Si hacía uso de los valores por defecto de esas directivas sin incluirlas en los ficheros de configuración, puede que necesite añadir Include
conf/access.conf e Include conf/srm.conf a su fichero httpd.conf. Para asegurar que Apache lee el fichero de configuración en el mismo orden que asumían las antiguas directivas, las directivas Include deben ser reemplazadas al final del fichero httpd.conf, con la de srm.conf precediendo a la de access.conf.

7. Las directivas BindAddress y Port no existen ya. Las funcionalidades que ofrecían esas directivas están ahora cubiertas por la directiva Listen, que es mucho más flexible.

8. Otro uso de la directiva Port en Apache 1.3 era fijar el número de puerto que se usaba para URLs autoreferenciadas. La directiva equivalente en Apache 2.0 es la nueva directiva ServerName. Este cambio se ha introducido para permitir la especificación del nombre de host y del número de puerto para URLs autorreferenciadas en una sola directiva.

9. La directiva ServerType ha dejado de existir. El método usado para servir peticiones está ahora determinado por la selección del módulo de multiprocesamiento. Actualmente no hay diseñado un módulo de multiprocesamiento que pueda ser ejecutado por inetd.

10. Los módulos mod_log_agent y mod_log_referer que contenían las directivas AgentLog, RefererLog y RefererIgnore han desaparecido. Los registros de "agente" y de "referer" están disponibles todavía usando la directiva CustomLog del módulo mod_log_config.

11. Las directivas AddModule y ClearModuleList no están presentes en la nueva versión de Apache. Estas directivas se usaban para asegurar que los módulos pudieran activarse en el orden correcto. La nueva API de Apache 2.0 permite a los módulos especificar explícitamente su orden de activación, eliminando la necesidad de las antiguas directivas.

12. La directiva FancyIndexing se ha eliminado. La funcionalidad que cubría está ahora disponible a través de la opción FancyIndexing de la directiva IndexOptions.
La técnica de negociación de contenido MultiViews ofrecida por mod_negotiation es ahora más estricta en su algoritmo de selección de ficheros y solo seleccionará ficheros negociables. El antiguo comportamiento puede restaurarse usando la directiva MultiviewsMatch.

13. A partir de la versión 2.0.51 la funcionalidad de la directiva ErrorHeader se ha unido con la de la directiva Header, porque se estaba usando un término equivocado. Use Header always set foo bar en lugar de conseguir el comportamiento deseado.