Apache HTTP Sunucusu Sürüm 2.5
Açıklama: | Modüllerin ve çalıştırılabilir kodun sunucunun başlatılması veya yeniden başlatılması sırasında yüklenmesini sağlar. |
---|---|
Durum: | Eklenti |
Modül Betimleyici: | so_module |
Kaynak Dosyası: | mod_so.c |
Uyumluluk: | Windows için bu bir temel modüldür (sunucu bunu daima içerir). |
Seçilen işletim sistemleri üzerinde bu modül Apache’nin yeniden derlenmesini gerektirmeden modüllerin Devingen Paylaşımlı Nesne (DSO) mekanizması üzerinden kullanılabilmesini sağlar.
Unix’te yüklenen kod genellikle paylaşımlı nesne dosyalarından
(.so
uzantılı dosyalar), Windows’ta ise ya .so
ya da .dll
uzantılı dosyalardan gelir.
Apache 1.3 modülleri Apache 2.0’da doğrudan kullanılamazlar - modül ya devingen olarak yüklenecek hale getirilmeli ya da Apache 2.0’ın içinde derlenmelidir.
Windows için modül isimlendirme biçemi Apache 1.3.15 ve 2.0 sürümlerinde değişmiştir; modüllere artık mod_filanca.so biçeminde isim verilmektedir.
mod_so
modülü ApacheModuleFoo.dll biçeminde
isimlendirilmiş modülleri hala yüklemekteyse de yeni adlandırma uzlaşımı
tercih edilmelidir. Yüklenebilir modülleri 2.0’a dönüştürüyorsanız,
lütfen isimlerini de 2.0 uzlaşımına uygun hale getiriniz.
Apache modül programlama arayüzü Unix ve Windows sürümleri arasında değişiklik göstermez. Unix için kullanılan çoğu modül hiç değişiklik yapmadan ya da çok küçük bir değişiklikle Windows’ta da çalışmaktadır. Çalışmayanlar Unix platformunun sahip olduğu ancak Windows platformunun sahip olmadığı nitelikleri kullanan modüllerdir.
Bir modül Windows’ta çalıştığı zaman, sunucuya iki şekilde
yüklenebilir. Unix’te olduğu gibi, doğrudan sunucunun içinde
derlenebilir. Windows için hazırlanan Apache paketi, Unix için geçerli
olan Configure
betiğini içermediğinden modülün kaynak
dosyası ApacheCore proje dosyasına, sembolleri de
os\win32\modules.c
dosyasına eklenmelidir.
İkinci yol ise modülü bir paylaşımlı kütüphane olarak çalışma anında
LoadModule
yönergesi ile yüklemek
için bir DLL olarak derlemektir. Bu DLL modüller dağıtılabilir ve
sunucuyu yeniden derlemek gerekmeksizin her Windows için Apache
kurulumunda çalışabilir.
Bir modül DLL’i oluşturmak için modülün kaynak dosyasında küçük bir
değişiklik yapmak gerekir: Modül kaydının daha sonra oluşturulacak olan
DLL’den ihraç edilebilmesi gerekir (aşağıya bakınız). Bunu yapmak için
modülün modül kaydı tanımına (Apache başlık dosyalarında tanımlanmış
olan) AP_MODULE_DECLARE_DATA
eklenmelidir. Örneğin,
modülünüz
module foo_module;
diye bir satır içeriyorsa bunu,
module AP_MODULE_DECLARE_DATA foo_module;
olarak değiştirmelisiniz. Bunun yalnız Windows üzerinde etkili olduğunu
ve Unix için modül kodunda bir değişiklik gerekmediğini unutmayınız.
Ayrıca, .DEF
dosyaları hakkında bilgi sahibi iseniz modül
kodunda değişiklik yapmak yerine modül kaydını bu yöntemle de ihraç
edebilirsiniz.
Artık modülü içeren bir DLL oluşturmaya hazırsınız. Bunu, libhttpd.dll
paylaşımlı kütüphanesi derlenirken oluşturulan libhttpd.lib ihraç
kütüphanesi ile ilintilemeniz gerekecektir. Ayrıca, Apache başlık
dosyalarının doğru konumlandığından emin olmak için derleyici
seçeneklerinde değişiklik yapmanız gerekebilir. Bu kütüphaneyi
sunucunuzun kök dizini altındaki modules
dizininde
bulabilirsiniz. En iyisi derleme ortamının doğru yapılandırıldığından
emin olmak için ya ağaçta mevcut modüllerden birinin .dsp
dosyasını gaspedersiniz ya da kendi .dsp
dosyanızın
ilintileme seçenekleriyle derleyicininkileri karşılaştırırsınız.
Artık modülünüzün DLL sürümünü oluşturmalısınız. DLL’i sunucunuzun kök
dizininin altında bulunan modules
dizinine yerleştirdikten
sonra LoadModule
yönergesi ile sunucunuza
yükleyebilirsiniz.
Açıklama: | Belirtilen nesne dosyasını veya kütüphaneyi sunucu ile ilintiler. |
---|---|
Sözdizimi: | LoadFile dosya-ismi [dosya-ismi] ... |
Bağlam: | sunucu geneli |
Durum: | Eklenti |
Modül: | mod_so |
LoadFile
yönergesi ismi belirtilen kütüphaneleri
veya nesne dosyalarını sunucu başlatılırken veya yeniden başlatılırken
sunucu ile ilintiler. Yönerge, bazı modüllerin çalışması sırasında
gereken ek kodların yüklenmesi için kullanılır.
dosya-ismi
olarak mutlak bir dosya yolu
belirtilebileceği gibi ServerRoot
’a
göreli bir dosya yolu da belirtilebilir.
Örnek:
LoadFile libexec/libxmlparse.so
Açıklama: | Belirtilen nesne dosyasını veya kütüphaneyi sunucu ile ilintiler ve etkin modül listesine ekler. |
---|---|
Sözdizimi: | LoadModule modül dosya-ismi |
Bağlam: | sunucu geneli |
Durum: | Eklenti |
Modül: | mod_so |
LoadModule
yönergesi
dosya-ismi
ile belirtilen nesne dosyasını veya
kütüphaneyi sunucu ile ilintiler ve etkin modül listesine belirtilen
modül
ismiyle ekler. modül
,
modülün kaynak dosyasında module
türündeki tek harici
değişkenin ismi olup modül belgelerinde Modül Betimleyici olarak
geçer. Örneğin,
LoadModule status_module modules/mod_status.so
satırı ile ismi belirtilen dosya ServerRoot
dizini altındaki
modules
alt dizininden yüklenir.