1 <?xml version='1.0' encoding='UTF-8' ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.tr.xsl"?>
4 <!-- English Revision: 1174747 -->
5 <!-- =====================================================
6 Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
7 Reviewed by: Orhan Berent <berent belgeler.org>
8 ========================================================== -->
11 Licensed to the Apache Software Foundation (ASF) under one or more
12 contributor license agreements. See the NOTICE file distributed with
13 this work for additional information regarding copyright ownership.
14 The ASF licenses this file to You under the Apache License, Version 2.0
15 (the "License"); you may not use this file except in compliance with
16 the License. You may obtain a copy of the License at
18 http://www.apache.org/licenses/LICENSE-2.0
20 Unless required by applicable law or agreed to in writing, software
21 distributed under the License is distributed on an "AS IS" BASIS,
22 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23 See the License for the specific language governing permissions and
24 limitations under the License.
27 <manualpage metafile="stopping.xml.meta">
29 <title>Apache HTTP Sunucusunun Durdurulması ve Yeniden Başlatılması</title>
32 <p>Bu belge Apache HTTP Sunucusunun Unix benzeri sistemlerde durdurulması
33 ve yeniden başlatılması konularını kapsar. Windows NT, 2000 ve XP
34 kullanıcıları Apache HTTPd’yi bu platformlarda nasıl denetimlerine
35 alacaklarını öğrenmek için <a href="platform/windows.html#winsvc"
36 >httpd’nin Bir Hizmet Olarak Çalıştırılması</a> sayfasına, Windows 9x ve
37 ME kullanıcıları ise <a href="platform/windows.html#wincons">httpd’nin
38 Bir Konsol Uygulaması Olarak Çalıştırılması</a> sayfasına
42 <seealso><program>httpd</program></seealso>
43 <seealso><program>apachectl</program></seealso>
44 <seealso><a href="invoking.html">Başlatma</a></seealso>
46 <section id="introduction"><title>Giriş</title>
48 <p>Apache HTTP Sunucusunu durdurmak ve yeniden başlatmak için çalışan
49 <program>httpd</program> süreçlerine bir sinyal göndermeniz gerekir.
50 Sinyal göndermek için iki yol vardır. İlki, süreçlere doğrudan sinyal
51 göndermek için unix <code>kill</code> komutunun kullanımıdır. Bu
52 suretle, sisteminizde çalışmakta olan bir çok <program>httpd</program>
53 sürecini uyarabilirsiniz ama süreç kimliği <directive
54 module="mpm_common">PidFile</directive> yönergesi ile belirtilen dosyada
55 tutulan ana süreç dışında hiçbirine sinyal göndermemelisiniz. Başka
56 bir deyişle, ana süreç haricinde hiçbir sürece sinyal göndermeye normal
57 olarak ihtiyacınız olmaması gerekir. Ana sürece gönderebileceğiniz
58 dört çeşit sinyal vardır:
59 <code><a href="#term">TERM</a></code>,
60 <code><a href="#graceful">USR1</a></code>,
61 <code><a href="#hup">HUP</a></code> ve
62 <code><a href="#gracefulstop">WINCH</a></code>. Bunlar yeri geldikçe
65 <p>Ana sürece <code>kill</code> ile sinyal göndermek için şöyle bir
66 komut verebilirsiniz:</p>
68 <example>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</example>
70 <p><program>httpd</program> süreçlerine sinyal göndermenin ikinci yolu
71 <code>-k</code> komut satırı seçeneğini şu değerlerden biri ile
72 kullanmaktır: <code>stop</code>, <code>restart</code>,
73 <code>graceful</code> ve <code>graceful-stop</code>. Bunlar aşağıda
74 açıklanacaktır. <code>-k</code> komut satırı seçeneği
75 <program>httpd</program>’ye ait olsa da ana sürece bu sinyalleri
76 göndermek için <program>apachectl</program> betiğini kullanmanızı
77 öneririz. <program>apachectl</program>, komut satırı seçeneklerini
78 <program>httpd</program>’ye aktaracaktır.</p>
80 <p><program>httpd</program>’ye sinyal gönderdikten sonra olup biteni şu
81 komutla izleyebilirsiniz:</p>
83 <example>tail -f /usr/local/apache2/logs/error_log</example>
85 <p>Bu örnekleri, kendi <directive module="core">ServerRoot</directive> ve
86 <directive module="mpm_common">PidFile</directive> yönergelerinizdeki
87 ayarlara uygun olarak değiştirdikten sonra kullanınız.</p>
90 <section id="term"><title>Hemen Durdur</title>
92 <dl><dt>Sinyal: TERM</dt>
93 <dd><code>apachectl -k stop</code></dd>
96 <p>Ana sürece <code>TERM</code> veya <code>stop</code> sinyali
97 göndererek tüm çocukların bir an önce öldürülmeye çalışılmasını sağlamış
98 olursunuz. Tüm çocukların öldürülmesi bir kaç saniye sürebilir. Son
99 olarak ana süreç çıkacaktır. Yanıtlanmakta olan istekler hemen
100 sonlandırılacak ve artık isteklere yanıt verilmeyecektir.</p>
103 <section id="graceful"><title>Nazikçe Yeniden Başlat</title>
105 <dl><dt>Sinyal: USR1</dt>
106 <dd><code>apachectl -k graceful</code></dd>
109 <p>Ana sürece <code>USR1</code> veya <code>graceful</code> sinyalinin
110 gönderilmesi, çocuklara ellerindeki mevcut işleri bitirdikten sonra
111 (veya sundukları bir şey yoksa hemen) çıkmalarının <em>önerilmesi</em>
112 demektir. Ana süreç kendi yapılandırma dosyalarını yeniden okur ve
113 kendi günlük dosyalarını yeniden açar. Ana sürecin öldürdüğü her sürecin
114 yerine yeni yapılandırma <em>kuşağından</em> bir süreç başlatır ve hemen
115 yeni isteklere hizmet sunulmaya başlanır.</p>
117 <p>Bu kod MPM’lerin süreçleri denetleyen yönergelerine daima uyacak
118 şekilde tasarlanmıştır. Bu suretle, istemcilere hizmet sunacak çocuk
119 süreçler ve evreler, yeniden başlatma işleminde de uygun sayıda
120 sağlanmış olur. Bununla birlikte, <directive
121 module="mpm_common">StartServers</directive> yönergesinde şöyle
122 davranılır: İlk saniye içinde en azından <directive
123 module="mpm_common">StartServers</directive> sayıda yeni çocuk
124 oluşturulmamışsa iş olmayan bir devreyi geçiştirecek kadarı oluşturulur.
125 Ardından sunucunun mevcut yükünü karşılamak için gereken sayıda çocuk
126 süreç oluşturulur. Bu suretle, kod her ikisi için de gereğini yerine
127 getirmeye çalışmış olur.</p>
129 <p><module>mod_status</module> kullanıcıları <code>USR1</code>
130 gönderildiği zaman sunucu istatistiklerinin sıfırlanmadığı konusunda
131 uyarılacaktır. Kod, sunucunun yeni isteklere yanıt veremediği zamanı en
132 aza indirmenin yanısıra ayar parametrelerinize de uymak üzere
133 tasarlanmıştır (yeni istekler işletim sistemi tarafından kuyruğa
134 alınacağından bir istek kaybı olayı yaşanmaz). Bunu sağlamak için, her
135 iki kuşağın çocuklarının izini sürecek bir <em>çetele</em> tutulur.</p>
137 <p><module>mod_status</module> modülü, nazikçe yeniden başlat komutunun
138 verilmesinden önce başlamış ve sunulmaya devam eden isteklere bakan
139 çocukları imlemek için ayrıca bir <code>G</code> (Graceful’un baş harfi)
142 <p>Günlük dosyası döndürme betiğine, yeniden başlatma öncesi günlüğe yazan
143 tüm çocukların işini bitirdiğini <code>USR1</code> kullanarak
144 bildirmenin bir yolu yoktur. Önerimiz, eski günlük kaydı üzerinde bir
145 işlem yapmaya başlamadan önce <code>USR1</code> sinyali gönderilmesinin
146 ardından belli bir süre beklenilmesi olacaktır. Örneğin, düşük band
147 genişliğine sahip istemcilere hizmet sunan çoğu sürecin işinin 10
148 dakikadan önce bitmeyeceğini gözönüne alarak eski günlük üzerinde işlem
149 yapmaya başlamak için 15 dakika beklenebilir.</p>
152 <p>Bir yeniden başlatma isteğinde, yapılandırma dosyalarında bir hata
153 olmadığından emin olmak için önce bir sözdizimi denetimi yapılır. Eğer
154 yapılandırma dosyalarınızda bir hata varsa bu sözdizimi hatasıyla ilgili
155 bir hata iletisi alırsınız ve sunucu yeniden başlamayı reddeder. Bu
156 yolla, bir hata sonucu sunucunun çökerek yeniden başlamaması nedeniyle
157 işlevsiz bir sunucuyla başbaşa kalmanız önlenmiştir.</p>
159 <p>Ancak, bu hala sunucunuzun düzgünce yeniden başlatılmasını garanti
160 etmeyecektir. Yapılandırma dosyalarınızı sözdizimi denetiminin yanında
161 anlamlandırılması bakımından da sınamak için
162 <program>httpd</program>’nin root olmayan bir kullanıcı tarafından
163 çalıştırılmasını deneyebilirsiniz. Eğer yapılandırma dosyalarında bir
164 hata yoksa soketleri ve günlük dosyalarını açmaya çalışırken root
165 aidiyetinde çalışmadığından veya çalışmakta olan asıl sunucu bu portları
166 zaten dinlediğinden başarısız olacaktır. Eğer başka bir sebeple
167 başarısız olursa olası sebep bir yapılandırma dosyası hatasıdır ve asıl
168 sunucuya ‘nazikçe yeniden başla’ komutunu vermeden önce bu hatayı
169 düzeltmeniz gerekir.</p></note>
172 <section id="hup"><title>Hemen Yeniden Başlat</title>
174 <dl><dt>Sinyal: HUP</dt>
175 <dd><code>apachectl -k restart</code></dd>
178 <p>Ana sürece <code>HUP</code> veya <code>restart</code> sinyalinin
179 gönderilmesi tüm çocukların <code>TERM</code> sinyali gönderilmiş gibi
180 öldürülmesine sebep olur fakat ana sürecin çıkmasını sağlamaz.
181 Ana süreç yapılandırma dosyalarını yeniden okur ve günlük kayıt
182 dosyalarını yeniden açar. Bunların ardından isteklere yanıt verecek yeni
183 kuşak çocukları oluşturmaya başlar.</p>
185 <p><module>mod_status</module> kullanıcıları bir <code>HUP</code> sinyalı
186 gönderildiğinde sunucu istatistiklerinin sıfırlandığı konusunda
189 <note>‘Nazikçe yeniden başlat’ komutundaki gibi yeniden başlatma öncesi
190 bir sözdizimi denetimi yapılır. Eğer yapılandırma dosyalarınızda
191 sözdizimi hatası varsa yeniden başlatma işlemi gerçekleşmez ve sözdizimi
192 hatalarıyla ilgili bildirim alırsınız.</note>
195 <section id="gracefulstop"><title>Nazikçe Durdur</title>
197 <dl><dt>Sinyal: WINCH</dt>
198 <dd><code>apachectl -k graceful-stop</code></dd>
201 <p>Ana sürecin <code>WINCH</code> veya <code>graceful-stop</code>
202 sinyalini alması, çocuklara ellerindeki mevcut işleri bitirdikten sonra
203 (veya sundukları bir şey yoksa hemen) çıkmalarının <em>önerilmesine</em>
204 sebep olur. Ana süreç bunun hemen ardından <directive
205 module="mpm_common">PidFile</directive> dosyasını siler ve port
206 dinlemeyi keser. Ana süreç çalışmaya ve isteklere yanıt vermekte olan
207 çocuk süreçleri izlemeye devam eder. Tüm çocuklar işlerini bitirip
208 çıktığında veya <directive
209 module="mpm_common">GracefulShutdownTimeout</directive> ile belirtilen
210 zaman aşımı dolduğunda ana süreç de kendini sonlandırır. Eğer zaman aşımı
211 devreye girmişse o an çalışmakta olan çocuk süreçlere <code>TERM</code>
212 sinyali gönderilerek hemen çıkmaları sağlanır.</p>
214 <p>Bir <code>TERM</code> sinyali ile "graceful" durumundaki tüm çocuklar
215 ve ana süreç hemen sonlandırılacaktır. Bununla birlikte, <directive
216 module="mpm_common">PidFile</directive> dosyası da silineceğinden, artık
217 <code>apachectl</code> veya <code>httpd</code>’yi bu sinyali göndermek
218 için kullanamayacaksınız.</p>
220 <note><p><code>graceful-stop</code> sinyali, aynı anda, aynı yapılandırma
221 ile çok sayıda <program>httpd</program> kopyasının çalıştırılabilmesine
222 imkan verir. Bu, Apache nazikçe yükseltileceği zaman güçlü bir özellik
223 haline gelmekteyse de, bazı yapılandırmalarda yarış koşullarının
224 oluşmasına ve kısır çekişmelere (deadlock) sebep olabilir.</p>
226 <p>Sunucunun süreç kimliğini içeren kilit dosyaları (<directive
227 module="core">Mutex</directive>) ve Unix soket dosyaları
228 (<directive module="mod_cgid">ScriptSock</directive>) gibi dosyaların
229 disk üzerindeki mevcudiyetlerinin sorunsuz olarak devam ettiğinden emin
230 olunmaya çalışılmalıdır. Ayrıca, bir yapılandırma yönergesi, üçüncü
231 parti bir modül veya kalıcı CGI uygulamalarına ait disk kilit veya durum
232 dosyaları olabilir; <program>httpd</program>’nin birden fazla kopyasının
233 çalışması nedeniyle bu dosyaların da üzerine yazılmadığından emin
234 olunmaya çalışılmalıdır.</p>
236 <p><program>rotatelogs</program> tarzı borulu günlükleme kullanımı gibi
237 durumlarda yarış koşullarının oluşması olasılığına karşı uyanık
238 olunmalıdır. Aynı günlük kayıt dosyalarını aynı anda döndürmeye çalışan
239 birden fazla <program>rotatelogs</program> kopyasının çalıştırılması
240 halinde bunların her biri diğerlerinin günlük kayıt dosyalarının kaybına
241 sebep olabilir.</p></note>