<?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: 1602766 -->
<!-- =====================================================
 Translated by: Nilgün Belma Bugüner <nilgun belgeler.gen.tr>
   Reviewed by: Orhan Berent <berent belgeler.gen.tr>
========================================================== -->

<!--
 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="mpm.xml.meta">

  <title>Çok Süreçlilik Modülleri (MPM’ler)</title>

<summary>
  <p>Bu belgede Çok Süreçlilik Modülü denince ne anlaşıldığı ve bunların
    Apache HTTP Sunucusu tarafından nasıl kullanıldıkları açıklanmıştır.</p>
</summary>

<section id="introduction"><title>Giriş</title>

    <p>Apache HTTP Sunucusu çok çeşitli platformlar üstünde farklı ortamlarda
      çalışabilen güçlü ve esnek bir HTTP sunucusu olarak tasarlanmıştır.
      Farklı platformlar ve farklı ortamlar çoğunlukla farklı özellikler veya
      aynı özelliğin en yüksek verimlilikle gerçeklenmesi için farklı yöntemler
      gerektirir. Apache httpd, geniş ortam çeşitliliğini daima modüler
      tasarımı sayesinde uzlaştırmıştır.  Bu tasarım, site yöneticilerine,
      sunucularında bulunmasını istedikleri özellikleri derleme sırasında veya
      çalışma anında gerekli modülleri yüklemek suretiyle seçebilme imkanı
      verir.</p>

    <p>Apache HTTP Sunucusu 2.0, bu modüler tasarımı sunucunun en temel
      işlevlerine kadar indirmiştir. Sunucu, Çok Süreçlilik Modülleri adı
      verilen ve makine üzerindeki ağ portlarının bağlanmasından, isteklerin
      kabul edilmesinden ve bu istekleri yanıtlayacak çocuklara dağıtmaktan
      sorumlu olan modüllerin seçimine imkan verecek bir yapılanma ile
      gelir.</p>

    <p>Sunucunun modüler tasarımının bu seviyede genişletilmesi iki önemli
      yarar sağlar:</p>

    <ul>
      <li>Apache httpd geniş çeşitlilikteki işletim sistemlerini daha temiz ve
        daha verimli bir şekilde destekleyebilmektedir. Özellikle,
        <module>mpm_winnt</module> modülü, Apache httpd 1.3’te kullanılan POSIX
        katmanının yerine işletim sistemine özgü özellikleri
        kullanabildiğinden, Apache HTTP Sunucusunun Windows sürümü artık çok
        daha verimli bir duruma gelmiştir. Aynı fayda özelleştirilmiş MPM’lerle
        diğer işletim sistemlerine de sağlanmıştır.</li>

      <li>Sunucu, belli bir sitenin ihtiyaçlarına uygun olarak daha iyi
        kişiselleştirilebilmektedir. Örneğin, eski yazılım ile uyumluluk ve
        kararlılığa önem veren siteler <module>prefork</module> modülünü
        kullanabilirken, daha geniş ölçeklenebilirlik gerektiren siteler
        <module>worker</module> veya <module>event</module> gibi evreli MPM
        modüllerinden birini seçebilmektedir.</li>
    </ul>

    <p>Kullanıcı açısından MPM’lerin diğer Apache httpd modüllerinden görünüşte
      bir farkı yoktur. Asıl fark sunucuya yüklenebilecek azami MPM modülü
      sayısının bir ve yalnız bir olarak sınırlanmış olmasıdır. Mevcut MPM
      modülleri <a href="mod/">modül dizini</a> sayfasında listelenmiştir.</p>

</section>

<section id="defaults"><title>Öntanımlı MPM’ler</title>

    <p>Aşağıdaki tabloda çeşitli işletim sistemlerinde öntanımlı olan MPM’ler
      listelenmiştir. Derleme sırasında başka bir seçim yapmadığınız takdirde
      bu işletim sistemlerinde bu MPM’ler seçilmiş olacaktır.</p>

    <table border="1" style="zebra">
      <columnspec><column width=".2"/><column width=".2"/></columnspec>
      <tr><td>Netware</td><td><module>mpm_netware</module></td></tr>
      <tr><td>OS/2</td><td><module>mpmt_os2</module></td></tr>
      <tr><td>Unix</td><td>Platformun yapabildiklerine bağlı olarak,
        <module>prefork</module>, <module>worker</module> veya
        <module>event</module></td></tr>
      <tr><td>Windows</td><td><module>mpm_winnt</module></td></tr>
    </table>

    <note><p>'Unix' burada Unix benzeri işletim sistemleri anlamında
      kullanılmıştır (örn, Linux, BSD, Solaris, Mac OS X, vb.</p></note>

    <p>Unix durumunda, hangi MPM'nin kurulacağı kararı şu 2 soruya verilecek
      yanıta bağlıdır:</p>
    <p>1. Sistem evreleri destekliyor mu?</p>
    <p>2. Sistem evreleri "thread-safe polling" anlamında destekliyor mu
      (özellikle kqueue ve epoll işlevlerini)?</p>

    <p>Her iki soruya da verilen yanıt 'evet' ise, öntanımlı MPM'niz
      <module>event</module> modülüdür.</p>

    <p>Birincinin yanıtı 'evet' ikincinin 'hayır' ise öntanımlı MPM'niz
      <module>worker</module> modülüdür.</p>

    <p>Yanıtların her ikisi de 'hayır' ise öntanımlı MPM'niz
      <module>prefork</module> modülüdür.</p>

    <p>Uygulamada, günümüzdeki işletim sistemlerinin tümü bu iki özelliği
      desteklediğinden öntanımlı MPM'niz hemen hemen daima
      <module>event</module> modülü olacaktır.</p>

</section>

<section id="static"><title>Bir MPM'i bir duruk modül olarak derlemek</title>

    <p>MPM'ler tüm platformlarda duruk (static) modüller olarak derlenebilir.
      Derleme sırasında tek bir modül seçilir ve sunucu ile ilintilenir. MPM
      değiştirilmek istenirse sunucunun yeniden derlenmesi gerekir.</p>

    <p>Öntanımlı MPM seçimin değiştirmek için <program>configure</program>
      betiğinin <code>--with-mpm=<em>AD</em></code> seçeneği kullanılır.
      Buradaki <em>AD</em> istenen MPM'in ismidir.</p>

    <p>Sunucu bir kere derlendi mi, hangi MPM'in seçilmiş olduğunu
      <code>./httpd -l</code> komutuyla öğrenebilirsiniz. Bu komut, içerilen
      MPM dahil, sunucu içinde derlenmiş bütüm modülleri listeler.</p>

</section>

<section id="dynamic"><title>Bir MPM'i bir DSO modülü olarak derlemek</title>

    <p>Unix ve benzeri platformlarda, MPM'ler DSO modülleri olarak derlenebilir
      ve diğer DSO modülleri gibi sunucuya devingen olarak yüklenebilir. DSO
      modülü olarak derlenen MPM'ler, sunucunun yeniden derlenmesini
      gerektirmeden <directive module="mod_so">LoadModule</directive> yönergesi
      güncellenerek değiştirilebilir.</p>

    <highlight language="config">
    LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
    </highlight>

    <p><directive module="mod_so">LoadModule</directive> yönergesini birden
      fazla MPM için kullanmak sunucunun başlatılması sırasında aşağıdaki
      hatanın oluşmasına sebep olur.</p>

    <example>AH00534: httpd: Configuration error: More than one MPM
    loaded.</example>

    <p>Bu özellik <program>configure</program> betiğinin
      <code>--enable-mpms-shared</code> seçeneği ile etkinleştirilebilir.
      <code><em>all</em></code> değeri belirtilerek platform için
      kullanılabilen tüm modüller kurulur. İstenirse, değer olarak bir MPM
      listesi de belirtilebilir.</p>

    <p>Özdevinimli olarak seçilerek veya  <program>configure</program> betiğine
      <code>--with-mpm</code> seçeneğiyle belirtilerek seçilen öntanımlı MPM
      üretilen sunucu yapılandırma dosyasıyla yüklenir. Farklı bir MPM seçmek
      için MPM'i <directive module="mod_so">LoadModule</directive> yönergesinde
      belirtin.</p>

</section>

</manualpage>
