apxs - manual referensi, opsi, contoh perintah


\$1

\$1

NAMA

apxs - Alat ekstensi APache

RINGKASAN

apxs -g [ -S name=value ] -n modname

apxs -q [ -v ] [ -S name=value ] query ...

apxs -c [ -S name=value ] [ -o dsofile ] [ -I incdir ] [ -D name=value ] [ -L libdir ] [ -l libname ] [ -Wc,compiler-flags ] [ -Wl,linker-flags ] files ...

apxs -i [ -S name=value ] [ -n modname ] [ -a ] [ -A ] dso-file ...

apxs -e [ -S name=value ] [ -n modname ] [ -a ] [ -A ] dso-file ...

RINGKASAN

apxs adalah alat untuk membuat dan memasang modul ekstensi untuk server Apache HyperText Transfer Protocol (HTTP). Hal ini dicapai dengan membuat objek bersama dinamis (DSO) dari satu atau beberapa file sumber atau objek yang kemudian dapat dimuat ke server Apache saat waktu proses melalui direktif LoadModule dari mod_so.

Jadi untuk menggunakan mekanisme ekstensi ini, platform Anda harus mendukung fitur DSO dan biner httpd Apache Anda harus dibangun dengan modul mod_so. Alat apxs secara otomatis mengajukan keluhan jika tidak demikian. Anda dapat memeriksanya sendiri dengan menjalankan perintah secara manual


      $ httpd -l
    

Modul mod_so harus menjadi bagian dari daftar yang ditampilkan. Jika persyaratan ini terpenuhi, Anda dapat dengan mudah memperluas fungsionalitas server Apache Anda dengan memasang modul Anda sendiri dengan mekanisme DSO dengan bantuan alat apxs ini:


      $ apxs -i -a -c mod_foo.c
      gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c
      ld -Bshareable -o mod_foo.so mod_foo.o
      cp mod_foo.so /path/to/apache/modules/mod_foo.so
      chmod 755 /path/to/apache/modules/mod_foo.so
      [activating module `foo' in /path/to/apache/etc/httpd.conf]
      $ apachectl restart
      /path/to/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
      /path/to/apache/sbin/apachectl restart: httpd started
      $ _
    

Argumen file dapat berupa file sumber C (.c), file objek (.o), atau bahkan arsip perpustakaan (.a). Alat apxs secara otomatis mengenali ekstensi ini dan secara otomatis menggunakan file sumber C untuk kompilasi sementara hanya menggunakan file objek dan arsip untuk fase penautan. Tetapi ketika menggunakan objek yang telah dikompilasi sebelumnya, pastikan objek tersebut dikompilasi untuk kode independen posisi (PIC) agar dapat menggunakannya untuk objek bersama yang dimuat secara dinamis. Misalnya dengan GCC, Anda hanya perlu menggunakan -fpic. Untuk kompiler C lainnya, lihat halaman manualnya atau perhatikan flag apxs yang digunakan untuk mengompilasi file objek.

Untuk detail lebih lanjut tentang dukungan DSO di Apache, baca dokumentasi mod_so atau bahkan mungkin baca file sumber src/modules/standard/mod_so.c.

PILIHAN

Opsi Umum

-n modname

Ini secara eksplisit menetapkan nama modul untuk opsi -i (instal) dan -g (pembuatan template). Gunakan ini untuk menentukan nama modul secara eksplisit. Untuk opsi -g ini diperlukan, untuk opsi -i alat apxs mencoba menentukan nama dari sumber atau (sebagai cadangan) setidaknya dengan menebaknya dari nama file.

Opsi Kueri

-q

Melakukan kueri untuk variabel dan setelan lingkungan yang digunakan untuk membangun httpd. Ketika dipanggil tanpa parameter query, ia mencetak semua variabel yang diketahui dan nilainya. Parameter opsional -v memformat keluaran daftar. .PP Gunakan ini untuk secara manual menentukan setelan yang digunakan untuk membangun httpd yang akan memuat modul Anda. Misalnya gunakan INC=-I`apxs -q INCLUDEIR` .PP di dalam Makefile Anda sendiri jika Anda memerlukan akses manual ke file header C Apache.

Opsi Konfigurasi

-S name=value

Opsi ini mengubah pengaturan apxs yang dijelaskan di atas.

Opsi Pembuatan Template

-g

Ini menghasilkan nama subdirektori (lihat opsi -n) dan ada dua file: Contoh file sumber modul bernama mod_nama.c yang dapat digunakan sebagai template untuk membuat modul Anda sendiri atau sebagai awal cepat untuk bermain dengan mekanisme apxs. Dan Makefile yang sesuai untuk pembuatan dan pemasangan modul ini yang lebih mudah.

Opsi Kompilasi DSO

-c

Ini menunjukkan operasi kompilasi. Ini pertama-tama mengkompilasi file sumber C (.c) dari file ke dalam file objek yang sesuai (.o) dan kemudian membangun objek yang dibagikan secara dinamis di dsofile dengan menautkan file objek ini ditambah file objek yang tersisa (.o dan .a) dari file. Jika tidak ada opsi -o yang ditentukan, file keluaran ditebak dari nama file pertama di files dan oleh karena itu biasanya default ke mod_name.so.

-o dsofile

Secara eksplisit menentukan nama file dari objek yang dibuat secara dinamis. Jika tidak ditentukan dan namanya tidak dapat ditebak dari daftar file, nama cadangan mod_unknown.so akan digunakan.

-D name=value

Opsi ini langsung diteruskan ke perintah kompilasi. Gunakan ini untuk menambahkan definisi Anda sendiri ke proses build.

-I incdir

Opsi ini langsung diteruskan ke perintah kompilasi. Gunakan ini untuk menambahkan direktori penyertaan Anda sendiri untuk mencari ke proses pembuatan.

-L libdir

Opsi ini langsung diteruskan ke perintah linker. Gunakan ini untuk menambahkan direktori perpustakaan Anda sendiri untuk mencari proses pembangunan.

-l libname

Opsi ini langsung diteruskan ke perintah linker. Gunakan ini untuk menambahkan perpustakaan Anda sendiri untuk mencari ke proses pembangunan.

-Wc,compiler-flags

Opsi ini meneruskan compiler-flags sebagai flag tambahan ke perintah libtool --mode=compile. Gunakan ini untuk menambahkan opsi khusus kompiler lokal.

-Wl,linker-flags

Opsi ini meneruskan linker-flags sebagai flag tambahan ke perintah libtool --mode=link. Gunakan ini untuk menambahkan opsi khusus tautan lokal.

-p

Opsi ini menyebabkan apxs terhubung dengan pustaka apr/apr-util. Ini berguna saat mengkompilasi program pembantu yang menggunakan pustaka apr/apr-util.

Opsi Instalasi dan Konfigurasi DSO

-i

Ini menunjukkan operasi penginstalan dan menginstal satu atau beberapa objek yang dibagikan secara dinamis ke dalam direktori modules server.

-a

Ini mengaktifkan modul dengan secara otomatis menambahkan baris LoadModule yang sesuai ke file konfigurasi httpd.conf Apache, atau dengan mengaktifkannya jika sudah ada.

-A

Sama seperti opsi -a tetapi direktif LoadModule yang dibuat diawali dengan tanda hash (#), yaitu, modul hanya disiapkan untuk nanti aktivasi tetapi awalnya dinonaktifkan.

-e

Ini menunjukkan operasi pengeditan, yang dapat digunakan dengan opsi -a dan -A serupa dengan operasi -i untuk mengedit Apache >httpd.conf file konfigurasi tanpa mencoba memasang modul.

CONTOH

Asumsikan Anda memiliki modul Apache bernama mod_foo.c yang tersedia yang akan memperluas fungsionalitas server Apache. Untuk melakukannya, pertama-tama Anda harus mengkompilasi sumber C menjadi objek bersama yang cocok untuk dimuat ke server Apache saat runtime melalui perintah berikut:


      $ apxs -c mod_foo.c
      /path/to/libtool --mode=compile gcc ... -c mod_foo.c
      /path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
      $ _
    

Kemudian Anda harus memperbarui konfigurasi Apache dengan memastikan direktif LoadModule hadir untuk memuat objek bersama ini. Untuk menyederhanakan langkah ini, apxs menyediakan cara otomatis untuk memasang objek bersama di direktori "modules" dan memperbarui file httpd.conf sesuai dengan itu. Ini dapat dicapai dengan menjalankan:


      $ apxs -i -a mod_foo.la
      /path/to/instdso.sh mod_foo.la /path/to/apache/modules
      /path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules
      ...
      chmod 755 /path/to/apache/modules/mod_foo.so
      [activating module `foo' in /path/to/apache/conf/httpd.conf]
      $ _
    

Dengan cara ini sebuah baris bernama


      LoadModule foo_module modules/mod_foo.so
    

ditambahkan ke file konfigurasi jika masih belum ada. Jika Anda ingin menonaktifkan ini secara default, gunakan opsi -A, i.e.


      $ apxs -i -A mod_foo.c
    

Untuk pengujian cepat mekanisme apxs, Anda dapat membuat contoh template modul Apache plus Makefile yang sesuai melalui:


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

Kemudian Anda dapat langsung mengkompilasi modul contoh ini ke objek bersama dan memuatnya ke server Apache:


      $ cd foo
      $ make all reload
      apxs -c mod_foo.c
      /path/to/libtool --mode=compile gcc ... -c mod_foo.c
      /path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
      apxs -i -a -n "foo" mod_foo.la
      /path/to/instdso.sh mod_foo.la /path/to/apache/modules
      /path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules
      ...
      chmod 755 /path/to/apache/modules/mod_foo.so
      [activating module `foo' in /path/to/apache/conf/httpd.conf]
      apachectl restart
      /path/to/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
      /path/to/apache/sbin/apachectl restart: httpd started
      $ _