2006ǯ07��12��

apache module ��ȯ���Ϥ�

¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÅÐÏ¿


�����ϡ�ɬ�פ������� Apache 1.3 �� mod_access ���¤�����Ȥ�������񤭤ޤ��������λ���ñ�ˤ����Τ��¤���������Ǥ��������դȻפ�Ω�äơ��줫�� Apache 2.0 �ѤΥ⥸�塼���񤤤Ƥߤޤ������񤯾�ǿ��� Web �����Ȥ�õ���Ƥߤ��ΤǤ��������ޤ����ܸ�����������ʸ�Ϥ���������ʤ��ä��Τǡ���ȯ������ʬ���ä�����(�ȸ����ۤ��礷����Τ���ʤ��Ǥ���)��ޤȤ�Ƥ������Ȼפ��ޤ���


Apache �ϡ��ꥯ�����Ȥ���������Ǻ٤����ե����������ꤷ�ơ����γƥե��������͡��ʽ�����Ԥ��ޤ���Apache �Υ⥸�塼��γ�ȯ�ϡ����Υ⥸�塼�뤬��Ū�ν����򤹤���Ŭ�ڤʥե������� Apache �ν�������ä��Ȥ��ˡ�Apache ����ƤӽФ��Ƥ�餦����δؿ�(hook �ؿ�)���뤳�Ȥȡ����Υ⥸�塼�뤬ư��뤿��������Ԥ��ؿ����뤳�ȡ��ˤʤ�ޤ���


�ե������ˤϡ��㤨�Ф��Υꥯ�����Ȥ�����դ��뤫���ݤ��뤫�����ե������䡤�ꥯ�����Ȥ��줿 URI �ȼºݤΥǥ�������Υե�����Ȥδ֤��б��դ����褹��ե������������Ƥ������ºݤΥ쥹�ݥ󥹤���������ե�������������ޤ���hook �ؿ�����������ݥ���ȤϤ����Υե������ˤʤ�ޤ�����������󤽤����ƤΥե������Τ���δؿ����Ѱդ���ɬ�פϤ���ޤ��󡥤ޤ����̤������ܤ�ɬ�פ��ʤ���С������Ѥδؿ����������ɬ�פ���ޤ��󡥤ʤΤǡ���äȤ⾮���Ϥʥ⥸�塼��Ǥϡ�hook �ؿ����Ĥȡ�hook �ؿ��� Apache����Ͽ���뤿��δؿ���ɬ�פǤ�����⤦��ġ��Թ���Ĥδؿ����������кѤߤޤ���Apache ��ɸ��⥸�塼��Ǥ��� mod_asis �⥸�塼��⡤���Τ褦�ʴؿ�����Ĥ���������줿�⥸�塼��Ǥ���


���ơ��⥸�塼�볫ȯ�λϤ����Ǥ�����Apache �򥤥󥹥ȡ��뤷�����˰��˥��󥹥ȡ��뤵��Ƥ��롤apxs ���ޥ�ɤ�Ȥ��ޤ����ʲ����ä����� Linux ��Ǽ¹Ԥ��������äǤ������Υ��ޥ�ɤ� Apache �Υ⥸�塼�볫ȯ������ڤ륳�ޥ�ɤǡ��������⥸�塼�������Υ������ե�����Υƥ�ץ졼�Ȥ���Ϥ��Ƥ��줿�ꡤ�⥸�塼��򥳥�ѥ��뤷�Ƥ��줿�ꤹ�롤�ȤƤ������ʤ�ΤǤ���
�ƥ�ץ졼�Ȥ���Ϥ���ˤ�

 apxs -g -n test

�Ȥ��ޤ���-g ���ƥ�ץ졼�Ƚ��ϥ��ޥ�ɤ� -n ���ץ����Ǥ��Υ⥸�塼���̾������ꤷ�ޤ�������ȡ������ȥǥ��쥯�ȥ�� test �Ȥ���̾���Υǥ��쥯�ȥ꤬��������ơ�
 Makefile  mod_test.c  modules.mk

��3�ĤΥե����뤬��������ޤ���modules.mk �� Makefile �Υ��ݡ����ѤΥե�����Ǥ���mod_test.c ���⥸�塼��Υ������ե�����ˤʤ�ޤ�������Ū�ˤϡ����Υե�������Խ����ơ�ɬ�פ� hook �������Ѥδؿ���������Ƥ������Ȥˤʤ�ޤ���
mod_test.c ����Ȥϡ����Τ褦�ˤʤäƤ��ޤ�(Ƭ�Υ����ȤϾʤ��Ƥ��ޤ�)��
  1  #include "httpd.h"
2 #include "http_config.h"
3 #include "http_protocol.h"
4 #include "ap_config.h"
5
6 /* The sample content handler */
7 static int test_handler(request_rec *r)
8 {
9 if (strcmp(r->handler, "test")) {
10 return DECLINED;
11 }
12
13 r->content_type = "text/html";
14 if (!r->header_only)
15 ap_rputs("The sample page from mod_test.c\n", r);
16
17 return OK;
18 }
19
20 static void test_register_hooks(apr_pool_t *p)
21 {
22 ap_hook_handler(test_handler, NULL, NULL, APR_HOOK_MIDDLE);
23 }
24
25 /* Dispatch list for API hooks */
26 module AP_MODULE_DECLARE_DATA test_module = {
27 STANDARD20_MODULE_STUFF,
28 NULL, /* create per-dir config structures */
29 NULL, /* merge per-dir config structures */
30 NULL, /* create per-server config structures */
31 NULL, /* merge per-server config structures */
32 NULL, /* table of config file commands */
33 test_register_hooks /* register hooks */
34 };

���Υ����ɤ����Ǥ�ڤ����⤹��ȡ�test_handler() �ؿ��ϥꥯ�����Ȥ��Ф���쥹�ݥ󥹥ǡ�������������ϥ�ɥ顼�ؿ��Ǥ������Υϥ�ɥ顼�θƤӽФ��ϸ�Ҥ��ޤ���test_register_hooks() �Ϥ��Υ⥸�塼���������� hook�� Apache ����Ͽ���뤿��δؿ��Ǥ���Apache �ν�������˸ƤӽФ���ޤ���������ǸƤӽФ��Ƥ��� ap_hook_handler() �ؿ��ϡ�̾�����̤� handler ����Ͽ���뤿��Τ�ΤǤ�����Ͽ���� hook �μ�����ˤ��Τ褦�ʴؿ����Ѱդ���Ƥ��ޤ���test_module ����ϡ����Ҥ� hook ��Ͽ�ؿ���(�����Ǥ��������Ƥޤ���)�ǥ��쥯�ƥ��֤��������ؿ����� Apache ���Ϥ�����Τ�ΤǤ����ܤ������̤ιƤǽ񤳤��Ȼפ��ޤ���


����򥳥�ѥ��뤹��ˤϡ�mod_test.c �Ȱ����������줿 Makefile ��Ȥä� make ���뤫��apxs ���ޥ�ɤ�Ȥ��ޤ���
make ������ϡ�ñ�� make ����Х���ѥ���Ǥ��ޤ��� install �������åȤ���ꤹ��С�����ѥ��뤬����������³���ơ��Ǥ������ä� DSO �ե������ modules �ǥ��쥯�ȥ�˥��ԡ����Ƥ���ޤ���
apxs ���ޥ�ɤ�Ȥ����ϡ�
 apxs -c mod_test.c

�ǥ���ѥ���Ǥ��ޤ�������ѥ����Ʊ���� modules �ǥ��쥯�ȥ�˥��ԡ�����ˤ�
 apxs -c -i mod_test.c 

�Ȥ��ޤ������� -a ���ץ�������ꤷ�Ƥ����С�httpd.conf �ե�����ˤ��Υ⥸�塼����ɤ߹�������(LoadModule �ǥ��쥯�ƥ���)���ɲä��Ƥ���ޤ���
 apxs -c -i -a mod_test.c 

�ºݤˤ��Υ⥸�塼���Ȥ��ˤϡ��㤨�м��Τ褦������� httpd.conf ��Ŭ���ʤȤ������ɲä��ޤ���
 <Location "/hoge/">
SetHandler test
</Location>

������ɲä��� Apache ��(��)��ư�����顤http://localhost/hoge/ ��ꥯ�����Ȥ��Ƥߤޤ�(�ۥ���̾��ݡ����ֹ�ϡ��ºݤ�����˹�碌�Ƥ�������)������ȼ��Τ褦�ʥ쥹�ݥ󥹤��֤äƤ��ޤ���
 The sample page from mod_test.c

����ϡ��嵭�Υ����ɤ� 15�����ǽ񤭽Ф�����ΤǤ���


���ơ����Υꥯ�����Ȥ���������ѥ��뤷���⥸�塼����ӤĤ��Ƥ���Τ���httpd.conf ���ɲä���

 <Location "/hoge/">
SetHandler test
</Location>

������Ǥ����Ĥޤꡤ/hoge/ �ǻϤޤ� URI ���ꥯ�����Ȥ����С����Υꥯ�����Ȥ��������ϥ�ɥ�Ȥ��� test ��Ȥ����Ȥ���ꤷ�ޤ���
���饤����Ȥ���ꥯ�����Ȥ������ test_handler() ���ꥯ�����Ȥ��٤˸ƤӽФ���ޤ���test_handler() �ϸƤӽФ����ȼ�ʬ�����Υꥯ�����Ȥ��������٤���Ĵ�٤ޤ�(�����ɤ� 9����)����ʬ����������٤��ʤ�С�r->handler ���ͤ� test �ˤʤäƤ��ޤ�(�����ͤ����ꤹ��Τ� SetHandler �ǥ��쥯�ƥ��֤λŻ��Ǥ�)����ʬ����������٤��ꥯ�����Ȥʤ顤�쥹�ݥ󥹥ǡ���������(15����)���ޤ���


ǡ���Ǥ��礦�����ճ��ȴ�ñ����ʤ��Ǥ���? ����Ϥ��������Ǥ��������Ƥ�����¾�Υե������Ǥν������ä�ºݤ˥⥸�塼���񤯾�������ʥ饤�֥����äʤɤ�񤤤Ƥߤ����Ȼפ��ޤ���


����ʸ��:

klab_gijutsu2 at 22:52��Comments(6)��TrackBack(1)��apache | ï¿½ï¿½È¯

�ȥ�å��Хå�URL

���ε����ؤΥȥ�å��Хå�

1. ï¿½ï¿½ï¿½ï¿½/2008-02-19  [ Naru�Υ�⥵���� (PukiWiki/TrackBack 0.4) ]   2008ǯ02��19�� 04:26
Apache�Υ⥸�塼����� �Ҥʷ��κ��� http://d.hatena.ne.jp/s-masatarou/20070502/1178130657 �嵭�����ȤǤν��� LoadModule testworld_module xxx/mod_testmodule.so &lt;Location /hello&gt; SetHandler testworld &lt;/Location&gt; ���ͥ�� http...

���ε����ؤΥ�����

1. Posted by masa   2006ǯ07��14�� 15:52
4 ����ˤ��ϡ�

apxs�ǥ⥸�塼��Υƥ�ץ졼�Ȥ����ʤ���Τ�ޤ���Ǥ�����
��ʬ�ǽ񤤤Ƥ⤵�ۤɼ�֤�������ƥ�ץ졼�ȤǤϤʤ��Ǥ��������줬����������ߵ�Ϥ��ä��㤯�������ޤ��͡�
2. Posted by nakano   2006ǯ09��28�� 10:58
5 �������Ԥ��Ƥ��ޤ���
4. Posted by perisy   2007ǯ08��23�� 10:25
5 ���ͤˤ����Ƥ��������Ƥޤ���

mod_test.c�Υ����ɤǡ�>�פ���>gt;�פ�ɽ������Ƥ���褦�ʤΤ���𤤤����ޤ���
5. Posted by ���Ĥ�   2007ǯ08��23�� 11:04
����𤢤꤬�Ȥ��������ޤ����������Ƥ����ޤ�����
6. Posted by nao   2007ǯ08��23�� 14:26
5 ���μ��web�Ǥλ����Ͼ��ʤ��Τǡ�
�����˻��ͤˤʤ�ޤ���
���줫��⵭�ܵ��������ꤤ�������ޤ���
7. Posted by ariari   2007ǯ09��13�� 21:42
5 �������ä�HotTo����������뤳�Ȥǡ����ä��ߵ郎�㤯�ʤ�ޤ��͡�
�ٶ��ˤʤ�ޤ�����

���ε����˥����Ȥ���

̾��:
URL:
  ����òµ­²ï¿½: ɾ��: ��    ��
 
 
 
Blog�⸡��
�ǿ�����
Archives
���Υ֥����ˤĤ���
DSAS�Ȥϡ�KLab �����ۤ����Ѥ��Ƥ��륳��ƥ�ĥ����ӥ��Ѥ�Linux�١����Υ���ե�Ǥ�������5����Υǡ������󥿤ˤƹ��ۤ������Ѥ��Ƥ��ޤ������桹��DSAS����Ȥ��䤹�����������ˡ������Ƥ����ϤDZ��ѤǤ��뤳�Ȥ��ܻؤ��ơ��������ɤ˶Ф���Ǥ��ޤ���
���Υ֥����Ǥϡ������ DSAS �ǻȤäƤ��뵻�ѤξҲ�䡢�¸����Ƥߤ���̤���𡢥ȥ�֥�˴������ޤ줿���ηи��̤ʤɡ���������������������򿥤�ޤ��ƾҲ𤷤Ƥ��������Ȼפ��ޤ���
�ǿ�������
<%==comments[n].author%>
<% } %>