Apache HTTP Sunucusu Sürüm 2.2
apxs - Apache Eklenti Aracı
apxs
, Apache Hiper Metin Aktarım
Protokolü (HTTP) sunucusu için ek modül derleme ve kurulum aracıdır. Bu
araç sayesinde, bir veya daha fazla kaynak veya nesne
dosyasından bir devingen paylaşımlı nesne (DSO - "Dynamic
Shared Object" kısaltması) derlemek ve bu nesneyi (modülü) Apache
sunucusuna çalışma anında mod_so
modülünün LoadModule
yönergesi üzerinden yüklemek mümkün
olmaktadır.
Bu eklenti mekanizmasını platformunuzda kullanmak için DSO desteğinin
olması ve httpd
programının
mod_so
modülünü içerecek şekilde
derlenmiş olması gerekir. Eğer bunlar mevcut değilse
apxs
aracı durumu size bildirecektir. Bunu
aşağıdaki komutla kendiniz de sınayabilirsiniz:
$ httpd -l
mod_so
modülü gösterilen listede yer
almalıdır. Bu gereksinimler sağlandığı takdirde
apxs
aracı sayesinde DSO mekanizması
üzerinden kendi modüllerinizi kurmak suretiyle Apache sunucunuzun
işlevselliğini kolayca arttırabilirsiniz. Örnek bir uygulama:
$ apxs -i -a -c mod_foo.c
gcc -fpic -DSHARED_MODULE -I/dosya/yolu/apache/include -c mod_foo.c
ld -Bshareable -o mod_foo.so mod_foo.o
cp mod_foo.so /dosya/yolu/apache/modules/mod_foo.so
chmod 755 /dosya/yolu/apache/modules/mod_foo.so
[`foo' modülü /dosya/yolu/apache/etc/httpd.conf'ta etkinleştiriliyor]
$ apachectl restart
/dosya/yolu/apache/sbin/apachectl restart: httpd not running, trying to start
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
/dosya/yolu/apache/sbin/apachectl restart: httpd started
$ _
dosya olarak bir C kaynak dosyası (.c), bir nesne dosyası
(.o) ve hatta bir kütüphane arşivi archive (.a) belirtebilirsiniz.
apxs
aracı bu dosya uzantılarını
tanıdığından C dosyalarını derleme işleminden, arşiv ve nesne
dosyalarını ise doğrudan ilintileme işleminden geçirir. Fakat böyle
önceden derlenmiş nesne dosyalarını kullanırken, devingen paylaşımlı
nesne olarak kullanılmalarını sağlamak üzere konumdan bağımsız kod (PIC)
üretecek şekilde derlenmiş olduklarından emin olmalısınız. Örneğin
GCC'yi bunun için daima -fpic
seçeneği ile
kullanmalısınız. Diğer C derleyiciler için,
apxs
'in nesne dosyalarını derlerken
kullanacağı seçenekleri öğrenmek için o derleyicilerin kılavuz
sayfalarına bakınız.
Apache'deki DSO desteği ile ilgili daha ayrıntılı bilgi edinmek için
mod_so
belgesini okumakla yetinmeyip
src/modules/standard/mod_so.c
kaynak dosyasını da
okuyunuz.
Kullanım
apxs -g
[ -S isim=değer ]
-n modüladı
apxs -q
[ -S isim=değer ]
sorgu ...
apxs -c
[ -S isim=değer ]
[ -o dso-dosyası ]
[ -I include-dizini ]
[ -D isim=değer ]
[ -L lib-dizini ]
[ -l kütüphane-adı ]
[ -Wc,derleyici-seçenekleri ]
[ -Wl,ilintileyici-seçenekleri ]
dosya ...
apxs -i
[ -S isim=değer ]
[ -n modüladı ]
[ -a ]
[ -A ]
dso-dosyası ...
apxs -e
[ -S isim=değer ]
[ -n modüladı ]
[ -a ]
[ -A ]
dso-dosyası ...
Seçenekler
Ortak Seçenekler
-n modüladı
-i
(kurulum) ve-g
(şablon üretimi) seçenekleri için modül ismi belirtmek amacıyla kullanılır. Bir modül ismi belirtmek için bu seçeneği kullanın.-g
seçeneği için bu gereklidir.-i
seçeneği için ise araç, modül ismini kaynağın ismine bakarak veya (son çare olarak) dosya isminden tahmin etmeye çalışarak saptamaya çalışır.
Sorgu Seçenekleri
-q sorgu
apxs
'in belli ayarlar hakkında bilgisine başvurmak için bir sorgu gerçekleştirir.sorgu
olarak şu dizgelerden biri veya birkaçı belirtilebilir:CC
,CFLAGS
,CFLAGS_SHLIB
,INCLUDEDIR
,LD_SHLIB
,LDFLAGS_SHLIB
,LIBEXECDIR
,LIBS_SHLIB
,SBINDIR
,SYSCONFDIR
,TARGET
.Bu seçeneği ayarları öğrenmek için kullanın. Örneğin, Apache'nin C başlık dosyalarının yerini kendi Makefile dosyalarınızın içinde şöyle belirtebilirsiniz:
INC=-I`apxs -q INCLUDEDIR`
Yapılandırma Seçenekleri
-S isim=değer
- Bu seçenek yukarıda açıklanan
apxs
ayarlarını değiştirir.
Şablon Üretme Seçenekleri
-g
- modüladı (
-n
seçeneğihe bakınız) adında bir alt dizin oluşturur ve içine iki dosya yerleştirir: Kendi modülünüzü oluşturabilmeniz için veyaapxs
mekanizmaları ile hemen oynamaya başlayabilmeniz içinmod_modüladı.c
adında bir modül kaynak dosyası örneği ve bu modülü derleyip kurmayı kolaylaştırmak için birMakefile
dosyası.
DSO Derleme Seçenekleri
-c
- Bu seçenek derleme yapılacağını belirtir. Önce belirtilen C kaynak
dosyalarını (.c), nesne dosyalarını (.o) elde etmek için
derler. Sonra bunları kalan nesne dosyaları (.o ve .a) ile
ilintileyerek dso-dosyası adında bir devingen paylaşımlı
nesne oluşturur. Eğer
-o
seçeneği ile modül ismi belirtilmemişse dosyalar arasındaki ilk dosyanın ismine bakarak dosya ismi tahmin edilmeye çalışılır vemod_isim.so
dosya adı bu isimden elde edilir. -o dso-dosyası
- Oluşturulacak devingen paylaşımlı nesnenin ismini belirtmek için
kullanılır. Modül ismi bu seçenekle belirtilmez ve dosya
listesinden bir isim tahmini de yapılamazsa son çare olarak
mod_unknown.so
ismi kullanılır. -D isim=değer
- Bu seçenek doğrudan derleme komutlarına aktarılır. Bu seçeneği derleme işlemine kendi tanımlarınızı belirtmek için kullanın.
-I include-dizini
- Bu seçenek doğrudan derleme komutlarına aktarılır. Bu seçeneği derleme işleminde kullanılmak üzere kendi başlık dosyalarınızı içeren dizinleri arama yollarına eklemek için kullanın.
-L lib-dizini
- Bu seçenek doğrudan derleme komutlarına aktarılır. Bu seçeneği derleme işleminde kullanılmak üzere kendi kütüphane dizinlerinizi arama yollarına eklemek için kullanın.
-l kütüphane-adı
- Bu seçenek doğrudan derleme komutlarına aktarılır. Bu seçeneği derleme işleminde kullanılmak üzere kendi kütüphanelerinizi arama yollarına eklemek için kullanın.
-Wc,derleyici-seçenekleri
- Bu seçenek
libtool --mode=compile
komutuna doğrudan seçenek aktarmak için kullanılır. Bu seçeneği yerel derleyiciniz için gereken ek seçenekleri belirtmek için kullanın. -Wl,ilintileyici-seçenekleri
- Bu seçenek
libtool --mode=link
komutuna doğrudan seçenek aktarmak için kullanılır. Bu seçeneği yerel ilintileyiciniz için gereken ek seçenekleri belirtmek için kullanın.
DSO Kurulum ve Yapılandırma Seçenekleri
-i
- Kurulum işlemini belirtir ve devingen olarak paylaşımlı nesneleri sunucunun modules dizinine kurar.
-a
- İlgili
LoadModule
satırını Apache'ninhttpd.conf
yapılandırma dosyasına özdevinimli olarak ekleyerek veya böyle bir satır varsa bunu etkin kılarak modülü etkinleştirir. -A
LoadModule
yönergesini daha sonra etkinleştirmek üzere satırın başına bir diyez imi (#
) yerleştirmesi dışında-a
seçeneği ile aynıdır.-e
- Modülü kurmaya çalışmaksızın Apache'nin
httpd.conf
yapılandırma dosyasını-i
işlemine benzer şekilde-a
ve-A
seçenekleri ile düzenleme işlemini belirtir.
Örnekler
Apache'nin sunucu işlevselliğini genişletmek amacıyla kullanacağınız
mod_foo.c
adında bir Apache modülünüz olduğunu varsayalım.
Öncelikle, C kaynak dosyasını, Apache sunucusuna çalışma anında
yüklenmeye uygun bir paylaşımlı nesne olarak derlemeniz gerekir. Bunu
sağlamak için şu komutları vermelisiniz:
$ apxs -c mod_foo.c
/dosya/yolu/libtool --mode=compile gcc ... -c mod_foo.c
/dosya/yolu/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
$ _
Bundan sonra, Apache yapılandırmanızın bu paylaşımlı nesneyi yüklemek
için bir LoadModule
yönergesi içermesini
sağlamalısınız. apxs
bu adımı
basitleştirmek amacıyla, paylaşımlı nesneyi sunucunun modules
dizinine özdevinimli olarak kurmak ve httpd.conf
dosyasını
buna uygun olarak güncellemek için bir yol sağlar. Bu sonuç şöyle elde
edilebilir:
$ apxs -i -a mod_foo.la
/dosya/yolu/instdso.sh mod_foo.la /path/to/apache/modules
/dosya/yolu/libtool --mode=install cp mod_foo.la /dosya/yolu/apache/modules
...
chmod 755 /dosya/yolu/apache/modules/mod_foo.so
[`foo' modülü /dosya/yolu/apache/conf/httpd.conf'da etkinleştiriliyor]
$ _
Yapılandıma dosyasına (eğer yoksa) şu satır eklenir:
LoadModule foo_module modules/mod_foo.so
Bunu öntanımlı olarak iptal etmek isterseniz
-A
seçeneğini kullanmanız gerekir:
$ apxs -i -A mod_foo.c
apxs
mekanizmalarını hızlıca denemek
için örnek bir Apache modül şablonunu ve bir Makefile dosyasını şöyle
oluşturabilirsiniz:
$ apxs -g -n foo
Creating [DIR] foo
Creating [FILE] foo/Makefile
Creating [FILE] foo/modules.mk
Creating [FILE] foo/mod_foo.c
Creating [FILE] foo/.deps
$ _
Ardından bu örnek modülü bir paylaşımlı nesne olarak derleyip Apache sunucusuna yükleyebilirsiniz:
$ cd foo
$ make all reload
apxs -c mod_foo.c
/dosya/yolu/libtool --mode=compile gcc ... -c mod_foo.c
/dosya/yolu/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
apxs -i -a -n "foo" mod_foo.la
/dosya/yolu/instdso.sh mod_foo.la /dosya/yolu/apache/modules
/dosya/yolu/libtool --mode=install cp mod_foo.la /dosya/yolu/apache/modules
...
chmod 755 /dosya/yolu/apache/modules/mod_foo.so
[`foo' modülü /dosya/yolu/apache/conf/httpd.conf'ta etkinleştiriliyor]
apachectl restart
/dosya/yolu/apache/sbin/apachectl restart: httpd not running, trying to start
chmod 755 /dosya/yolu/apache/modules/mod_foo.so
[`foo' modülü /dosya/yolu/apache/etc/httpd.conf'ta etkinleştiriliyor]
apachectl restart
/dosya/yolu/apache/sbin/apachectl restart: httpd not running, trying to start
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
/dosya/yolu/apache/sbin/apachectl restart: httpd started
$ _