<-
Apache > HTTP Sunucusu > Belgeleme > 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.

Support Apache!

Ayr?ca bak?n?z:

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 apache2.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. 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 apache2.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

  3. 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

  4. 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

Tüm durumlarda derlenen payla??ml? modülü Apache httpd’nin etkin k?labilmesi i?in apache2.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:

DSO kullan?m?n?n g?türüleri ise ?unlard?r:

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.
白小姐透特期期