Apache HTTP Server Version 2.0
This document refers to the 2.0 version of Apache httpd, which is no longer maintained. Upgrade, and refer to the current version of httpd instead, documented at:
You may follow this link to go to the current version of this document.
apxs
´Â ¾ÆÆÄÄ¡ ÇÏÀÌÆÛÅؽºÆ® Àü¼Û ÇÁ·ÎÅäÄÝ
(HTTP) ¼¹öÀÇ È®Àå¸ðµâÀ» ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÏ´Â µµ±¸ÀÌ´Ù. ÀÌ
µµ±¸´Â ¿©·¯ ¼Ò½º¿Í ¿ÀºêÁ§Æ®ÆÄÀÏÀ» °¡Áö°í,
mod_so
ÀÇ LoadModule
Áö½Ã¾î·Î ½ÇÇàÁß¿¡
¾ÆÆÄÄ¡ ¼¹ö·Î ÀоîµéÀÏ ¼ö ÀÖ´Â µ¿Àû°øÀ¯°´Ã¼(DSO)¸¦ ¸¸µç´Ù.
±×·¡¼ ÀÌ·± È®Àå¹æ½ÄÀ» »ç¿ëÇÏ·Á¸é Ç÷¡ÆûÀÌ DSO ±â´ÉÀ»
Áö¿øÇÏ°í ¾ÆÆÄÄ¡ httpd
½ÇÇàÆÄÀÏÀ»
mod_so
¸ðµâ°ú °°ÀÌ ÄÄÆÄÀÏÇØ¾ß ÇÑ´Ù.
apxs
µµ±¸´Â ÀÌ Á¶°ÇÀÌ ¸¸Á·ÇÏÁö¾ÊÀ¸¸é ½ÇÇàÇÏÁö
¾Ê´Â´Ù. Á÷Á¢ ¸í·É¾î¸¦ ½ÇÇàÇÏ¿© Á¶°ÇÀÌ ¸¸Á·ÇÏ´ÂÁö ¾Ë¾Æº¼
¼ö ÀÖ´Ù
$ httpd -l
¸ñ·Ï¿¡ mod_so
¸ðµâÀÌ ³ª¿Í¾ß ÇÑ´Ù. Á¶°ÇÀ»
¸¸Á·Çϸé apxs
µµ±¸·Î DSO ¸ðµâÀ» ¼³Ä¡ÇÏ¿©
¾ÆÆÄÄ¡¼¹öÀÇ ±â´ÉÀ» ½±°Ô È®ÀåÇÒ ¼ö ÀÖ´Ù:
$ 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,
position independent code)·Î ÄÄÆÄÀÏÇØ¾ß ÇÑ´Ù. GCCÀÇ °æ¿ì
-fpic
À» »ç¿ëÇÏ¸é µÈ´Ù. ´Ù¸¥ C ÄÄÆÄÀÏ·¯´Â ¼³¸í¼¸¦
Âü°íÇϰųª apxs
°¡ ¿ÀºêÁ§Æ®ÆÄÀÏÀ» ÄÄÆÄÀÏÇÒ¶§
»ç¿ëÇÏ´Â ¿É¼ÇÀ» Âü°íÇ϶ó.
¾ÆÆÄÄ¡ÀÇ DSO Áö¿ø¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº
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
-i
(install)°ú -g
(template
generation) ¿É¼ÇÀ» »ç¿ëÇÒ¶§ Á÷Á¢ ¸ðµâ¸íÀ» ÁöÁ¤ÇÑ´Ù. ÀÌ
¿É¼ÇÀ» »ç¿ëÇÏ¿© ¸ðµâ¸íÀ» Á÷Á¢ ÁöÁ¤ÇÑ´Ù. -g
¿É¼ÇÀ» »ç¿ëÇÑ´Ù¸é ÀÌ ¿É¼ÇÀ» ¹Ýµå½Ã »ç¿ëÇؾßÇÏ°í,
-i
¿É¼ÇÀ» »ç¿ëÇÑ´Ù¸é apxs
µµ±¸´Â
¼Ò½º³ª (¸¶Áö¸· ½Ãµµ·Î) ÆÄÀϸíÀ» °¡Áö°í À̸§À» ÃßÃøÇÑ´Ù.-q
apxs
ÀÇ ¼³Á¤°ªÀ» ¾Ë¾Æ³½´Ù. query¿¡´Â
´ÙÀ½À» »ç¿ëÇÒ ¼ö ÀÖ´Ù: CC
, CFLAGS
,
CFLAGS_SHLIB
, INCLUDEDIR
,
LD_SHLIB
, LDFLAGS_SHLIB
,
LIBEXECDIR
, LIBS_SHLIB
,
SBINDIR
, SYSCONFDIR
, TARGET
.
¼³Á¤À» Á÷Á¢ ¾Ë¾Æ³¾¶§ »ç¿ëÇÑ´Ù.
INC=-I`apxs -q INCLUDEDIR`
¿¹¸¦ µé¾î, ¾ÆÆÄÄ¡ C Çì´õÆÄÀÏÀ» Á÷Á¢ Á¢±ÙÇÑ´Ù¸é Makefile¿¡¼ À§¿Í °°ÀÌ »ç¿ëÇÑ´Ù.
-S name=value
-g
-n
¿É¼Ç Âü°í) ±×°÷¿¡ ÆÄÀÏ µÎ°³¸¦ ¸¸µç´Ù: ÇÑ ÆÄÀÏÀº
mod_name.c
¶ó´Â °ßº» ¸ðµâ¼Ò½ºÆÄÀÏ·Î,
ÀÚ½ÅÀÇ ¸ðµâÀ» ¸¸µé¶§ °ßº»À¸·Î »ç¿ëÇϰųª apxs ±â´ÉÀ»
½ÃÇèÇغ¼¶§ »ç¿ëÇÑ´Ù. ´Ù¸¥ ÆÄÀÏÀº ÀÌ ¸ðµâÀ» ½±°Ô ÄÄÆÄÀÏÇÏ°í
¼³Ä¡ÇϱâÀ§ÇÑ Makefile
ÀÌ´Ù.-c
-o
¿É¼ÇÀ» »ç¿ëÇÏÁö¾ÊÀ¸¸é filesÀÇ
ù¹ø° ÆÄÀÏ¸í¿¡¼ À̸§À» ÃßÃøÇÏ¿© º¸Åë
mod_name.so
¸¦ »ç¿ëÇÑ´Ù.-o dsofile
mod_unknown.so
¸¦ À̸§À¸·Î
»ç¿ëÇÑ´Ù.-D name=value
-I incdir
-L libdir
-l libname
-Wc,compiler-flags
-Wl,linker-flags
-i
-a
httpd.conf
¼³Á¤ÆÄÀÏ¿¡ ÀûÀýÇÑ
LoadModule
ÁÙÀ»
Ãß°¡Çϰųª ÀÌ¹Ì ÀÖ´Ù¸é È°¼ºÈÇÏ¿© ¸ðµâÀ» »ç¿ëÇϵµ·Ï
¸¸µç´Ù.-A
-a
¿Í ºñ½ÁÇÏÁö¸¸, LoadModule
Áö½Ã¾î ¾Õ¿¡
¿ì¹°Á¤ÀÚ(#
)¸¦ ºÙÀδÙ. Áï, ÇöÀç´Â
»ç¿ëÇÏÁö¾ÊÁö¸¸ ³ªÁß¿¡ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¸ðµâÀ» ÁغñÇÑ´Ù.-e
-a
ȤÀº -A
¿É¼Ç°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, -i
¸í·É°ú
ºñ½ÁÇÏÁö¸¸ ¸ðµâÀ» ¼³Ä¡ÇÏÁö¾Ê°í ¾ÆÆÄÄ¡
httpd.conf
¼³Á¤ÆÄÀϸ¸ ÆíÁýÇÑ´Ù.¾ÆÆÄÄ¡¼¹öÀÇ ±â´ÉÀ» È®ÀåÇÏ´Â mod_foo.c
¶ó´Â
¾ÆÆÄÄ¡ ¸ðµâÀÌ ÀÖ´Ù°í °¡Á¤ÇÏÀÚ. ¸ÕÀú ´ÙÀ½ ¸í·É¾î¸¦ »ç¿ëÇÏ¿©
C ¼Ò½º¸¦ ¾ÆÆÄÄ¡ ¼¹ö°¡ ÀоîµéÀÏ °øÀ¯°´Ã¼·Î ÄÄÆÄÀÏÇÑ´Ù:
$ apxs -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
$ _
±×¸®°í ÀÌ °øÀ¯°´Ã¼¸¦ ÀоîµéÀÌ´Â LoadModule
Áö½Ã¾î¸¦ ¾ÆÆÄÄ¡
¼³Á¤¿¡ Ãß°¡ÇÑ´Ù. apxs
´Â ÀÚµ¿À¸·Î °øÀ¯°´Ã¼¸¦
"modules" µð·ºÅ丮¿¡ ¼³Ä¡ÇÏ°í httpd.conf
ÆÄÀÏÀ»
¾Ë¸Â°Ô ¼öÁ¤ÇÏ¿© °£´ÜÈ÷ ÀÛ¾÷À» ¸¶Ä£´Ù. ´ÙÀ½ °°ÀÌ ½ÇÇàÇÑ´Ù:
$ apxs -i -a mod_foo.c
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]
$ _
±×·¯¸é ´ÙÀ½°ú °°Àº ÁÙÀ»
LoadModule foo_module modules/mod_foo.so
¼³Á¤ÆÄÀÏ¿¡ ¾ø´Ù¸é Ãß°¡ÇÑ´Ù. ÀÌ ¼³Á¤À» ±âº»ÀûÀ¸·Î »ç¿ëÇÏÁö
¾Ê´Â´Ù¸é -A
¿É¼ÇÀ» »ç¿ëÇÑ´Ù. Áï
$ apxs -i -A mod_foo.c
apxs¸¦ ½±°Ô »ç¿ëÇÏ·Á°í ´ÙÀ½°ú °°ÀÌ ¾ÆÆÄÄ¡ ¸ðµâ °ßº»°ú MakefileÀ» ¸¸µé ¼ö ÀÖ´Ù:
$ apxs -g -n foo
Creating [DIR] foo
Creating [FILE] foo/Makefile
Creating [FILE] foo/mod_foo.c
$ _
±×·±ÈÄ ¹Ù·Î °ßº» ¸ðµâÀ» °øÀ¯°´Ã¼·Î ÄÄÆÄÀÏÇÏ¿© ¾ÆÆÄÄ¡ ¼¹ö°¡ Àеµ·ÏÇÑ´Ù:
$ cd foo
$ make all reload
apxs -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
apxs -i -a -n "foo" mod_foo.so
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
$ _
½ÉÁö¾î ¾ÆÆÄÄ¡ ¼Ò½º ¹Û¿¡¼ apxs
¸¦ »ç¿ëÇÏ¿©
PHP3¿Í °°ÀÌ º¹ÀâÇÑ ¸ðµâÀ» ÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Ù:
$ cd php3
$ ./configure --with-shared-apache=../apache-1.3
$ apxs -c -o libphp3.so mod_php3.c libmodphp3-so.a
gcc -fpic -DSHARED_MODULE -I/tmp/apache/include -c mod_php3.c
ld -Bshareable -o libphp3.so mod_php3.o libmodphp3-so.a
$ _
apxs
´Â ÀÚµ¿À¸·Î C ¼Ò½ºÆÄÀÏ°ú ¿ÀºêÁ§Æ®ÆÄÀÏÀ»
±¸º°ÇÑ´Ù. C ¼Ò½ºÆÄÀϸ¸ ÄÄÆÄÀÏÇÏ°í ³ª¸ÓÁö ¿ÀºêÁ§Æ®ÆÄÀÏÀº
¸µÅ©ÇÒ¶§ »ç¿ëÇÑ´Ù.