From 23d29df06d0652a64353cfaa583aabee6b3bca05 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20Malo?= Date: Wed, 30 Mar 2005 16:06:28 +0000 Subject: [PATCH] update transformation git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x@159490 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/dso.html | 4 + docs/manual/dso.html.en | 2 + docs/manual/dso.html.es | 369 +++++++++++++++++++++++++++++++ docs/manual/dso.html.fr | 2 + docs/manual/dso.html.ja.euc-jp | 2 + docs/manual/dso.html.ko.euc-kr | 2 + docs/manual/dso.xml.meta | 1 + docs/manual/index.html.es | 6 +- docs/manual/mod/leader.html.es | 21 +- docs/manual/mod/leader.xml.meta | 2 +- docs/manual/vhosts/index.html.es | 2 +- 11 files changed, 396 insertions(+), 17 deletions(-) create mode 100644 docs/manual/dso.html.es diff --git a/docs/manual/dso.html b/docs/manual/dso.html index 5ef3f256379..530c6c54cb6 100644 --- a/docs/manual/dso.html +++ b/docs/manual/dso.html @@ -2,6 +2,10 @@ URI: dso.html.en Content-Language: en Content-type: text/html; charset=ISO-8859-1 +URI: dso.html.es +Content-Language: es +Content-type: text/html; charset=ISO-8859-1 + URI: dso.html.fr Content-Language: fr Content-type: text/html; charset=ISO-8859-1 diff --git a/docs/manual/dso.html.en b/docs/manual/dso.html.en index 21417c5cbff..048f857d91e 100644 --- a/docs/manual/dso.html.en +++ b/docs/manual/dso.html.en @@ -19,6 +19,7 @@ Apache > HTTP Server > Documentation > Version 2.0

Dynamic Shared Object (DSO) Support

Available Languages:  en  | + es  |  fr  |  ja  |  ko 

@@ -305,6 +306,7 @@ $ apxs -i -a -n foo mod_foo.la

Available Languages:  en  | + es  |  fr  |  ja  |  ko 

diff --git a/docs/manual/dso.html.es b/docs/manual/dso.html.es new file mode 100644 index 00000000000..0d01a6c84af --- /dev/null +++ b/docs/manual/dso.html.es @@ -0,0 +1,369 @@ + + + +Soporte de Objetos Dinamicos Compartidos (DSO) - Servidor HTTP Apache + + + + + +
<-
+

Soporte de Objetos Dinamicos Compartidos (DSO)

+
+

Idiomas disponibles:  en  | + es  | + fr  | + ja  | + ko 

+
+ +

El servidor HTTP Apache es un programa modular en el que el + administrador puede elegir qué funcionalidades se incluyen + mediante la selección de un conjunto de módulos. En + primer lugar, los módulos pueden compilarse de manera + estática en el binario httpd. De forma + alternativa, los módulos también pueden compilarse como + Objetos Dinamicos Compartidos (DSOs) que existen de forma + independiente del archivo binario httpd. Los + módulos que se deseen usar como objetos dinámicos + compartidos pueden compilarse al mismo tiempo que el servidor, o + pueden compilarse en otro momento y ser añadidos después + usando la Herramienta de Extensión de Apache + (apxs).

+ +

Este documento describe cómo usar los módulos en + forma de objeto dinámico compartido (DSO) así como los + fundamentos teóricos que hay detrás para explicar su + funcionamiento.

+
+ +
top
+
+

Implementación

+ + + +

Cargar módulos de Apache individualmente como objetos + dinámicos compartidos (DSO) es posible gracias a un + módulo llamado mod_so que debe compilarse + estáticamente en el núcleo (kernel) de Apache. Es el + único módulo junto con el módulo + core que no se puede usar como objeto + dinámico compartido. Prácticamente todos los demás + módulos distribuidos con Apache se pueden usar como objetos + dinámicos compartidos individualmente siempre y cuando se + haya activado la posibilidad de usarlos con la opción de + configure + --enable-module=shared tal y como se + explicó en la documentación de + instalación. Una vez que haya compilado un módulo + como objeto dinámico compartido y le haya puesto un nombre + del tipo mod_foo.so, puede cargarlo al iniciar o + reiniciar el servidor usando el comando LoadModule de mod_so + en el fichero httpd.conf.

+ +

Para simplificar la creación de objetos dinámicos + compartidos para Apache (especialmente módulos de terceras + partes) está disponible un nuevo programa de soporte llamado + apxs (APache eXtenSion). Puede usar + este programa para crear módulos como objetos dinámicos + compartidos sin tener que crearlos al mismo tiempo que + compila su servidor Apache. La idea es simple: cuando se instala + Apache el procedimiento make install de + configure @@@ installs the Apache C header + files and puts the platform-dependent compiler and linker flags + for building DSO files into the apxs program / instala los + ficheros de cabecera de C de Apache y especifica las opciones de + compilación y enlace dependientes de la plataforma para + generar objetos dinámicos compartidos con + apxs. De esta manera el usuario puede usar + apxs para compilar el código fuente de + módulos de Apache de manera independiente y sin tener que + preocuparse por las opciones de compilación y enlace + dependientes de la plataforma que soportan objetos dinámicos + compartidos.

+ +
top
+
+

Resumen de uso

+ +

Para que se haga una idea de lo que permite el soporte de + objetos dinámicos compartidos en Apache 2.0, aquí tiene + un resumen breve pero conciso:

+ +
    +
  1. + Construir e instalar un módulo incluido en la + distribución de Apache, digamos + mod_foo.c, como un objeto dinámico + compartido de nombre mod_foo.so: + +

    +$ ./configure --prefix=/path/to/install --enable-foo=shared
    +$ make install +

    +
  2. + +
  3. + Construir e instalar un módulo de Apache de una + tercera parte, digamos mod_foo.c, como + un objeto dinámico compartido de nombre + mod_foo.so: + +

    +$ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c --enable-foo=shared
    +$ make install +

    +
  4. + +
  5. + Configurar Apache para poder instalar después + objetos dinámicos compartidos: + +

    +$ ./configure --enable-so
    +$ make install +

    +
  6. + +
  7. + Construir e instalar un módulo de Apache de una + tercera parte, digamos mod_foo.c, como + un objeto dinámico compartido de nombre + mod_foo.so fuera de la estructura de + directorios de Apache usando apxs: + +

    +$ cd /path/to/3rdparty
    +$ apxs -c mod_foo.c
    +$ apxs -i -a -n foo mod_foo.la +

    +
  8. +
+ +

En todos los casos, una vez que se compila el objeto + dinámico compartido, debe usar una directiva LoadModule en + httpd.conf para activar dicho módulo.

+
top
+
+

Fundamentos teoróricos +detrás de los objetos dinámicos compartidos

+ +

En las versiones modernas de Unix, existe un mecanismo + especialmente útil normalmente llamado enlazado/carga de + Objetos Dinámicos Compartidos (DSO). Este mecanismo + ofrece una forma de construir trozos de código de programa en + un formato especial para cargarlo en tiempo de ejecución en + el espacio de direcciones de memoria de un programa + ejecutable.

+ +

Esta carga puede hacerse de dos maneras: automáticamente + con un programa de sistema llamado ld.so al inicio de + un programa ejecutable o manualmente desde dentro del programa en + ejecución con una interfaz programática del sistema al + cargador de Unix mediante llamadas al sistema + dlopen()/dlsym().

+ +

Si se usa el primer método, los objetos dinámicos + compartidos se llaman normalmente librerías + compartidas ó librerías DSO y se + nombran como libfoo.so o + libfoo.so.1.2. Residen en un directorio de + sistema (normalmente /usr/lib) y el enlace con el + programa ejecutable se establece al construir la librería + especificando la opción-lfoo al comando de + enlace. Esto incluye las referencias literales a las + librerías en el programa ejecutable de manera que cuando + se inicie, el cargador de Unix será capaz de localizar + libfoo.so en /usr/lib, en rutas + referenciadas literalmente mediante opciones del linker como + -R o en rutas configuradas mediante la variable + de entorno LD_LIBRARY_PATH. Entonces se resuelven + los símbolos (todavía no resueltos) en el programa + ejecutable que están presentes en el objeto dinámico + compartido.

+ +

Los símbolos en el programa ejecutable no están + referenciados normalmente en el objeto dinámico compartido + (porque son librerías reusables de propósito general) y + por tanto, no se producen más resoluciones. El programa + ejecutable no tiene que hacer nada por sí mismo para usar los + símbolos del objeto dinámico compartido porque todo el + trabajo de resolución lo hace @@@ Unix loader / el cargador + de Unix @@@. (De hecho, el código para invocar + ld.so es parte del código que se ejecuta al + iniciar, y que hay en cualquier programa ejecutable que haya sido + construido de forma no estática). La ventaja de cargar + dinámicamente el código de las librerías comunes es + obvia: el código de las librerías necesita ser almacenado + solamente una vez, en una librería de sistema como + libc.so, ahorrando así espacio en disco.

+ +

Por otro lado, los objetos dinámicos compartidos + también suelen llamarse objetos compatidos o + ficheros DSO y se les puede nombrar con cualquier + extensión (aunque su nombre canónico es + foo.so). Estos archivos normalmente permanecen + dentro de un directorio específico del programa y no se + establecen enlaces automáticamente con los programas + ejecutables con los que se usan. En lugar de esto, el + programa ejecutable carga manualmente el objeto dinámico + compartido en tiempo de ejecución en su espacio de + direcciones de memoria con dlopen(). En ese + momento no se resuelven los símbolos del objeto + dinámico compartido para el programa ejecutable. En lugar + de esto, el cargador de Unix resuelve automáticamente los + símbolos (aún no resueltos en el objeto + dinámico compartido del conjunto de símbolos + exportados por el programa ejecutable y de las librerías + DSO que tenga ya cargadas (especialmente todos los + símbolos de la omnipresente libc.so). De + esta manera el objeto dinámico compartido puede conocer + el conjunto de símbolos del programa ejecutable como si + hubiera sido enlazado estáticamente en un primer + momento.

+ +

Finalmente, para beneficiarse de la API de las DSOs, el + programa ejecutable tiene que resolver los símbolos + particulares de la DSO con dlsym() para ser usado + más tarde dentro de tablas de direccionamiento (dispatch + tables) etc. En otras palabras: El programa ejecutable + tiene que resolver manualmente cada uno de los símbolos que + necesita para poder usarlo después. La ventaja de ese + mecanismo es que las partes opcionales del programa no necesitan + ser cargadas (y por tanto no consumen memoria) hasta que se + necesitan por el programa en cuestión. Cuando es necesario, + estas partes del programa pueden cargarse dinámicamente para + expandir las funcionalidades básicas del programa.

+ +

Aunque este mecanismo DSO parece muy claro, hay al menos un + paso de cierta dificultad: la resolución de los símbolos + que usa el programa ejecutable por la DSO cuando se usa una DSO + para extender la funcionalidad de una programa (segundo caso). Por + qué? Porque la resolución inversa de símbolos de + DSOs del conjunto de símbolos del programa ejecutable se hace + en contra del diseño de la librería (donde la + librería no tiene conocimiento sobre los programas que la + usan) y tampoco está disponible en todas las plataformas no + estandarizadas. En la práctica los símbolos globales del + programa ejecutable están disponibles para su uso en una + DSO. El mayor problema que hay que resolver cuando se usan DSOs + para extender un programa en tiempo de ejecución es encontrar + un modo de forzar al enlazador a exportar todos los símbolos + globales.

+ +

El enfoque de las librerías compartidas es bastante + típico, porque es para lo que se diseño el mecanismo + DSO, por tanto se usa para casi todos los tipos de librerías + que incluye el sistema operativo. Por otro lado, no muchos + programas usan objetos compartidos para expandir sus + funcionalidades.

+ +

En 1998, había solamente unos pocos programas disponibles + que usaban el mecanismo DSO para extender su funcionalidad en + tiempo de ejecucion: Perl 5 (por medio de su mecanismo XS y el + módulo DynaLoader), Netscape Server, etc. A partir + de la version 1.3, Apache se unió a este grupo, Apache usa + desde entonces una concepción modular para extender su + funcionalidad e internamente usa un enfoque de tablas de + direccionamiento (dispatch-list-based) para enlazar módulos + externos con las funcionalidades propias del servidor. De esta + manera, Apache puede usar el mecanismo DSO para cargar sus + módulos en tiempo de ejecución.

+
top
+
+

Ventajas e Inconvenientes

+ +

Las características de las librerías dinámicas + compartidas arriba explicadas tienen las siguientes ventajas:

+ +
    +
  • El servidor es mucho más flexible en tiempo de + ejecución porque pueden añadirse módulos mediante + comandos de configuración LoadModule en + httpd.conf en lugar de tener que hacerlo con las + opciones de configure al compilar. Por + ejemplo, de esta manera uno puede ejecutar diferentes instancias + del servidor (estándar & SSL, mínima & super + potente [mod_perl, PHP3], etc.) con una única + instalación de Apache.
  • + +
  • El servidor puede ser extendido fácilmente con + módulos de terceras partes después de la + instalación. Esto es un gran beneficio al menos para los + mantenedores de paquetes de distribuciones, que pueden crear un + paquete básico de Apache y paquetes adicionales que + contengan extensiones tales como PHP3, mod_perl, mod_fastcgi, + etc.
  • + +
  • Facilita la labor de hacer prototipos de módulos de + Apache porque con el dúo DSO/apxs se + puede trabajar fuera de la estructura de directorios de Apache y + únicamente es necesario el comando apxs -i + seguido del comando apachectl restart para probar + la nueva versión del módulo que se está + desarrollando.
  • +
+ +

DSO presenta los siguientes inconvenientes:

+ +
    +
  • El mecanismo DSO no puede ser usado en todas las plataformas + porque no todos los sistemas operativos soportan la carga + dinámica de código en el espacio de direcciones de + memoria de un programa.
  • + +
  • El servidor es aproximadamente un 20% más lento + iniciándose por la sobrecarga que implica la + resolución de símbolos por parte del cargador de Unix.
  • + +
  • El servidor es aproximadamente un 5% más lento + ejecutándose en algunas plataformas porque el código + posicionado independientemente (PIC) necesita algunas veces + procesos bastante complicados para calcular direcciones + relativas que no son en principio tan rápidos como los que + se usan para calcular direcciones absolutas.
  • + +
  • Como los módulos DSO no pueden enlazarse a otras + librerías basadas en DSO (ld -lfoo) en todas + las plataformas (por ejemplo en las plataformas basadas en a.out + normalmente no puede ser usada esta funcionalidad, mientras que + sí puede ser usada en las plataformas basadas en ELF) no se + puede usar el mecanismo DSO para todos los tipos de + módulos. En otras palabras, los módulos compilados + como ficheros DSO solamente pueden usar símbolos del + núcleo (kernel) de Apache, los de las librerías de C + (libc) y de todas las demas librerías + dinámicas o estáticas usadas por el núcleo de + Apache, o de archivos de librerías estáticas + (libfoo.a) que contengan código independiente + de su posición. Las únicas posibilidades para usar + otro código es asegurarse de que el núcleo de Apache + contiene una referencia a él o cargar el código por + medio de dlopen().
  • +
+ +
+
+

Idiomas disponibles:  en  | + es  | + fr  | + ja  | + ko 

+
+ \ No newline at end of file diff --git a/docs/manual/dso.html.fr b/docs/manual/dso.html.fr index e634ef60940..b9bc2bb3b10 100644 --- a/docs/manual/dso.html.fr +++ b/docs/manual/dso.html.fr @@ -19,6 +19,7 @@ Apache > Serveur HTTP > Documentation > Version 2.0

Support des objets partagés dynamiques (DSO)

Langues Disponibles:  en  | + es  |  fr  |  ja  |  ko 

@@ -307,6 +308,7 @@ $ apxs -i -a -n foo mod_foo.la

Langues Disponibles:  en  | + es  |  fr  |  ja  |  ko 

diff --git a/docs/manual/dso.html.ja.euc-jp b/docs/manual/dso.html.ja.euc-jp index 257936233d0..525d0bbff18 100644 --- a/docs/manual/dso.html.ja.euc-jp +++ b/docs/manual/dso.html.ja.euc-jp @@ -19,6 +19,7 @@ Apache > HTTP ¥µ¡¼¥Ð > ¥É¥­¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó > ¥Ð¡¼¥¸¥ç¥ó 2.0

ưŪ¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È (DSO) ¥µ¥Ý¡¼¥È

Available Languages:  en  | + es  |  fr  |  ja  |  ko 

@@ -288,6 +289,7 @@ $ apxs -i -a -n foo mod_foo.la

Available Languages:  en  | + es  |  fr  |  ja  |  ko 

diff --git a/docs/manual/dso.html.ko.euc-kr b/docs/manual/dso.html.ko.euc-kr index 3de3e41e653..bdf0abff4a4 100644 --- a/docs/manual/dso.html.ko.euc-kr +++ b/docs/manual/dso.html.ko.euc-kr @@ -19,6 +19,7 @@ Apache > HTTP Server > Documentation > Version 2.0

µ¿Àû°øÀ¯°´Ã¼ (DSO) Áö¿ø

°¡´ÉÇÑ ¾ð¾î:  en  | + es  |  fr  |  ja  |  ko 

@@ -269,6 +270,7 @@ $ apxs -i -a -n foo mod_foo.la

°¡´ÉÇÑ ¾ð¾î:  en  | + es  |  fr  |  ja  |  ko 

diff --git a/docs/manual/dso.xml.meta b/docs/manual/dso.xml.meta index ea39c2eef99..46ce0d22360 100644 --- a/docs/manual/dso.xml.meta +++ b/docs/manual/dso.xml.meta @@ -7,6 +7,7 @@ en + es fr ja ko diff --git a/docs/manual/index.html.es b/docs/manual/index.html.es index b18861ea95f..d5c629b0614 100644 --- a/docs/manual/index.html.es +++ b/docs/manual/index.html.es @@ -5,7 +5,7 @@ This file is generated from xml source: DO NOT EDIT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --> -Versión 2.0 de la documentación del Servidor de HTTP Apache - Servidor HTTP Apache +Documentación del Servidor HTTP Apache 2.0 - Servidor HTTP Apache @@ -18,7 +18,7 @@
<-
-

Versión 2.0 de la documentación del Servidor de HTTP Apache

+

Documentación del Servidor HTTP Apache 2.0

Idiomas disponibles:  de  |  en  | @@ -32,7 +32,7 @@

Manual de Referencia

diff --git a/docs/manual/mod/leader.html.es b/docs/manual/mod/leader.html.es index 95ccf8749db..34c050cb1ae 100644 --- a/docs/manual/mod/leader.html.es +++ b/docs/manual/mod/leader.html.es @@ -26,10 +26,6 @@  es  |  ko 

-
Esta traducción podría estar - obsoleta. Consulte la versión en inglés de la - documentación para comprobar si se han producido cambios - recientemente.
@@ -37,9 +33,9 @@
Descripción:Variante experimental del MPM estándar worker
Estado:MPM
Fichero de Código Fuente:leader.c

Resumen de contenidos

-

Warning

+

Advertencia

Este módulo es todavía experimental, lo que - significa que podría no funcionar como es debido.

+ significa que podría no funcionar como se espera.

Este módulo es una variante experimental del módulo @@ -48,21 +44,22 @@ trabajo entre las hebras. Para más información, consulte http://deuce.doc.wustl.edu/doc/pspdfs/lf.pdf.

-

Para usar el MPM leader, añada +

Para usar el módulo de multiprocesamiento + leader, añada --with-mpm=leader como argumento al script - configure en el momento de compilar - httpd.

+ configure en el momento de compilar + httpd.

Este módulo de multiprocesamiento depende de operaciones - atómicas compare-and-swap del APR para sicronizar las + atómicas compare-and-swap del APR para sincronizar las hebras. Si está compilando el servidor para una máquina x86 y no necesita soportar la arquitectura 386, o está compilando para una máquina SPARC y no necesita ejecutar el servidor en chips pre-UltraSPARC, añada --enable-nonportable-atomics=yes como argumento al - script configure. Esto hará que APR implemente + script configure. Esto hará que APR implemente las operaciones atómicas usando opciones más eficientes - que no están presentes en CPUs antiguas.

+ que no están presentes para CPUs antiguas.

Directivas

    diff --git a/docs/manual/mod/leader.xml.meta b/docs/manual/mod/leader.xml.meta index 1d92eec1c61..9ed0a6f14df 100644 --- a/docs/manual/mod/leader.xml.meta +++ b/docs/manual/mod/leader.xml.meta @@ -8,7 +8,7 @@ de en - es + es ko diff --git a/docs/manual/vhosts/index.html.es b/docs/manual/vhosts/index.html.es index 9bb9291d352..7f579b319b2 100644 --- a/docs/manual/vhosts/index.html.es +++ b/docs/manual/vhosts/index.html.es @@ -65,7 +65,7 @@ host virtual
(Una dirección IP para cada sitio web)
  • Ejemplos típicos de configuración para usar hosting virtual
  • -
  • L#237;mites a los descriptores de +
  • Límites a los descriptores de ficheros (o, demasiados ficheros de registro)
  • Configuración dinámica de Hosting virtual masivo
  • -- 2.47.2