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