41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd<?xml-stylesheet type="text/xsl" href="/style/manual.es.xsl"?>
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf<!-- English Revision: 105989:1174747 (outdated) -->
031b91a62d25106ae69d4693475c79618dd5e884fielding Licensed to the Apache Software Foundation (ASF) under one or more
031b91a62d25106ae69d4693475c79618dd5e884fielding contributor license agreements. See the NOTICE file distributed with
031b91a62d25106ae69d4693475c79618dd5e884fielding this work for additional information regarding copyright ownership.
031b91a62d25106ae69d4693475c79618dd5e884fielding The ASF licenses this file to You under the Apache License, Version 2.0
031b91a62d25106ae69d4693475c79618dd5e884fielding (the "License"); you may not use this file except in compliance with
031b91a62d25106ae69d4693475c79618dd5e884fielding the License. You may obtain a copy of the License at
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd Unless required by applicable law or agreed to in writing, software
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd distributed under the License is distributed on an "AS IS" BASIS,
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd See the License for the specific language governing permissions and
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd limitations under the License.
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>Este documento explica como iniciar y parar el servidor Apache
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd en sistemas tipo Unix. Los usuarios de Windows NT, 2000 y XP
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd deben consultar la sección <a
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd href="platform/windows.html#winsvc">Ejecutar Apache como un
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd servicio</a> y los usuario de Windows 9x y ME deben consultar <a
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd href="platform/windows.html#wincons">Ejecutar Apache como una
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd Aplicación de Consola</a> para obtener información
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd sobre como controlar Apache en esas plataformas.</p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd<seealso><a href="programs/httpd.html">httpd</a></seealso>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd<seealso><a href="programs/apachectl.html">apachectl</a></seealso>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd<section id="introduction"><title>Introducción</title>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>Para parar y reiniciar Apache, hay que enviar la señal
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd apropiada al proceso padre <code>httpd</code> que se esté
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd ejecutando. Hay dos maneras de enviar estas señales. En
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd primer lugar, puede usar el comando de Unix <code>kill</code> que
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd envía señales directamente a los procesos. Puede que
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd tenga varios procesos <code>httpd</code> ejecutandose en su
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd sistema, pero las señales deben enviarse solamente al proceso
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd padre, cuyo pid está especificado en la directiva <directive
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd module="mpm_common">PidFile</directive>. Esto quiere decir que no
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd debe necesitar enviar señales a ningún proceso excepto
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd al proceso padre. Hay tres señales que puede enviar al
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd proceso padre: <code><a href="#term">TERM</a></code>, <code><a
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd href="#graceful">USR1</a></code>, que van a ser descritas a
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd continuación.</p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>Para enviar una señal al proceso padre debe escribir un
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd comando como el que se muestra en el ejemplo:</p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd<example>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</example>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>La segunda manera de enviar señales a los procesos
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <code>httpd</code> es usando las opciones de línea de
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd comandos <code>-k</code>: <code>stop</code>, <code>restart</code>,
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd y <code>graceful</code>, como se muestra más abajo. Estas
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd opciones se le pueden pasar al binario <a
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd href="programs/httpd.html">httpd</a>, pero se recomienda que se
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd pasen al script de control <a
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd href="programs/apachectl.html">apachectl</a>, que a su vez los
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>Después de haber enviado las señales que desee a
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd escribiendo:</p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd<example>tail -f /usr/local/apache2/logs/error_log</example>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>Modifique estos ejemplos para que coincidan con la
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd configuración que tenga especificada en las directivas
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <directive module="core">ServerRoot</directive> y <directive
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd module="mpm_common">PidFile</directive> en su fichero principal de
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd configuración.</p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>Enviar las señales <code>TERM</code> o <code>stop</code>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd al proceso padre hace que se intenten eliminar todos los procesos
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd hijo inmediatamente. Esto puede tardar algunos minutos. Una vez
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd que hayan terminado todos los procesos hijo, terminará el
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd proceso padre. Cualquier petición en proceso terminará
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd inmediatanmente, y ninguna petición posterior será
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd atendida.</p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>Las señales <code>USR1</code> o <code>graceful</code>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd hacen que el proceso padre <em>indique</em> a sus hijos que
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd terminen después de servir la petición que estén
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd atendiendo en ese momento (o de inmediato si no están
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd sirviendo ninguna petición). El proceso padre lee de nuevo
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd sus ficheros de configuración y vuelve a abrir sus ficheros
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd log. Conforme cada hijo va terminando, el proceso padre lo va
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd sustituyendo con un hijo de una nueva <em>generación</em> con
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd la nueva configuración, que empeciezan a servir peticiones
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd inmediatamente.</p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <note>En algunas plataformas que no permiten usar
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <code>USR1</code> para reinicios graceful, puede usarse una
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd señal alternativa (como <code>WINCH</code>). Tambien puede
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd usar <code>apachectl graceful</code> y el script de control
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd enviará la señal adecuada para su plataforma.</note>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>Apache está diseñado para respetar en todo momento la
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd directiva de control de procesos de los MPM, así como para
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd que el número de procesos y hebras disponibles para servir a
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd los clientes se mantenga en los valores adecuados durante el
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd proceso de reinicio. Aún más, está diseñado
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd para respetar la directiva <directive
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd module="mpm_common">StartServers</directive> de la siguiente
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd manera: si después de al menos un segundo el nuevo hijo de la
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd directiva <directive module="mpm_common">StartServers</directive>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd no ha sido creado, entonces crea los suficientes para se atienda
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd el trabajo que queda por hacer. Así, se intenta mantener
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd tanto el número de hijos adecuado para el trabajo que el
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd servidor tenga en ese momento, como respetar la configuración
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd determinada por los parámetros de la directiva
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>Los usuarios del módulo <module>mod_status</module>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd notarán que las estadísticas del servidor
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <strong>no</strong> se ponen a cero cuando se usa la señal
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <code>USR1</code>. Apache fue escrito tanto para minimizar el
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd tiempo en el que el servidor no puede servir nuevas peticiones
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd (que se pondrán en cola por el sistema operativo, de modo que
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd se no se pierda ningún evento), como para respetar sus
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd parámetros de ajuste. Para hacer esto, tiene que guardar el
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <em>scoreboard</em> usado para llevar el registro de los procesos
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd hijo a través de las distintas generaciones.</p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>El mod_status también usa una <code>G</code> para indicar
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd que esos hijos están todavía sirviendo peticiones
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd previas al reinicio graceful.</p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>Actualmente no existe ninguna manera de que un script con un
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd log de rotación usando <code>USR1</code> sepa con seguridad
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd que todos los hijos que se registraron en el log con anterioridad
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd al reinicio han terminado. Se aconseja que se use un retardo
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd adecuado después de enviar la señal <code>USR1</code>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd antes de hacer nada con el log antiguo. Por ejemplo, si la mayor
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd parte las visitas que recibe de usuarios que tienen conexiones de
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd baja velocidad tardan menos de 10 minutos en completarse, entoces
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd espere 15 minutos antes de hacer nada con el log antiguo.</p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <note>Si su fichero de configuración tiene errores cuando
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd haga el reinicio, entonces el proceso padre no se reinciciará
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd y terminará con un error. En caso de un reinicio graceful,
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd también dejará a los procesos hijo ejecutandose mientras
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd existan. (Estos son los hijos de los que se está saliendo de
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd forma graceful y que están sirviendo sus últimas
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd peticiones.) Esto provocará problemas si intenta reiniciar el
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd servidor -- no será posible conectarse a la lista de puertos
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd de escucha. Antes de reiniciar, puede comprobar que la sintaxis de
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd sus ficheros de configuracion es correcta con la opción de
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd href="programs/httpd.html">httpd</a>). No obstante, esto no
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd garantiza que el servidor se reinicie correctamente. Para
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd comprobar que no hay errores en los ficheros de
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd configuración, puede intentar iniciar <code>httpd</code> con
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd un usuario diferente a root. Si no hay errores, intentará
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd abrir sus sockets y logs y fallará porque el usuario no es
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd root (o porque el <code>httpd</code> que se está ejecutando
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd en ese momento ya está conectado a esos puertos). Si falla
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd por cualquier otra razón, entonces casi seguro que hay
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd algún error en alguno de los ficheros de configuración y
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd debe corregir ese o esos errores antes de hacer un reinicio
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd graceful.</note>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <code>restart</code> al proceso padre hace que los procesos hijo
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd terminen como si le enviá ramos la señal
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <code>TERM</code>, para eliminar el proceso padre. La diferencia
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd está en que estas señales vuelven a leer los archivos de
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd configuración y vuelven a abrir los ficheros log. Se genera
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd un nuevo conjunto de hijos y se continúa sirviendo
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd peticiones.</p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>Los usuarios del módulo <module>mod_status</module>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd notarán que las estadísticas del servidor se ponen a
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd cero cuando se envía la señal <code>HUP</code>.</p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd<note>Si su fichero de configuración contiene errores, cuando
41e3d6b4e67a52c6570c0412c3e5526278cf07d7ndintente reiniciar, el proceso padre del servidor no se
41e3d6b4e67a52c6570c0412c3e5526278cf07d7ndreiniciará, sino que terminará con un error. Consulte
41e3d6b4e67a52c6570c0412c3e5526278cf07d7ndmás arriba cómo puede solucionar este problema.</note>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd<section id="race"><title>Apéndice: señales y race conditions</title>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>Con anterioridad a la versión de Apache 1.2b9 había
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd varias <em>race conditions</em> implicadas en las señales
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd para parar y reiniciar procesos (una descripción sencilla de
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd una race condition es: un problema relacionado con el momento en
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd que suceden las cosas, como si algo sucediera en momento en que no
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd debe, y entonces el resultado esperado no se corresponde con el
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd obtenido). Para aquellas arquitecturas que tienen el conjunto de
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd características "adecuadas", se han eliminado tantas race
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd conditions como ha sido posible. Pero hay que tener en cuenta que
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd todavía existen race conditions en algunas arquitecturas.</p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd module="mpm_common">ScoreBoardFile</directive> en disco, existe la
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd posibilidad de que se corrompan los scoreboards. Esto puede hacer
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd que se produzca el error "bind: Address already in use"
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd (después de usar<code>HUP</code>) o el error "long lost child
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd came home!" (después de usar <code>USR1</code>). En el
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd primer caso se trata de un error irrecuperable, mientras que en el
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd segundo, solo ocurre que el servidor pierde un slot del
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd scoreboard. Por lo tanto, sería aconsejable usar reinicios
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd graceful, y solo hacer reinicios normales de forma
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd ocasional. Estos problemas son bastante complicados de solucionar,
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd pero afortunadamente casi ninguna arquitectura necesita un fichero
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd scoreboard. Consulte la documentación de la directiva
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <directive module="mpm_common">ScoreBoardFile</directive> para ver
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd las arquitecturas que la usan.</p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd <p>Todas las arquitecturas tienen una pequeña race condition
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd en cada proceso hijo implicada en la segunda y subsiguientes
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd peticiones en una conexión HTTP persistente
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd (KeepAlive). Puede ser que el servidor termine después de
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd leer la línea de petición pero antes de leer cualquiera
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd de las cebeceras de petición. Hay una solución que fue
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd descubierta demasiado tarde para la incluirla en versión
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd 1.2. En teoria esto no debe suponer ningún problema porque el
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd cliente KeepAlive ha de esperar que estas cosas pasen debido a los
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd retardos de red y a los timeouts que a veces dan los
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd servidores. En la practica, parece que no afecta a nada más
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd -- en una sesión de pruebas, un servidor se reinició
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd veinte veces por segundo y los clientes pudieron navegar sin
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd problemas por el sitio web sin encontrar problemas ni para
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd descargar una sola imagen ni encontrar un solo enlace roto. </p>
41e3d6b4e67a52c6570c0412c3e5526278cf07d7nd</manualpage>