1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>Iniciar y Parar el servidor Apache - Servidor HTTP Apache Versión 2.5</title>
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
<script src="./style/scripts/prettify.min.js" type="text/javascript">
</script>
<link href="./images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/">Módulos</a> | <a href="./mod/quickreference.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="./glossary.html">Glosario</a> | <a href="./sitemap.html">Mapa del sitio web</a></p>
<p class="apache">Versión 2.5 del Servidor HTTP Apache</p>
<img alt="" src="./images/feather.png" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="./">Versión 2.5</a></div><div id="page-content"><div id="preamble"><h1>Iniciar y Parar el servidor Apache</h1>
<div class="toplang">
<p><span>Idiomas disponibles: </span><a href="./de/stopping.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> |
<a href="./en/stopping.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="./es/stopping.html" title="Español"> es </a> |
<a href="./fr/stopping.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="./ja/stopping.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="./ko/stopping.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="./tr/stopping.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</div>
<p>Este documento explica como iniciar y parar el servidor Apache
en sistemas tipo Unix. Los usuarios de Windows NT, 2000 y XP
deben consultar la sección <a href="platform/windows.html#winsvc">Ejecutar Apache como un
servicio</a> y los usuario de Windows 9x y ME deben consultar <a href="platform/windows.html#wincons">Ejecutar Apache como una
Aplicación de Consola</a> para obtener información
sobre como controlar Apache en esas plataformas.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#introduction">Introducción</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#term">Parar Ahora Apache</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#graceful">Reinicio "Graceful" o elegante</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#hup">Reiniciar Apache</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#race">Apándice: señales y race conditions</a></li>
</ul><h3>Consulte también</h3><ul class="seealso"><li><code class="program"><a href="./programs/httpd.html">httpd</a></code></li><li><code class="program"><a href="./programs/apachectl.html">apachectl</a></code></li><li><a href="invoking.html" />Iniciar Apache</li><li><a href="#comments_section">Comentarios</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="introduction" id="introduction">Introducción</a><a title="Enlace permanente" href="#introduction" class="permalink">¶</a></h2>
<p>Para parar y reiniciar Apache, hay que enviar la señal
apropiada al proceso padre <code>httpd</code> que se está
ejecutando. Hay dos maneras de enviar estas señales. En
primer lugar, puede usar el comando de Unix <code>kill</code> que
envía señales directamente a los procesos. Puede que
tenga varios procesos <code>httpd</code> ejecutándose en su
sistema, pero las señales deben enviarse solamente al proceso
padre, cuyo PID está especificado en la directiva <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code>. Esto quiere decir que no
debe necesitar enviar señales a ningún proceso excepto
al proceso padre. Hay tres señales que puede enviar al
proceso padre:
<code><a href="#term">TERM</a></code>,
<code><a href="#graceful">USR1</a></code>
<code><a href="#hup">HUP</a></code>, y
<code><a href="#gracefulstop">WINCH</a></code>,
que van a ser descritas a continuación.</p>
<p>Para enviar una señal al proceso padre debe escribir un
comando como el que se muestra en el ejemplo:</p>
<div class="example"><p><code>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</code></p></div>
<p>La segunda manera de enviar señales a los procesos
<code>httpd</code> es usando las opciones de línea de
comandos <code>-k</code>: <code>stop</code>, <code>restart</code>,
y <code>graceful</code> y <code>graceful-stop</code>, como se
muestra más abajo. Estas opciones se le pueden pasar al binario
<code class="program"><a href="./programs/httpd.html">httpd</a></code>, pero se recomienda que se pasen al
script de control <code class="program"><a href="./programs/apachectl.html">apachectl</a></code>, que a su vez los
pasará a <code class="program"><a href="./programs/httpd.html">httpd</a></code>.</p>
<p>Después de haber enviado las señales que desee a
<code>httpd</code>, puede ver como progresa el proceso
escribiendo:</p>
<div class="example"><p><code>tail -f /usr/local/apache2/logs/error_log</code></p></div>
<p>Modifique estos ejemplos para que coincidan con la
configuración que tenga especificada en las directivas
<code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code> y <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> en su fichero principal de
configuración.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="term" id="term">Parar Ahora Apache</a><a title="Enlace permanente" href="#term" class="permalink">¶</a></h2>
<dl><dt>Señal: TERM</dt>
<dd><code>apachectl -k stop</code></dd>
</dl>
<p>Enviar las señales <code>TERM</code> o <code>stop</code>
al proceso padre hace que se intenten eliminar todos los procesos
hijos inmediatamente. Esto puede tardar algunos segundos. Una vez que hayan
terminado todos los procesos hijos, terminará el proceso padre.
Cualquier petición en proceso terminará inmediatamente, y
ninguna petición posterior será
atendida.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="graceful" id="graceful">Reinicio "Graceful" o elegante</a><a title="Enlace permanente" href="#graceful" class="permalink">¶</a></h2>
<dl><dt>Señal: USR1</dt>
<dd><code>apachectl -k graceful</code></dd>
</dl>
<p>Las señales <code>USR1</code> o <code>graceful</code>
hacen que el proceso padre <em>indique</em> a sus hijos que
terminen después de servir la petición que están
atendiendo en ese momento (o de inmediato si no están
sirviendo ninguna petición). El proceso padre lee de nuevo
sus ficheros de configuración y vuelve a abrir sus ficheros
log. Conforme cada hijo va terminando, el proceso padre lo va
sustituyendo con un hijo de una nueva <em>generación</em> con
la nueva configuración, que empiezan a servir peticiones
inmediatamente.</p>
<div class="note">En algunas plataformas que no permiten usar
<code>USR1</code> para reinicios graceful, puede usarse una
señal alternativa (como <code>WINCH</code>). También puede
usar <code>apachectl graceful</code> y el script de control
enviará la señal adecuada para su plataforma.</div>
<p>Apache está diseñado para respetar en todo momento la
directiva de control de procesos de los MPM, así como para
que el número de procesos e hilos disponibles para servir a
los clientes se mantenga en los valores adecuados durante el
proceso de reinicio. Aún más, está diseñado
para respetar la directiva <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code> de la siguiente
manera: si después de al menos un segundo el nuevo hijo de la
directiva <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code>
no ha sido creado, entonces crea los suficientes para que se atienda
el trabajo que queda por hacer. Así, se intenta mantener
tanto el número de hijos adecuado para el trabajo que el
servidor tenga en ese momento, como respetar la configuración
determinada por los parámetros de la directiva
<code class="directive">StartServers</code>.</p>
<p>Los usuarios del módulo <code class="module"><a href="./mod/mod_status.html">mod_status</a></code>
notarán que las estadísticas del servidor
<strong>no</strong> se ponen a cero cuando se usa la señal
<code>USR1</code>. Apache fue escrito tanto para minimizar el
tiempo en el que el servidor no puede servir nuevas peticiones
(que se pondrán en cola por el sistema operativo, de modo que
se no se pierda ningún evento), como para respetar sus
parámetros de ajuste. Para hacer esto, tiene que guardar el
<em>scoreboard</em> usado para llevar el registro de los procesos
hijo a través de las distintas generaciones.</p>
<p>El mod_status también usa una <code>G</code> para indicar
que esos hijos están todavía sirviendo peticiones
previas al reinicio graceful.</p>
<p>Actualmente no existe ninguna manera de que un script con un
log de rotación usando <code>USR1</code> sepa con seguridad
que todos los hijos que se registraron en el log con anterioridad
al reinicio han terminado. Se aconseja que se use un retardo
adecuado después de enviar la señal <code>USR1</code>
antes de hacer nada con el log antiguo. Por ejemplo, si la mayor
parte las visitas que recibe de usuarios que tienen conexiones de
baja velocidad tardan menos de 10 minutos en completarse, entonces
espere 15 minutos antes de hacer nada con el log antiguo.</p>
<div class="note">Si su fichero de configuración tiene errores cuando
haga el reinicio, entonces el proceso padre no se reiniciará
y terminará con un error. En caso de un reinicio graceful,
también dejará a los procesos hijo ejecutándose mientras
existan. (Estos son los hijos de los que se está saliendo de
forma graceful y que están sirviendo sus últimas
peticiones.) Esto provocará problemas si intenta reiniciar el
servidor no será posible conectarse a la lista de puertos
de escucha. Antes de reiniciar, puede comprobar que la sintaxis de
sus ficheros de configuración es correcta con la opción de
línea de comandos <code>-t</code> (consulte <code class="program"><a href="./programs/httpd.html">httpd</a></code>).
No obstante, esto no
garantiza que el servidor se reinicie correctamente. Para
comprobar que no hay errores en los ficheros de
configuración, puede intentar iniciar <code>httpd</code> con
un usuario diferente a root. Si no hay errores, intentará
abrir sus sockets y logs y fallará porque el usuario no es
root (o porque el <code>httpd</code> que se está ejecutando
en ese momento ya está conectado a esos puertos). Si falla
por cualquier otra razón, entonces casi seguro que hay
algún error en alguno de los ficheros de configuración y
debe corregir ese o esos errores antes de hacer un reinicio
graceful.</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="hup" id="hup">Reiniciar Apache</a><a title="Enlace permanente" href="#hup" class="permalink">¶</a></h2>
<dl><dt>Señal: HUP</dt>
<dd><code>apachectl -k restart</code></dd>
</dl>
<p>El envío de las señales <code>HUP</code> o
<code>restart</code> al proceso padre hace que los procesos hijo
terminen como si le enviáramos la señal
<code>TERM</code>, para eliminar el proceso padre. La diferencia
está en que estas señales vuelven a leer los archivos de
configuración y vuelven a abrir los ficheros log. Se genera
un nuevo conjunto de hijos y se continúa sirviendo
peticiones.</p>
<p>Los usuarios del módulo <code class="module"><a href="./mod/mod_status.html">mod_status</a></code>
notarán que las estadísticas del servidor se ponen a
cero cuando se envía la señal <code>HUP</code>.</p>
<div class="note">Si su fichero de configuración contiene errores, cuando
intente reiniciar, el proceso padre del servidor no se
reiniciará, sino que terminará con un error. Consulte
más arriba cómo puede solucionar este problema.</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="race" id="race">Apándice: señales y race conditions</a><a title="Enlace permanente" href="#race" class="permalink">¶</a></h2>
<p>Con anterioridad a la versión de Apache 1.2b9 había
varias <em>race conditions</em> implicadas en las señales
para parar y reiniciar procesos (una descripción sencilla de
una race condition es: un problema relacionado con el momento en
que suceden las cosas, como si algo sucediera en momento en que no
debe, y entonces el resultado esperado no se corresponde con el
obtenido). Para aquellas arquitecturas que tienen el conjunto de
características "adecuadas", se han eliminado tantas race
conditions como ha sido posible. Pero hay que tener en cuenta que
todavía existen race conditions en algunas arquitecturas.</p>
<p>En las arquitecturas que usan un <code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code> en disco, existe la
posibilidad de que se corrompan los scoreboards. Esto puede hacer
que se produzca el error "bind: Address already in use"
(después de usar<code>HUP</code>) o el error "long lost child
came home!" (después de usar <code>USR1</code>). En el
primer caso se trata de un error irrecuperable, mientras que en el
segundo, solo ocurre que el servidor pierde un slot del
scoreboard. Por lo tanto, sería aconsejable usar reinicios
graceful, y solo hacer reinicios normales de forma
ocasional. Estos problemas son bastante complicados de solucionar,
pero afortunadamente casi ninguna arquitectura necesita un fichero
scoreboard. Consulte la documentación de la directiva
<code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code> para ver
las arquitecturas que la usan.</p>
<p>Todas las arquitecturas tienen una pequeña race condition
en cada proceso hijo implicada en la segunda y subsiguientes
peticiones en una conexión HTTP persistente
(KeepAlive). Puede ser que el servidor termine después de
leer la línea de petición pero antes de leer cualquiera
de las cabeceras de petición. Hay una solución que fue
descubierta demasiado tarde para la incluirla en versión
1.2. En teoría esto no debe suponer ningún problema porque el
cliente KeepAlive ha de esperar que estas cosas pasen debido a los
retardos de red y a los timeouts que a veces dan los
servidores. En la practica, parece que no afecta a nada más
en una sesión de pruebas, un servidor se reinició
veinte veces por segundo y los clientes pudieron navegar sin
problemas por el sitio web sin encontrar problemas ni para
descargar una sola imagen ni encontrar un solo enlace roto. </p>
</div></div>
<div class="bottomlang">
<p><span>Idiomas disponibles: </span><a href="./de/stopping.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> |
<a href="./en/stopping.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="./es/stopping.html" title="Español"> es </a> |
<a href="./fr/stopping.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="./ja/stopping.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="./ko/stopping.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="./tr/stopping.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comentarios</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/trunk/stopping.html';
(function(w, d) {
if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
d.write('<div id="comments_thread"><\/div>');
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
}
else {
d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
}
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2018 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="./mod/">Módulos</a> | <a href="./mod/quickreference.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="./glossary.html">Glosario</a> | <a href="./sitemap.html">Mapa del sitio web</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
//--><!]]></script>
</body></html>
|