Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
CheckBootSpeed - это диагностический пакет на основе скриптов PowerShell, создающий отчет о скорости загрузки Windows 7 ...
Вы когда-нибудь хотели создать установочный диск Windows, который бы автоматически установил систему, не задавая вопросо...
Если после установки Windows XP у вас перестала загружаться Windows Vista или Windows 7, вам необходимо восстановить заг...
Программа подготовки документов и ведения учетных и отчетных данных по командировкам. Используются формы, утвержденные п...
Red Button – это мощная утилита для оптимизации и очистки всех актуальных клиентских версий операционной системы Windows...
OSzone.net Видео Unix Интернет Apache APXS - инструмент для сборки модулей Apache RSS

APXS - инструмент для сборки модулей Apache

Текущий рейтинг: 4 (проголосовало 4)
 Посетителей: 3019 | Просмотров: 3865 (сегодня 0)  Шрифт: - +
apxs - это утилита для сборки и установки модулей для HTTP сервера Apache. Apxs создает динамически-загружаемые объекты (DSO) из одного или нескольких файлов исходного кода или объектных файлов, которые затем могут загружаться в сервер Apache с помощью директивы LoadModule модуля mod_so.   Чтобы использовать этот механизм расширения функциональности сервера, ваша платформа должна поддерживать DSO, а ваш сервер Apache должен быть собран с модулем mod_so. Утилита apxs автоматически проверит данные требования. Также вы сами можете проверить это с помощью команды: $ httpd -l Модуль mod_so должен быть в этом списке. Если эти требования соблюдены, то вы легко сможете расширить функциональность вашего сервера собственными модулями с помощью утилиты 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), объектные файлы (.o) или файлы библиотек (.a). Утилита apxs автоматически распознает эти файлы и скомпилирует Си файлы, а объектные файлы и файлы архивов только скомпонует. Но, если вы используете объектные файлы, то убедитесь, что их код скомпилирован как независимый от расположения (position independent code (PIC)). Это обязательное условия для их динамической загрузки. Например, в компиляторе GCC для этого необходимо использовать параметр -fpic. Если вы используете другой Си компилятор, то поищите описание этой возможности в документации. Для дополнительной информации о поддержки DSO в Apache прочитайте документацию модуля mod_so или ознакомьтесь с исходным кодом модуля в файле src/modules/standard/mod_so.c.

Синтаксис

apxs -g [ -S name=value ] -n modname
apxs -q [ -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 Опция n явно задает имя модуля для опций -i (установка) и для -g (генерация шаблона). При использовании опции -g она обязательна, а при использовании -i, если n не задана, тогда утилита apxs попытается определить имя модуля из исходного кода или из имени файла.

Опции запроса

-q Позволяет запрашивать у утилиты apxs некоторые параметры среды. Запрашиваемые параметры задаются в query и имеют следующие значения: CC, CFLAGS, CFLAGS_SHLIB, INCLUDEDIR, LD_SHLIB, LDFLAGS_SHLIB, LIBEXECDIR, LIBS_SHLIB, SBINDIR, SYSCONFDIR, TARGET. Например, следующая строка
  INC=-I`apxs -q INCLUDEDIR` внутри make-файла, добавит в переменную INC каталог Apache с заголовочными файлами.

Опции конфигурации

-S name=value Эта опция меняет настройки apxs, описанные выше. Например: -S CFLAGS="`$APXS -q CFLAGS`"

Опции генерации шаблонаа

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

Опции компиляции DSOO

-c Опция c запускает выполнение компиляции. В этом случае apxs сперва компилирует все С-файлы (.c), заданные в files, в соответствующие объектные файлы (.o), а затем создает динамический объект dsofile, компонуя скомпилированные объектные файлы с оставшимися объектными файлами (.o и .a) из files. Если опция -o не указана, тогда имя выходного файла задается именем первого файла из files. -o dsofile Явно задает имя файла создаваемого динамического объекта. В случае если dsofile не указано и имя не может быть определено из files, тогда используется имя mod_unknown.so. -D name=value Значение этой опции напрямую передается компилятору. Она используется для добавления определений в процесс сборки. -I incdir Значение этой опции также напрямую передается компилятору. Используйте ее для добавления каталогов с заголовочными файлами в процесс сборки. -L libdir Значение этой опции передается компоновщику. Используйте ее для добавления каталогов с библиотеками в процесс сборки. -l libname Значение этой опции также передается компоновщику. Используйте ее для добавления дополнительных библиотек. -Wc,compiler-flags Эта опция передает для команды libtool –mode=compile дополнительные флаги compiler-flags. Используйте ее для использования специфичных параметров компилятора. -Wl,,linker-flags Эта опция передает для команды libtool –mode=link дополнительные флаги linker-flags. Используйте ее для использования специфичных параметров компоновщика.

Установка DSO и опции конфигурации

-ii Этот флаг обозначает операцию установки. Если он указан, то все dso-файлы модулей, созданные утилитой apxs, будут скопированы в серверный каталог modules. -a Флаг активизирует модуль путем добавления соответствующей строки LoadModule в конфигурационный файл htppd.conf. -A Так же как и опция -a добавляет директиву LoadModule, но с префиксом #, т.е. модуль подготавливается для дальнейшего использования, но пока деактивирован. -e Этот флаг задает операцию редактирования конфигурационного файла httpd.conf. Может быть использован вместе с опциями -a и -A.

Примеры

Предположим, что имя файла нашего модуля Apache - mod_foo.c. Прежде всего надо скомпилировать исходный С файл в DSO файл, который можно будет загрузить в сервер 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 сама устанавливает созданные объекты в каталог модулей и соответственно обновляет файл 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]
$ _
Эта команда добавит следующую строку в файл 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/.depss
$ _
Созданные файлы модуля можно сразу же скомпилировать в динамический объект и загрузить в сервер 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
$ _
Автор: ApacheDev.ru  •  Иcточник: ApacheDev.ru  •  Опубликована: 23.08.2006
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:  


Оценить статью:
Вверх
Комментарии посетителей
Комментарии отключены. С вопросами по статьям обращайтесь в форум.