# Çok Süreçlilik Modülleri (MPM’ler)

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.

# Giriş

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.

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.

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

- Apache httpd geniş çeşitlilikteki işletim sistemlerini daha temiz ve daha verimli bir şekilde destekleyebilmektedir. Özellikle, mpm_winnt 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.
- 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 prefork modülünü kullanabilirken, daha geniş ölçeklenebilirlik gerektiren siteler worker veya event gibi evreli MPM modüllerinden birini seçebilmektedir.

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 modül dizini sayfasında listelenmiştir.

# Öntanımlı MPM’ler

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.

Netware | mpm_netware
OS/2 | mpmt_os2
Unix | Platformun yapabildiklerine bağlı olarak, prefork, worker veya event
Windows | mpm_winnt

# Bir MPM'i bir duruk modül olarak derlemek

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.

Öntanımlı MPM seçimin değiştirmek için configure betiğinin `--with-mpm=AD` seçeneği kullanılır. Buradaki AD istenen MPM'in ismidir.

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

# Bir MPM'i bir DSO modülü olarak derlemek

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 LoadModule yönergesi güncellenerek değiştirilebilir.

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

Özdevinimli olarak seçilerek veya configure betiğine `--with-mpm` 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 LoadModule yönergesinde belirtin.