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
|
<?xml version="1.0" encoding="UTF-8"?>
<!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="tr" xml:lang="tr"><head><!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>Durdurma ve Yeniden Başlatma - Apache HTTP Sunucusu</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 href="./images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.0</p>
<img alt="" src="./images/feather.gif" /></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/">HTTP Sunucusu</a> > <a href="http://httpd.apache.org/docs/">Belgeleme</a> > <a href="./">Sürüm 2.0</a></div><div id="page-content"><div id="preamble"><h1>Durdurma ve Yeniden Başlatma</h1>
<div class="toplang">
<p><span>Mevcut Diller: </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" hreflang="es" rel="alternate" title="Español"> es </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="./ru/stopping.html" hreflang="ru" rel="alternate" title="Russian"> ru </a> |
<a href="./tr/stopping.html" title="Türkçe"> tr </a></p>
</div>
<p>Bu belge Apache HTTPd’nin Unix benzeri sistemlerde durdurulması ve
yeniden başlatılması konularını kapsar. Windows NT, 2000 ve XP
kullanıcıları Apache HTTPd’yi bu platformlarda nasıl denetimlerine
alacaklarını öğrenmek için <a href="platform/windows.html#winsvc">Apache
HTTPd’nin Bir Hizmet Olarak Çalıştırılması</a> sayfasına, Windows 9x ve
ME kullanıcıları ise <a href="platform/windows.html#wincons">Apache
HTTPd’nin Bir Konsol Uygulaması Olarak Çalıştırılması</a> sayfasına
bakabilirler.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#introduction">Giriş</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#term">Hemen Durdur</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#graceful">Nazikçe Yeniden Başlat</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#hup">Hemen Yeniden Başlat</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#race">Ek: Sinyaller ve yarış koşulları</a></li>
</ul><h3>Ayrıca bakınız:</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">Başlatma</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">Giriş</a></h2>
<p>Apache HTTPd’yi durdurmak ve yeniden başlatmak için çalışan
<code class="program"><a href="./programs/httpd.html">httpd</a></code> süreçlerine bir sinyal göndermeniz gerekir.
Sinyal göndermek için iki yol vardır. İlki, süreçlere doğrudan sinyal
göndermek için unix <code>kill</code> komutunun kullanımıdır. Bu
suretle, sisteminizde çalışmakta olan bir çok <code class="program"><a href="./programs/httpd.html">httpd</a></code>
sürecini uyarabilirsiniz ama süreç kimliği <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> yönergesi ile belirtilen dosyada
tutulan ana süreç dışında hiçbirine sinyal göndermemelisiniz. Başka
bir deyişle, ana süreç haricinde hiçbir sürece sinyal göndermeye normal
olarak ihtiyacınız olmaması gerekir. Ana sürece gönderebileceğiniz
üç çeşit sinyal vardır:
<code><a href="#term">TERM</a></code>,
<code><a href="#hup">HUP</a></code> ve
<code><a href="#graceful">USR1</a></code>. Bunlar yeri geldikçe
açıklanacaktır.</p>
<p>Ana sürece <code>kill</code> ile sinyal göndermek için şöyle bir
komut verebilirsiniz:</p>
<div class="example"><p><code>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</code></p></div>
<p><code class="program"><a href="./programs/httpd.html">httpd</a></code> süreçlerine sinyal göndermenin ikinci yolu
<code>-k</code> komut satırı seçeneğini şu değerlerden biri ile
kullanmaktır: <code>stop</code>, <code>restart</code> ve
<code>graceful</code>. Bunlar aşağıda açıklanacaktır.
<code>-k</code> komut satırı seçeneği
<code class="program"><a href="./programs/httpd.html">httpd</a></code>’ye ait olsa da ana sürece bu sinyalleri
göndermek için <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> betiğini kullanmanızı
öneririz. <code class="program"><a href="./programs/apachectl.html">apachectl</a></code>, komut satırı seçeneklerini
<code class="program"><a href="./programs/httpd.html">httpd</a></code>’ye aktaracaktır.</p>
<p><code class="program"><a href="./programs/httpd.html">httpd</a></code>’ye sinyal gönderdikten sonra olup biteni şu
komutla izleyebilirsiniz:</p>
<div class="example"><p><code>tail -f /usr/local/apache2/logs/error_log</code></p></div>
<p>Bu örnekleri, kendi <code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code> ve
<code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> yönergelerinizdeki
ayarlara uygun olarak değiştirdikten sonra kullanınız.</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">Hemen Durdur</a></h2>
<dl><dt>Sinyal: TERM</dt>
<dd><code>apachectl -k stop</code></dd>
</dl>
<p>Ana sürece <code>TERM</code> veya <code>stop</code> sinyali
göndererek tüm çocukların bir an önce öldürülmeye çalışılmasını sağlamış
olursunuz. Tüm çocukların öldürülmesi bir kaç saniye sürebilir. Son
olarak ana süreç çıkacaktır. Yanıtlanmakta olan istekler hemen
sonlandırılacak ve artık isteklere yanıt verilmeyecektir.</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">Nazikçe Yeniden Başlat</a></h2>
<dl><dt>Sinyal: USR1</dt>
<dd><code>apachectl -k graceful</code></dd>
</dl>
<p>Ana sürece <code>USR1</code> veya <code>graceful</code> sinyalinin
gönderilmesi, çocuklara ellerindeki mevcut işleri bitirdikten sonra
(veya sundukları bir şey yoksa hemen) çıkmalarının <em>önerilmesi</em>
demektir. Ana süreç kendi yapılandırma dosyalarını yeniden okur ve
kendi günlük dosyalarını yeniden açar. Ana sürecin öldürdüğü her sürecin
yerine yeni yapılandırma <em>kuşağından</em> bir süreç başlatır ve hemen
yeni isteklere hizmet sunulmaya başlanır.</p>
<div class="note">Belli platformlarda, nazikçe yeniden başlatma için
<code>USR1</code> sinyalinin kullanılmasına izin verilmez. Bu gibi
durumlarda, <code>WINCH</code> gibi başka bir sinyal kullanılabilir.
<code>apachectl graceful</code> komutu platformunuz için doğru sinyali
gönderecektir.</div>
<p>Bu kod MPM’lerin süreçleri denetleyen yönergelerine daima uyacak
şekilde tasarlanmıştır. Bu suretle, istemcilere hizmet sunacak çocuk
süreçler ve evreler, yeniden başlatma işleminde de uygun sayıda
sağlanmış olur. Bununla birlikte, <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code> yönergesinde şöyle
davranılır: İlk saniye içinde en azından <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code> sayıda yeni çocuk
oluşturulmamışsa iş olmayan bir devreyi geçiştirecek kadarı oluşturulur.
Ardından sunucunun mevcut yükünü karşılamak için gereken sayıda çocuk
süreç oluşturulur. Bu suretle, kod her ikisi için de gereğini yerine
getirmeye çalışmış olur.</p>
<p><code class="module"><a href="./mod/mod_status.html">mod_status</a></code> kullanıcıları <code>USR1</code>
gönderildiği zaman sunucu istatistiklerinin sıfırlanmadığı konusunda
uyarılacaktır. Kod, sunucunun yeni isteklere yanıt veremediği zamanı en
aza indirmenin yanısıra ayar parametrelerinize de uymak üzere
tasarlanmıştır (yeni istekler işletim sistemi tarafından kuyruğa
alınacağından bir istek kaybı olayı yaşanmaz). Bunu sağlamak için, her
iki kuşağın çocuklarının izini sürecek bir <em>çetele</em> tutulur.</p>
<p><code class="module"><a href="./mod/mod_status.html">mod_status</a></code> modülü, nazikçe yeniden başlat komutunun
verilmesinden önce başlamış ve sunulmaya devam eden isteklere bakan
çocukları imlemek için ayrıca bir <code>G</code> (Graceful’un baş harfi)
kullanır.</p>
<p>Günlük dosyası döndürme betiğine, yeniden başlatma öncesi günlüğe yazan
tüm çocukların işini bitirdiğini <code>USR1</code> kullanarak
bildirmenin bir yolu yoktur. Önerimiz, eski günlük kaydı üzerinde bir
işlem yapmaya başlamadan önce <code>USR1</code> sinyali gönderilmesinin
ardından belli bir süre beklenilmesi olacaktır. Örneğin, düşük band
genişliğine sahip istemcilere hizmet sunan çoğu sürecin işinin 10
dakikadan önce bitmeyeceğini gözönüne alarak eski günlük üzerinde işlem
yapmaya başlamak için 15 dakika beklenebilir.</p>
<div class="note">Bir yeniden başlatma isteğinde, eğer yapılandırma dosyalarınızda bir
hata varsa sunucu yeniden başlamaz ve bir hata ile çıkar. Nazikçe
yeniden başlatma durumunda ana süreç çıkarken çocuklarını çalışır durumda
bırakır. (Bunlar, ellerindeki istekler bitince ‘nazikçe çıkacak’ olan
çocuk süreçlerdir.) Eğer sunucuyu yeniden başlatmaya çalışırsanız bu
sorunlara yol açar; örneğin, dinleyeceği portları bağlayamayabilir. Bir
yeniden başlatma öncesinde yapılandırma dosyalarınızın sözdizimini
<code>-t</code> komut satırı seçeneği ile sınayabilirsiniz (bkz,
<code class="program"><a href="./programs/httpd.html">httpd</a></code>). Ancak, bu hala sunucunuzun düzgünce yeniden
başlatılmasını garanti etmeyecektir. Yapılandırma dosyalarınızı
sözdizimi denetiminin yanında anlamlandırılması bakımından da sınamak
için <code class="program"><a href="./programs/httpd.html">httpd</a></code>’nin root olmayan bir kullanıcı tarafından
çalıştırılmasını deneyebilirsiniz. Eğer yapılandırma dosyalarında bir
hata yoksa soketleri ve günlük dosyalarını açmaya çalışırken root
aidiyetinde çalışmadığından veya çalışmakta olan asıl sunucu bu portları
zaten dinlediğinden başarısız olacaktır. Eğer başka bir sebeple
başarısız olursa olası sebep bir yapılandırma dosyası hatasıdır ve asıl
sunucuya ‘nazikçe yeniden başla’ komutunu vermeden önce bu hatayı
düzeltmeniz gerekir.</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">Hemen Yeniden Başlat</a></h2>
<dl><dt>Sinyal: HUP</dt>
<dd><code>apachectl -k restart</code></dd>
</dl>
<p>Ana sürece <code>HUP</code> veya <code>restart</code> sinyalinin
gönderilmesi tüm çocukların <code>TERM</code> sinyali gönderilmiş gibi
öldürülmesine sebep olur fakat ana sürecin çıkmasını sağlamaz.
Ana süreç yapılandırma dosyalarını yeniden okur ve günlük kayıt
dosyalarını yeniden açar. Bunların ardından isteklere yanıt verecek yeni
kuşak çocukları oluşturmaya başlar.</p>
<p><code class="module"><a href="./mod/mod_status.html">mod_status</a></code> kullanıcıları bir <code>HUP</code> sinyali
gönderildiğinde sunucu istatistiklerinin sıfırlandığı konusunda
uyarılırlar.</p>
<div class="note">Eğer yapılandırma dosyalarınızda sözdizimi hatası varsa yeniden
başlatma işlemi gerçekleşmez ve ana süreç bir hata vererek çıkar.
Bundan kaçınmak için önceki yönteme bakınız.</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">Ek: Sinyaller ve yarış koşulları</a></h2>
<p>Apache 1.2b9 sürümü öncesinde, yeniden başlatma ve ölüm sinyalleri ile
ilgili olarak ortaya çıkan çeşitli yarış koşulları vardı. (Basitçe, bir
yarış koşulu zamanlama ile ilgili bir sorundur; yanlış zamanda veya
yanlış sırada oluşan bir şey istenmeyen sonuçlara yol açarken, aynı şey
doğru zaman ve doğru sırada oluştuğunda herşey yolunda gider.) Bu tür
mimarilerde elimizden geldiği kadar bu sorunları giderecek doğru
özellikleri kullanmaya gayret etsek de belli mimarilerde hala yarış
koşullarının ortaya çıkma olasılığı bulunduğunu belirtmek gerekir.</p>
<p>Disk üzerinde <code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code> dosyası tutan mimarilerde
çetele bozulması olasılığı gündeme gelebilir. Bu durum, "bind:
Address already in use" (<code>HUP</code> sonrası) veya "long lost
child came home!" (<code>USR1</code> sonrası) iletileriyle
sonuçlanabilir. İkincisi sadece çetele kaybına sebep olurken birincisi
ölümcül bir hatadır. Bu bakımdan, normalde nazikçe yeniden başlatma
kullanıp ara sıra normal yeniden başlatma yapılması önerilebilir. Bu
sorunları kitabına uydurmak çok zordur fakat şans eseri çoğu mimari bir
çetele dosyası gerektirmemektedir. Çetele dosyası kullanan mimariler
için <code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code> belgesine
bakınız.</p>
<p>Kalıcı HTTP bağlantısı (KeepAlive) üzerinden ikinci ve sonraki
isteklerle ilgili olarak her çocuk süreçte bir yarış koşulu oluşma
olasılığı küçük de olsa bütün mimarilerde vardır. İstek satırı
okunduktan sonra hiçbir istek başlığı okunmadan çıkabilir. Bu durum 1.2
sürümünde geç de olsa farkedilmiş ve düzeltme yoluna gidilmiştir. Teorik
olarak, ağ gecikmeleri ve sunucu zaman aşımları nedeniyle KeepAlive
istemcisi açısından bu olaylar beklenmediğinden, bu önemli bir konu
değildir. Uygulamada ise, ne sunucuyu ne de istemciyi etkilediği
görülmez; bir deneme ortamında sunucu saniyede 20 kere yeniden
başlatılmış ve istemciler boş belge veya bozuk resim almadan siteyi
başarıyla gezmişlerdir.</p>
</div></div>
<div class="bottomlang">
<p><span>Mevcut Diller: </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" hreflang="es" rel="alternate" title="Español"> es </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="./ru/stopping.html" hreflang="ru" rel="alternate" title="Russian"> ru </a> |
<a href="./tr/stopping.html" title="Türkçe"> tr </a></p>
</div><div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
|