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
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
diye bir satır içeriyorsa bunu,
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
dosya-ismi olarak mutlak bir dosya yolu
belirtilebileceği gibi
Örnek:
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,
satırı ile ismi belirtilen dosya modules alt dizininden yüklenir.