From 5dff2d61cc1c27747ee398e04d8e02843aabb1f8 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Tue, 7 May 2024 04:04:06 +0200 Subject: Adding upstream version 2.4.38. Signed-off-by: Daniel Baumann --- docs/manual/dso.html.tr.utf8 | 329 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 329 insertions(+) create mode 100644 docs/manual/dso.html.tr.utf8 (limited to 'docs/manual/dso.html.tr.utf8') diff --git a/docs/manual/dso.html.tr.utf8 b/docs/manual/dso.html.tr.utf8 new file mode 100644 index 0000000..096be58 --- /dev/null +++ b/docs/manual/dso.html.tr.utf8 @@ -0,0 +1,329 @@ + + + + + +Devingen Paylaşımlı Nesne Desteği - Apache HTTP Sunucusu Sürüm 2.4 + + + + + + + +
<-
+

Devingen Paylaşımlı Nesne Desteği

+
+

Mevcut Diller:  en  | + fr  | + ja  | + ko  | + tr 

+
+ +

Apache HTTP Sunucusu modüler bir program olup, yönetici sadece bir + grup modül seçerek sunucuya işlevsellik ekleyebilir. Modüller, Devingen + Paylaşımlı Nesneler (DSO - Dynamic Shared Object) halinde + httpd programından ayrı olarak derlenir. DSO modülleri + sunucunun derlenmesi sırasında derlenebileceği gibi ayrı olarak derlenip + daha sonra Apache Eklenti Aracı (Apache Extension Tool) + apxs programı kullanılarak da sunucuya eklenebilir.

+ +

Bu belgede DSO modüllerinin kullanımının yanında teorisine de + değinilecektir.

+
+ +
top
+
+

Gerçeklenim

+ + + +

Apache httpd modüllerini yüklemek için DSO desteği, Apache httpd + çekirdeğine durağan olarak ilintilenerek derlenmiş olan + mod_so adında bir modül tarafından sağlanır. + core modülünden başka, bir DSO modülü olamayan tek modül + mod_so modülüdür. Apache ile dağıtılan hemen hemen tüm + diğer Apache modülleri bir DSO modülüne yerleştirilebilir. Derlenmiş + modüller mod_filanca.so biçeminde birer DSO ismi alırlar ve + her biri istenirse httpd.conf dosyasında + mod_so modülünün LoadModule yönergesiyle belirtilerek sunucu başlatılırken + veya yeniden başlatılırken sunucuya yüklenebilir.

+ +

Kurulum belgesinde açıklandığı gibi, her DSO + modülü configure programının + --enable-mods-static seçeneği ile devredışı bırakılabilir.

+ +

Apache httpd modülleri için (özellikle üçüncü parti modüller için) DSO + dosyası üretimini kolaylaştırmak amacıyla apxs + (APache eXtenSion) adında yeni bir destek programı + kullanılmaktadır. Bu program Apache httpd modüllerini Apache httpd kaynak + ağacından ayrı olarak derlemek için kullanılabilir. Fikir basittir: Apache + HTTP Sunucusu derlenirken DSO dosyalarını derlemek için platforma bağımlı + derleyici ve ilintileyici seçenekleri apxs + programının içine konur ve make install ile kurulum sırasında + Apache httpd C başlık dosyaları da kurulur. Böylece + kullanıcı Apache httpd dağıtımının kaynak ağacına ihtiyaç duymadan ve + platforma bağımlı derleyici ve ilintileyici seçeneklerini bilmek zorunda + kalmadan istediği Apache httpd modülünü apxs + programını kullanarak derleyebilir.

+
top
+
+

Kullanım Özeti

+ +

Apache HTTP Sunucusu 2.x’in DSO özelliklerine bir giriş olarak burada + kısaca bir bilgi vermekle yetinilecektir:

+ +
    +
  1. Kaynak dosyası mod_filanca.c dosyasında dağıtılan bir + özgün Apache htpd modülünü mod_filanca.so isminde + bir DSO modülü olarak derlemek ve kurmak için şöyle yapılır:

    + +

    + $ ./configure --prefix=/kurulum/yeri --enable-filanca
    + $ make install +

    +
  2. + +
  3. Apache HTTP Sunucusunu tüm modüller etkin olarak + derleyebilirsiniz. Fakat sunucunun başlatılması sırasında sadece temel + modüller yüklenir. Daha sonra httpd.conf içindeki + LoadModule yönergelerini etkin + veya etkisiz hale getirerek yüklenecek modülleri + değiştirebilirsiniz.

    + +

    +$ ./configure --enable-mods-shared=all
    +$ make install +

    +
  4. + +
  5. Bazı modüller sadece geliştiriciler içindir ve bunlar tüm + modüllerin derlenmesini (all) seçseniz bile derlenmeyecektir. + Geliştirici modülleri dehil tüm modülleri derlemek isterseniz + reallyall kullanınız. Ek olarak, derlenmiş modüller için + kullanılan LoadModule + yönergelerinin tamamını --enable-load-all-modules derleme + seçeneği ile etkin kılabilirsiniz.

    + +

    +$ ./configure --enable-mods-shared=reallyall --enable-load-all-modules
    +$ make install +

    +
  6. + +
  7. Kaynak dosyası mod_filanca.c dosyasında dağıtılan bir + üçüncü parti Apache httpd modülü mod_filanca.so + isminde bir DSO modülü olarak Apache httpd kaynak ağacının dışında + apxs kullanarak derlemek ve kurmak için şöyle + yapılır:

    + +

    +$ cd /bir/kurulum/yeri
    +$ apxs -c mod_filanca.c
    +$ apxs -aci filanca mod_filanca.la +

    +
  8. +
+ +

Tüm durumlarda derlenen paylaşımlı modülü Apache httpd’nin etkin + kılabilmesi için httpd.conf dosyasında o modül için bir + LoadModule yönergesi + bulunmalıdır.

+ +

Ayrıntılı bilgi için apxs belgelerine + bakınız.

+
top
+
+

Artalan Bilgisi

+ +

Günümüzün Unix türevlerinde var olan bir mekanizma sayesinde + çalıştırılabilir bir programın adres uzayına çalışma anında yüklenmek + veya ilintilenmek üzere Devingen Paylaşımlı Nesneler (DSO - + Dynamic Shared Object) adı verilen, özel bir biçem kullanarak kodlanmış + program parçaları oluşturulabilir.

+ +

Bu yükleme normalde iki yolla yapılabilir: Ya çalıştırılabilir + programın başlatılması sırasında yüklenen ld.so adlı bir + sistem programınının devingen olarak yüklenmesi ile ya da + çalıştırılabilir programın içinden Unix yükleyicisine programsal sistem + arayüzü sağlayan dlopen()/dlsym() sistem çağrılarının elle + yapılması suretiyle.

+ +

İlk yöntemde kullanılan DSO’lara genelde paylaşımlı + kütüphaneler veya DSO kütüphaneleri adı verilir ve + bunların dosyaları libfilanca.so veya + libfilanca.so.1.2 biçiminde isimlendirilir. Belli bir + sistem dizininde (normalde /usr/lib) bulunurlar ve derleme + sırasında ilintileyici komutuna -lfilanca şeklinde + belirtilerek çalıştırılabilir programla ilintilenirler. Doğrudan + çalıştırılabilir koda eklenen bu kodlar Unix yükleyicisinin programın + başlatılması sırasında kütüphaneyi /usr/lib altında + libfilanca.so adıyla bulabilmesini sağlar. Kütüphanelerin + aranacağı yerler ya -R gibi bir ilintileyici seçeneği ile + koda eklenir ya da arama yolları LD_LIBRARY_PATH ortam + değişkeni aracılığıyla yapılandırılır. Böylece çalıştırılabilir + programda henüz çözümlenmemiş simgeler DSO içinde bulunarak + çözümlenebilir.

+ +

Çalıştırılabilir program içindeki simgelere normalde DSO içinden + atıfta bulunulmaz (genel kod kütüphanesinin başka programlarca da + kullanılması nedeniyle). Bu bakımdan DSO tarafında böyle bir çözümleme + yapılmaz. Çalıştırılabilir program da DSO’daki simgeleri kendisi + çözümlemeye uğraşmaz, bu işlemlerden tamamen Unix yükleyicisi + (ld.so) sorumludur. (Aslında, ld.so’yu + çağıracak kod, her çalıştırılabilir programın içine ilintilenmiş + (durağan değil) başlatma kodunun bir parçasıdır.) Programlar tarafından + ortaklaşa kullanılan kütüphanelerin devingen olarak yüklenmesinin sebebi + basittir: Kütüphane kodu libc.so gibi bir sistem + kütüphanesine bir kere kaydedilip disk alanından yer kazanılmış + olur.

+ +

İkinci yöntemde kullanılan DSO’lara yine paylaşımlı + kütüphaneler veya DSO kütüphaneleri adı verilir fakat + bunların dosyaları geçerli kabule göre filanca.so gibi + isimlendirilse de genelde keyfi olarak seçilen bir dosya uzantısı + kullanılarak isimlendirilirler. Bu dosyalar genellikle programa özel bir + dizinde dururlar ve bu dosyaları kullanacak olan çalıştırılabilir + programla aralarında özdevimli olarak bağ kurulmamıştır. Bunun yerine, + çalıştırılabilir program DSO’yu çalışma anında dlopen() + sayesinde kendi adres uzayına ekler. Çalıştırılabilir program için + DSO’daki simgeler bu sırada çözümlenmez. Özdevimli olarak devreye + giren Unix yükleyicisi, (varsa) artakalan simgeleri, çalıştırılabilir + ihraç edilen simge kümelerini (ve özellikle her yerde hazır ve nazır + libc.so içindeki tüm simgeleri) kullanarak çözümler. Bu + yolla DSO, çalıştırılabilir programın simge kümesi bilgilerini sanki + kendisine baştan durağan olarak ilintilenmiş gibi ulaşabilir.

+ +

Son olarak, DSO’nun programlama arayüzünün getirilerinden yararlanmak + amacıyla çalıştırılabilir program, daha sonra dağıtım tabloları vb. + yerlerde kullanmak üzere dlsym() üzerinden DSO’daki belli + simgeleri çözümlemek zorundadır. Başka bir deyişle: Çalıştırılabilir + program ihtiyaç duyduğu her simgeyi kullanmak için kendisi çözümleme + yapmak zorundadır. Böyle bir mekanizmanın getirisi, programın isteğe + bağlı parçalarının gerekli olana kadar yüklenmemesidir (böylece daha az + bellek alanı kullanılır). Gerektiği zaman programın işlevselliğini + arttırmak amacıyla bu parçalar devingen olarak programa + yüklenebilir.

+ +

DSO mekanizmasının bu basit gibi görünen işleyişinde zorluk içeren bir + adım şudur (başkaları da olabilir): Bir programın işlevselliğini + genişletmek için DSO kullanılırken (ikinci yöntem) çalıştırılabilir + programdan DSO için simgelerin çözümlenmesi. Zorluğun sebebi, + "tersine çözümleme" yapılmasıdır; çalıştırılabilir programın simge + kümesindeki DSO simgeleri kütüphane tasarımına aykırı bir şekilde + çözümlenir ve bu uygulama tüm platformlarda hazır olarak + desteklenmediği gibi standartlaşmış da değildir. Geçer uygulamada + çalıştırılabilir programın evrensel simgeleri çoğunlukla yeniden dışa + verilmez ve bu bakımdan bir DSO içinde kullanılmaları uygun değildir. + Esas sorun, çalıştırılabilir bir programın işlevselliğini çalışma + anında genişletmek için DSO kullanımı sırasında ilintileyicinin tüm + evrensel simgeleri dışa vermesini zorlamanın bir yolunu bulmaktır.

+ +

Paylaşımlı kütüphane yaklaşımı bu bakımdan türünün tek örneğidir, + çünkü DSO mekanizması özellikle bunun için tasarlanmıştır, dolayısıyla + işletim sisteminin sağladığı hemen hemen tüm kütüphaneler için + kullanılabilir.

+
top
+
+

Getiriler ve Götürüler

+ +

Yukarıda bahsedilen DSO’ya dayalı özelliklerin getirileri + şunlardır:

+ +
    +
  • Sunucu paketi çalışma anında daha esnektir çünkü, sunucuyu + oluşturan parçalar derleme sırasında configure + seçenekleriyle birleştirilmek yerine httpd.conf içinde + LoadModule yönergeleri + sayesinde çalışma anında birleştirilebilmektedir. Bu yolla, örneğin + tek bir Apache kurulumuyla birbirinden farklı yapılandırmalara sahip + çok sayıda sunucu çalıştırmak mümkündür. (standart veya SSL sürümü; + basitleştirilmiş veya devingen sürümü [mod_perl, PHP3], vs.)
  • + +
  • Sunucu paketi kurulumdan sonra bile üçüncü parti modüllerle kolayca + genişletilebilir. Bu özellikle, bir Apache temel paketinin yanında + PHP, mod_perl, mod_security gibi ek paketler oluşturan paket + dağıtıcılarına büyük yarar sağlar.
  • + +
  • Yeni Apache httpd modülleri için daha kolay prototip + geliştirilebilir: Modül kaynak kodunu DSO/apxs çifti + sayesinde Apache httpd kaynak ağacının dışında derleyip modülün yeni + bir sürümünü bir apxs -i komutunun ardından + apachectl restart yaparak çalışan bir Apache HTTP + Sunucusunda denemek daha kolay hale getirilmiştir.
  • +
+ +

DSO kullanımının götürüleri ise şunlardır:

+ +
    +
  • İlk yüklemede %20 yavaşlama: Unix yükleyicisi simgeleri çözümlemek + zorunda olduğundan sunucu ilk başlatılırken yaklaşık %20 daha yavaş + faaliyete geçer.
  • + +
  • Çalışma sırasında % 5 yavaşlama: Konumdan bağımsız kodun (PIC - + Position Independent Code) göreli adresleme için karmaşık oyunlara + girmesi ve bunun mutlak adresleme kadar hızlı olmaması nedeniyle + sunucu bazı platformlarda çalışma anında yaklaşık %5 daha yavaş + çalışabilir.
  • + +
  • DSO'nun tüm modüller için uygun olmaması: DSO modülleri bazı + platformlarda diğer DSO temelli kütüphanelerle ilintilenemediğinden + (ld -lfilanca) DSO mekanizmasını tüm modül türleri için + kullanamazsınız (örneğin a.out temelli platformlar bu işlevselliği + ELF temelli platformlar kadar iyi sağlamaz). Başka bir deyişle, DSO + dosyaları olarak derlenmiş modüllerin kullanabileceği simgeler ya + Apache httpd temel kodunda vardır ya Apache httpd temel kodunun + kullandığı C kütüphanesinde (libc) ve diğer durağan ve + devingen kütüphanelerde vardır ya da konumdan bağımsız kodu içeren + durağan kütüphane arşivlerinde (libfilanca.a) + vardır. Diğer modülleri kullanmak için tek şansınız ya Apache httpd + çekirdeğinin modüle bir atıf içermesini sağlamak ya da modül kodunu + dlopen() vasıtasıyla yüklemektir.
  • +
+ +
+
+

Mevcut Diller:  en  | + fr  | + ja  | + ko  | + tr 

+
top

Yorum

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.
+
+ \ No newline at end of file -- cgit v1.2.3