mirror of
https://github.com/apache/httpd.git
synced 2025-08-15 23:27:39 +00:00

Translated by: Nilgün Belma Bugüner <nilgun belgeler.org> Reviewed by: Orhan Berent <berent belgeler.org> Forward port of r1221304 from 2.4.x. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1238749 13f79535-47bb-0310-9956-ffa450edef68
245 lines
13 KiB
XML
245 lines
13 KiB
XML
<?xml version='1.0' encoding='UTF-8' ?>
|
||
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
|
||
<?xml-stylesheet type="text/xsl" href="./style/manual.tr.xsl"?>
|
||
<!-- English Revision: 1174747 -->
|
||
<!-- =====================================================
|
||
Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
|
||
Reviewed by: Orhan Berent <berent belgeler.org>
|
||
========================================================== -->
|
||
|
||
<!--
|
||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||
contributor license agreements. See the NOTICE file distributed with
|
||
this work for additional information regarding copyright ownership.
|
||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||
(the "License"); you may not use this file except in compliance with
|
||
the License. You may obtain a copy of the License at
|
||
|
||
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
||
Unless required by applicable law or agreed to in writing, software
|
||
distributed under the License is distributed on an "AS IS" BASIS,
|
||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
See the License for the specific language governing permissions and
|
||
limitations under the License.
|
||
-->
|
||
|
||
<manualpage metafile="stopping.xml.meta">
|
||
|
||
<title>Apache HTTP Sunucusunun Durdurulması ve Yeniden Başlatılması</title>
|
||
|
||
<summary>
|
||
<p>Bu belge Apache HTTP Sunucusunun 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"
|
||
>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">httpd’nin
|
||
Bir Konsol Uygulaması Olarak Çalıştırılması</a> sayfasına
|
||
bakabilirler.</p>
|
||
</summary>
|
||
|
||
<seealso><program>httpd</program></seealso>
|
||
<seealso><program>apachectl</program></seealso>
|
||
<seealso><a href="invoking.html">Başlatma</a></seealso>
|
||
|
||
<section id="introduction"><title>Giriş</title>
|
||
|
||
<p>Apache HTTP Sunucusunu durdurmak ve yeniden başlatmak için çalışan
|
||
<program>httpd</program> 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 <program>httpd</program>
|
||
sürecini uyarabilirsiniz ama süreç kimliği <directive
|
||
module="mpm_common">PidFile</directive> 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
|
||
dört çeşit sinyal vardır:
|
||
<code><a href="#term">TERM</a></code>,
|
||
<code><a href="#graceful">USR1</a></code>,
|
||
<code><a href="#hup">HUP</a></code> ve
|
||
<code><a href="#gracefulstop">WINCH</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>
|
||
|
||
<example>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</example>
|
||
|
||
<p><program>httpd</program> 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>,
|
||
<code>graceful</code> ve <code>graceful-stop</code>. Bunlar aşağıda
|
||
açıklanacaktır. <code>-k</code> komut satırı seçeneği
|
||
<program>httpd</program>’ye ait olsa da ana sürece bu sinyalleri
|
||
göndermek için <program>apachectl</program> betiğini kullanmanızı
|
||
öneririz. <program>apachectl</program>, komut satırı seçeneklerini
|
||
<program>httpd</program>’ye aktaracaktır.</p>
|
||
|
||
<p><program>httpd</program>’ye sinyal gönderdikten sonra olup biteni şu
|
||
komutla izleyebilirsiniz:</p>
|
||
|
||
<example>tail -f /usr/local/apache2/logs/error_log</example>
|
||
|
||
<p>Bu örnekleri, kendi <directive module="core">ServerRoot</directive> ve
|
||
<directive module="mpm_common">PidFile</directive> yönergelerinizdeki
|
||
ayarlara uygun olarak değiştirdikten sonra kullanınız.</p>
|
||
</section>
|
||
|
||
<section id="term"><title>Hemen Durdur</title>
|
||
|
||
<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>
|
||
</section>
|
||
|
||
<section id="graceful"><title>Nazikçe Yeniden Başlat</title>
|
||
|
||
<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>
|
||
|
||
<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, <directive
|
||
module="mpm_common">StartServers</directive> yönergesinde şöyle
|
||
davranılır: İlk saniye içinde en azından <directive
|
||
module="mpm_common">StartServers</directive> 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><module>mod_status</module> 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><module>mod_status</module> 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>
|
||
|
||
<note>
|
||
<p>Bir yeniden başlatma isteğinde, yapılandırma dosyalarında bir hata
|
||
olmadığından emin olmak için önce bir sözdizimi denetimi yapılır. Eğer
|
||
yapılandırma dosyalarınızda bir hata varsa bu sözdizimi hatasıyla ilgili
|
||
bir hata iletisi alırsınız ve sunucu yeniden başlamayı reddeder. Bu
|
||
yolla, bir hata sonucu sunucunun çökerek yeniden başlamaması nedeniyle
|
||
işlevsiz bir sunucuyla başbaşa kalmanız önlenmiştir.</p>
|
||
|
||
<p>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
|
||
<program>httpd</program>’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.</p></note>
|
||
</section>
|
||
|
||
<section id="hup"><title>Hemen Yeniden Başlat</title>
|
||
|
||
<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><module>mod_status</module> kullanıcıları bir <code>HUP</code> sinyalı
|
||
gönderildiğinde sunucu istatistiklerinin sıfırlandığı konusunda
|
||
uyarılırlar.</p>
|
||
|
||
<note>‘Nazikçe yeniden başlat’ komutundaki gibi yeniden başlatma öncesi
|
||
bir sözdizimi denetimi yapılır. Eğer yapılandırma dosyalarınızda
|
||
sözdizimi hatası varsa yeniden başlatma işlemi gerçekleşmez ve sözdizimi
|
||
hatalarıyla ilgili bildirim alırsınız.</note>
|
||
</section>
|
||
|
||
<section id="gracefulstop"><title>Nazikçe Durdur</title>
|
||
|
||
<dl><dt>Sinyal: WINCH</dt>
|
||
<dd><code>apachectl -k graceful-stop</code></dd>
|
||
</dl>
|
||
|
||
<p>Ana sürecin <code>WINCH</code> veya <code>graceful-stop</code>
|
||
sinyalini alması, çocuklara ellerindeki mevcut işleri bitirdikten sonra
|
||
(veya sundukları bir şey yoksa hemen) çıkmalarının <em>önerilmesine</em>
|
||
sebep olur. Ana süreç bunun hemen ardından <directive
|
||
module="mpm_common">PidFile</directive> dosyasını siler ve port
|
||
dinlemeyi keser. Ana süreç çalışmaya ve isteklere yanıt vermekte olan
|
||
çocuk süreçleri izlemeye devam eder. Tüm çocuklar işlerini bitirip
|
||
çıktığında veya <directive
|
||
module="mpm_common">GracefulShutdownTimeout</directive> ile belirtilen
|
||
zaman aşımı dolduğunda ana süreç de kendini sonlandırır. Eğer zaman aşımı
|
||
devreye girmişse o an çalışmakta olan çocuk süreçlere <code>TERM</code>
|
||
sinyali gönderilerek hemen çıkmaları sağlanır.</p>
|
||
|
||
<p>Bir <code>TERM</code> sinyali ile "graceful" durumundaki tüm çocuklar
|
||
ve ana süreç hemen sonlandırılacaktır. Bununla birlikte, <directive
|
||
module="mpm_common">PidFile</directive> dosyası da silineceğinden, artık
|
||
<code>apachectl</code> veya <code>httpd</code>’yi bu sinyali göndermek
|
||
için kullanamayacaksınız.</p>
|
||
|
||
<note><p><code>graceful-stop</code> sinyali, aynı anda, aynı yapılandırma
|
||
ile çok sayıda <program>httpd</program> kopyasının çalıştırılabilmesine
|
||
imkan verir. Bu, Apache nazikçe yükseltileceği zaman güçlü bir özellik
|
||
haline gelmekteyse de, bazı yapılandırmalarda yarış koşullarının
|
||
oluşmasına ve kısır çekişmelere (deadlock) sebep olabilir.</p>
|
||
|
||
<p>Sunucunun süreç kimliğini içeren kilit dosyaları (<directive
|
||
module="core">Mutex</directive>) ve Unix soket dosyaları
|
||
(<directive module="mod_cgid">ScriptSock</directive>) gibi dosyaların
|
||
disk üzerindeki mevcudiyetlerinin sorunsuz olarak devam ettiğinden emin
|
||
olunmaya çalışılmalıdır. Ayrıca, bir yapılandırma yönergesi, üçüncü
|
||
parti bir modül veya kalıcı CGI uygulamalarına ait disk kilit veya durum
|
||
dosyaları olabilir; <program>httpd</program>’nin birden fazla kopyasının
|
||
çalışması nedeniyle bu dosyaların da üzerine yazılmadığından emin
|
||
olunmaya çalışılmalıdır.</p>
|
||
|
||
<p><program>rotatelogs</program> tarzı borulu günlükleme kullanımı gibi
|
||
durumlarda yarış koşullarının oluşması olasılığına karşı uyanık
|
||
olunmalıdır. Aynı günlük kayıt dosyalarını aynı anda döndürmeye çalışan
|
||
birden fazla <program>rotatelogs</program> kopyasının çalıştırılması
|
||
halinde bunların her biri diğerlerinin günlük kayıt dosyalarının kaybına
|
||
sebep olabilir.</p></note>
|
||
</section>
|
||
|
||
</manualpage>
|