apxs - справочное руководство, опции, примеры команд


\$1

\$1

ИМЯ

apxs - Инструмент расширения APache

СИНТАКСИС

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 ...

КРАТКОЕ СОДЕРЖАНИЕ

apxs — это инструмент для создания и установки модулей расширения для сервера Apache HyperText Transfer Protocol (HTTP). Это достигается путем создания динамического общего объекта (DSO) из одного или нескольких исходных или объектных файлов, которые затем могут быть загружены на сервер Apache во время выполнения с помощью директивы LoadModule из mod_so.

Таким образом, чтобы использовать этот механизм расширения, ваша платформа должна поддерживать функцию DSO, а ваш двоичный файл Apache httpd должен быть собран с модулем mod_so. Инструмент apxs автоматически жалуется, если это не так. Вы можете проверить это самостоятельно, запустив вручную команду


      $ httpd -l
    

Модуль mod_so должен быть частью отображаемого списка. Если эти требования соблюдены, вы можете легко расширить функциональность своего сервера Apache, установив собственные модули с механизмом DSO с помощью этого инструмента apxs:


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

Аргументы files могут быть любым исходным файлом C (.c), объектным файлом (.o) или даже библиотечным архивом (.a). Инструмент apxs автоматически распознает эти расширения и автоматически использует исходные файлы C для компиляции, а объектные и архивные файлы используются только на этапе компоновки. Но при использовании таких предварительно скомпилированных объектов убедитесь, что они скомпилированы для позиционно-независимого кода (PIC), чтобы их можно было использовать для динамически загружаемого общего объекта. Например, с GCC вам всегда нужно использовать -fpic. Для других компиляторов C обратитесь к его справочной странице или просмотрите флаги, которые apxs использует для компиляции объектных файлов.

Для получения более подробной информации о поддержке DSO в Apache прочитайте документацию mod_so или, возможно, даже прочитайте исходный файл src/modules/standard/mod_so.c.

ПАРАМЕТРЫ

Общие параметры

-n modname

Это явно задает имя модуля для параметров -i (установка) и -g (создание шаблона). Используйте это, чтобы явно указать имя модуля. Для параметра -g это обязательно, для параметра -i инструмент apxs пытается определить имя из источника или (в качестве запасного варианта) по крайней мере, догадываясь об этом из имени файла.

Параметры запроса

-q

Выполняет запрос переменных и параметров среды, используемых для сборки httpd. При вызове без параметров query он печатает все известные переменные и их значения. Необязательный параметр -v форматирует вывод списка. .PP Используйте это, чтобы вручную определить параметры, используемые для создания httpd, который будет загружать ваш модуль. Например, используйте INC=-I`apxs -q INCLUDEDIR` .PP внутри ваших собственных файлов Makefile, если вам нужен ручной доступ к файлам заголовков Apache C.

Параметры конфигурации

-S name=value

Эта опция изменяет настройки apxs, описанные выше.

Параметры генерации шаблона

-g

При этом создается подкаталог name (см. параметр -n) и два файла: Образец исходного файла модуля с именем mod_name.c, который можно использовать как шаблон для создания собственных модулей или как быстрый старт для экспериментов с механизмом apxs. И соответствующий Makefile для еще более простой сборки и установки этого модуля.

Параметры компиляции DSO

-c

Это указывает на операцию компиляции. Сначала он компилирует исходные файлы C (.c) из файлов в соответствующие объектные файлы (.o), а затем создает динамически общий объект в dsofile, связывая эти объектные файлы и остальные объектные файлы (.o и .a) из файлов. Если параметр -o не указан, выходной файл угадывается по первому имени файла в files, поэтому по умолчанию обычно используется mod_name.so.

-o dsofile

Явно указывает имя файла созданного динамически общего объекта. Если не указано и имя не может быть угадано из списка файлов, используется резервное имя mod_unknown.so.

-D name=value

Эта опция напрямую передается командам компиляции. Используйте это, чтобы добавить свои собственные определения в процесс сборки.

-I incdir

Эта опция напрямую передается командам компиляции. Используйте это, чтобы добавить свои собственные включаемые каталоги для поиска в процессе сборки.

-L libdir

Этот параметр напрямую передается команде компоновщика. Используйте это, чтобы добавить свои собственные каталоги библиотек для поиска в процессе сборки.

-l libname

Этот параметр напрямую передается команде компоновщика. Используйте это, чтобы добавить свои собственные библиотеки для поиска в процессе сборки.

-Wc,compiler-flags

Этот параметр передает флаги компилятора в качестве дополнительных флагов команде libtool --mode=compile. Используйте это, чтобы добавить локальные специфичные для компилятора параметры.

-Wl,linker-flags

Эта опция передает linker-flags в качестве дополнительных флагов команде libtool --mode=link. Используйте это, чтобы добавить параметры, специфичные для локального компоновщика.

-p

Этот параметр заставляет apxs связываться с библиотеками apr/apr-util. Это полезно при компиляции вспомогательных программ, использующих библиотеки apr/apr-util.

Варианты установки и настройки DSO

-i

Это указывает на операцию установки и устанавливает один или несколько динамически совместно используемых объектов в каталог modules сервера.

-a

Это активирует модуль, автоматически добавляя соответствующую строку LoadModule в файл конфигурации Apache httpd.conf или активируя его, если он уже существует.

-A

То же, что и опция -a, но созданная директива LoadModule имеет префикс решётки (#), т. е. модуль просто подготовлен для последующего использования активация, но изначально отключена.

-e

Это указывает на операцию редактирования, которую можно использовать с параметрами -a и -A аналогично операции -i для редактирования файла Apache. >httpd.conf, не пытаясь установить модуль.

ПРИМЕРЫ

Предположим, у вас есть доступный модуль Apache с именем mod_foo.c, который должен расширять функциональные возможности сервера Apache. Для этого вам сначала нужно скомпилировать исходный код C в общий объект, подходящий для загрузки на сервер Apache во время выполнения с помощью следующей команды:


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

Затем вам нужно обновить конфигурацию Apache, убедившись, что директива LoadModule присутствует для загрузки этого общего объекта. Чтобы упростить этот шаг, apxs предоставляет автоматический способ установки общего объекта в его каталог «modules» и соответствующего обновления файла httpd.conf. Этого можно достичь, запустив:


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

Таким образом, строка с именем


      LoadModule foo_module modules/mod_foo.so
    

добавляется в файл конфигурации, если его еще нет. Если вы хотите отключить это по умолчанию, используйте параметр -A, т.е.


      $ apxs -i -A mod_foo.c
    

Для быстрого тестирования механизма apxs вы можете создать образец шаблона модуля Apache и соответствующий Makefile с помощью:


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

Затем вы можете сразу же скомпилировать этот образец модуля в общий объект и загрузить его на сервер 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
      $ _