Apache HTTP Sunucusu Sürüm 2.4
Mevcut Diller: tr
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 Loodule
yönergesi üzerinden yüklemek mümkün olmaktadır.
Bu eklenti mekanizmasını platformunuzda kullanmak için DSO desteğinin olması ve 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
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/apache2.conf'ta etkinleştiriliyor]
$ apache2ctl restart
/dosya/yolu/apache/sbin/apache2ctl 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/apache2ctl 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.
apxs -g [ -S isim=değer ] -n modüladı
apxs -q [ -v ] [ -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 ] [ -p ] 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ı ...
-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.
-q sorgu
httpd
'yi derlemekte kullanılacak değişkenler ve ortam ayarları için bir sorgu gerçekleştirir. When invoked without sorgu
belirtilmeksizin çağrıldığında, bilinen değişkenleri değerleriyle birlikte basar. İsteğe bağlı -v
seçeneği liste çıktısını biçemler.
Modülünüzü yükleyecek httpd
'yi derlemek için kullanılacak ayarları elle belirtmek için kullanılır. Ö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`
-S isim=değer
apxs
ayarlarını değiştirir.
-g
modüladı
(-n
seçeneğine 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 veya apxs
mekanizmaları ile hemen oynamaya başlayabilmeniz için mod_modüladı.c
adında bir modül kaynak dosyası örneği ve bu modülü derleyip kurmayı kolaylaştırmak için bir Makefile
dosyası.
-c
-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 ve mod_isim.so
dosya adı bu isimden elde edilir.
-o dso-dosyası
mod_unknown.so
ismi kullanılır.
-D isim=değer
-I include-dizini
-L lib-dizini
-l kütüphane-adı
-Wc,derleyici-seçenekleri
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
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.
-p
-i
-a
Loodule
satırını Apache'nin apache2.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
Loodule
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
apache2.conf
yapılandırma dosyasını -i
işlemine benzer şekilde -a
ve -A
seçenekleri ile düzenleme işlemini belirtir.
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 Loodule
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 apache2.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 mod_foo.la /dosya/yolu/apache/modules ... chmod 755 /dosya/yolu/apache/modules/mod_foo.so
[`foo' modülü /dosya/yolu/apache/conf/apache2.conf'da etkinleştiriliyor]
$ _
Yapılandıma dosyasına (eğer yoksa) şu satır eklenir:
Loodule 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 mod_foo.la /dosya/yolu/apache/modules ... chmod 755 /dosya/yolu/apache/modules/mod_foo.so
[`foo' modülü /dosya/yolu/apache/conf/apache2.conf'ta etkinleştiriliyor]
apache2ctl restart
/dosya/yolu/apache/sbin/apache2ctl restart: httpd not running, trying to start
chmod 755 /dosya/yolu/apache/modules/mod_foo.so
[`foo' modülü /dosya/yolu/apache/etc/apache2.conf'ta etkinleştiriliyor]
apache2ctl restart
/dosya/yolu/apache/sbin/apache2ctl 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/apache2ctl restart: httpd started
$ _
Mevcut Diller: tr