Apache. Документация на русском


Разделы:   1    2    3    4    5    6    7      8      9    10    11    12    13    14    15    16  

Раздел 8. HTTP-сервер Apache и вспомогательные программы

Пункты:   63    64    65      66      67    68    69    70    71    72    73    74    75    76    77    78    79  

 <         > 
  RU            EN  

Пункт 66. Страница руководства: апкс

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

Таким образом, чтобы использовать этот механизм расширения, ваша платформа должна поддерживать функцию DSO, и ваш httpd двоичный файл Apache должен быть собран с 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/apache2.conf]
$ apache2ctl restart
/path/to/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
/path/to/apache/sbin/apache2ctl restart: httpd started
$ _

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

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

Синопсис

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

Параметры

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

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

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

-q
Выполняет запрос переменных и параметров среды, используемых для построения httpd . При вызове без параметров запроса он печатает все известные переменные и их значения. Необязательный -v параметр форматирует вывод списка.

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

INC=-I`apxs -q INCLUDEDIR`

внутри ваших собственных файлов Makefile, если вам нужен ручной доступ к файлам заголовков Apache C.

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

-S name=value
Этот параметр изменяет настройки apxs, описанные выше.

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

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

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

-c
Это указывает на операцию компиляции. Сначала он компилирует исходные файлы C (.c) файлов в соответствующие объектные файлы (.o), а затем создает динамически разделяемый объект в dsofile , связывая эти объектные файлы с остальными объектными файлами (.o и .a) файлов . Если -o параметр не указан, выходной файл угадывается по первому имени файла в файлах и, таким образом, по умолчанию обычно имеет значение . 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
Этот параметр передает флаги компоновщика в качестве дополнительных флагов для libtool --mode=link команды. Используйте это, чтобы добавить параметры, специфичные для локального компоновщика.
-p
Этот параметр заставляет apxs связываться с библиотеками apr/apr-util. Это полезно при компиляции вспомогательных программ, использующих библиотеки apr/apr-util.

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

-i
Это указывает на операцию установки и устанавливает один или несколько динамически совместно используемых объектов в каталог модулей сервера .
-a
Это активирует модуль, автоматически добавляя соответствующую LoadModule строку в файл конфигурации Apache apache2.conf или активируя его, если он уже существует.
-A
То же, что и вариант -a , но созданная LoadModule директива имеет префикс решётки ( # ), т. е . модуль просто подготовлен для последующей активации, но изначально отключен.
-e
Это указывает на операцию редактирования, которую можно использовать с параметрами -a и -A аналогично -i операции редактирования apache2.conf файла конфигурации Apache без попытки установить модуль.

Примеры

Предположим, у вас есть доступный модуль 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» и apache2.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/apache2.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/apache2.conf]
apache2ctl restart
/path/to/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
/path/to/apache/sbin/apache2ctl restart: httpd started
$ _



 <         > 

Пункты:   63    64    65      66      67    68    69    70    71    72    73    74    75    76    77    78    79  

Рейтинг@Mail.ru