µ±Ç°Î»ÖãºLinux½Ì³Ì - Apache - apache - ʹÓÃKylix3¿ª·¢Apache DSO

apache - ʹÓÃKylix3¿ª·¢Apache DSO

ʹÓÃKylix3¿ª·¢Apache DSO
2004-04-23 15:18 pm
À´×Ô£ºLinuxÎĵµ
ÏÖÔØ£ºWww.8s8s.coM
µØÖ·£ºÎÞÃû

ÄÚÈÝ£º
ΪʲôҪ²ÉÓà DSO
ºÜÖØÒªµÄ°æ±¾ÎÊÌâ
Ä£¿éµÄ¹¤×÷Ô­Àí
±àÒë Apache Ö§³Ö DSO
¿ª·¢ DSO
²¿Êð DSO
ʵÀýÏòµ¼
²Î¿¼×ÊÁÏ
¹ØÓÚ×÷Õß
ÔÚ linux ×¨Çø»¹ÓУº
½Ì³Ì
¹¤¾ßÓë²úÆ·
´úÂëÓë×é¼þ
ÎÄÕÂ

ºî¹âÃô (wearebug@etang.com)
2003 Äê 1 ÔÂ
kylixÊÇlinuxÏ·dz£ºÃµÄ¼¯³É¿ª·¢¹¤¾ß£¨¸öÈËÈÏΪÊÇwindows³ÌÐòԱתÏòLinux×îÊʺϵģ©£¬Ç°Ò»¶Î¹¤×÷ÖÐʹÓÃKylix3½øÐÐÁËApache¶¯Ì¬¹²Ïí¶ÔÏó£¨DSO£©µÄ¿ª·¢£¬ÔÚ¿ª·¢¹¤×÷ÖÐÓöµ½ÁËÐí¶àµÄÎÊÌ⣬¾­¹ýÃþË÷Ò»Ò»½â¾öÁË£¬ÓÐЩ¾­Ñ鏸´ó¼Ò¹²Ïí£¬ÒÔÃâºóÀ´Õß×ßÍä·¡£

ΪʲôҪ²ÉÓÃDSO
×îÖØÒªµÄÔ­ÒòÊÇЧÂÊ¡£ApacheÊÇÄ£¿é»¯Éè¼ÆµÄ£¬ËùÒÔËü¿ÉÒÔ¼ÓÔØ¸÷ÖÖ¸÷ÑùµÄ·þÎñÆ÷¶Ë½Å±¾½âÊÍÆ÷À´Ö§³Ö¶¯Ì¬µÄÍøÒ³¡£ÎÒÒÔǰ¿ª·¢µÄÊÇcgi£¬µ«ÊÇËæ×ÅÒ³Ãæ·ÃÎÊÁ¿µÄÔö´ó£¬cgiÒѾ­²»¿´Öظº£¬ÎÒÐèÒªÌá¸ßЧÂÊ¡£ÓÉÓÚÔ­ÓеĴúÂëÁ¿ºÜ´ó£¬ÎÒ»ù±¾Éϲ»¿ÉÄÜÖØÐÂдphp»òÕßjspÀ´´úÌæËûÃÇ£¬ËùÒÔÎÒÑ¡ÔñÁ˰Ñ×î³£µ÷ÓõÄÄ£¿é±àÒë³É¶¯Ì¬¹²Ïí¶ÔÏó(DSO).¡£

»¹ÓÐÒ»¸öÔ­Òò£¬cgi³ÌÐòÊǶÌÁ¬½Ó£¬²»Äܱ£´æÓû§µÄ״̬ÐÅÏ¢£¬Èç¹û²ÉÓó£×¤ÄÚ´æµÄDSO£¬ÄÇôÕâ¸öÎÊÌâÒ²¿ÉÒÔÓ­Èжø½âÁË¡£

ºÜÖØÒªµÄ°æ±¾ÎÊÌâ
ÓÃkylix¿ª·¢DSO¹ý³ÌÖеİ汾ÎÊÌâÊǷdz£ÖØÒªµÄ¡£¿ªÔ´µÄApache¸üеĺܿ죬Apache 1.*°æ±¾ºÍ2.*°æ±¾µÄDSO¸ñʽÊDz»Ò»ÑùµÄ£¬Ò»¶¨Òª¿¼Âǵ½¡£Delphi6/kylix2±àÒë³öÀ´µÄDSOÊǶÔÓ¦Apache 1.*°æ±¾µÄ¡£ÎÒʹÓõÄÊÇkylix3ºÍApache2.0.43£¬BorlandµÄ¹Ù·½ÍøÕ¾ÉÏ˵kylix3²»Ö§³ÖApache2 µÄDSO£¬ÕâÈÃÎÒÓôÃÆÁ˺ܳ¤Ê±¼ä¡£ºóÀ´ÖªµÀÁËDelphi7Ö§³ÖApache2µÄÏûÏ¢£¬¶øDelphi7µÄCLX¼¼ÊõÊÇ¿çÆ½Ì¨µÄ£¬ÕâÈÃÎÒÕÒµ½Á˽â¾öµÄ°ì·¨¡£

Delphi7µÄDSO2¹¤³ÌÀïÒªÒýÓÃHTTPD2¡¢ApacheTwoHTTPºÍApacheTwoApp£¨DSO1¶ÔÓ¦µÄÊÇHTTP¡¢ApacheHTTPºÍApacheApp£©£¬ÄÇôÎҾͽ«Delphi7°²×°Ä¿Â¼ÏÂÔ´´úÂëĿ¼ÖжÔÓ¦µÄpasÎļþ¿½±´³öÀ´£¬´æ·Åµ½kylix3µÄÔ´´úÂëĿ¼ÏÂÈ»ºó±àÒë¡£ÎҲ鿴¹ýÔ´´úÂ룬ÀïÃæÓÐ¿çÆ½Ì¨Ìõ¼þ±àÒëµÄ·ûºÅ£¬ËùÒÔÕâÖÖ×ö·¨ÊÇ¿ÉÐеġ£

Ä£¿éµÄ¹¤×÷Ô­Àí
ApacheÄ£¿é¿ÉÒÔÔÚApacheÖеǼÇËüÃÇÌṩº¯ÊýµÄ»Ø½ÐÐźš£»Ø½ÐÊÇÒ»ÖÖ¿ÉÒÔÔÚApacheÖеǼǵĺ¯Êý£¬Apache¿ÉÒÔÔÚÇëÇó½ø³ÌÑ­»·ÖеĶà¸ö½×¶Îµ÷Óøú¯Êý¡£»Ø½Ðͨ³£×÷Ϊ½ø³ÌµÄÌØÊâʼþ´¦Àí³ÌÐòµÇ¼Ç¡£¶àÊýApacheΪģ¿éµÇ¼Ç»Ø½Ðº¯ÊýÌṩµÄÁ´½Ó¶¼ÊÇHTTPÇëÇóÑ­»·µÄÒ»²¿·Ö¡£Apacheµ±Ç°¶¨ÒåÁË11ÖÖÇëÇóÑ­»·½×¶Î£¬Ä£¿é¿ÉÒԵǼǻؽк¯Êý¡£ËüÃÇÒÀ´ÎΪ£º¶ÁºóÇëÇó£¨Post-Read£©¡¢URL·­Ò롢ͷ²¿½âÎö¡¢·ÃÎÊ¿ØÖÆ¡¢Éí·ÝÑéÖ¤¡¢ÊÚȨ¡¢MIMEÀàÐͼì²é¡¢ÐÞÕý£¨FixUp£©¡¢ÏìÓ¦»òÂú×ã¡¢ÈÕÖ¾¼Ç¼¡¢Çå³ý¡£

±àÒëApacheÖ§³ÖDSO
²»ÐÒµÄÊÇ£¬Ä¬ÈϵÄApacheÅäÖÃÊDz»Ö§³ÖDSOµÄ£¬ËùÒÔÎÒÃDZØÐëÐÞ¸ÄÅäÖÃÎļþÈ»ºóÖØÐ±àÒ룬ÎÒÊÇÖ±½Óͨ¹ýÃüÁîÐÐÍê³ÉµÄ¡£Õâ¸ö²»ÄÑ£¬°ÑµÃµ½µÄhttpd*.tar.gzÎļþ½â°üºó£¬½øÈë¸ÃĿ¼£¬¼üÈëÈçϵÄÃüÁ

./configure -enable-so
make
make install


ÔÚ±àÒë¹ý³ÌÖÐÈç¹û³öÏÖÁËÎÊÌâµÄ»°£¬²é¿´Ò»Ï³ö´íµÄÐÅÏ¢£¬Ò»°ã¶¼ÊÇûÓÐÏàÓ¦µÄ¿ª·¢°üÔì³ÉµÄ£¬°Ñ¿ª·¢°ü×°ÉϾÍÐÐÁË¡£Ä¬Èϰ²×°ÔÚ/user/local/apache2/Ŀ¼£¬Èç¹ûÄãÒªÓбðµÄÅäÖÃÒªÇ󣬼üÈë./configure -help×Ô¼º¿´¿´°É¡£

¿ª·¢ DSO
ÓÐÁËÇ°ÃæµÄ×¼±¸¹¤×÷£¬Ê¹ÓÃKylix¿ª·¢DSO¾Í±äµÃ·Ç³£¼òµ¥ÁË£¬Ö»ÐèÒªÔÚ½¨Á¢¹¤³ÌµÄʱºòÑ¡ÔñÉú³ÉApache DSO£¬ºÍ½¨Á¢CGIûÓÐʲô²»Í¬£¬Kylix°Ñ²»Í¬µÄµØ·½Í¸Ã÷»¯ÁË¡£

ÔÚ¹¤³ÌÎļþÖл¹Òª×÷ÈçÏÂÐ޸ģº

ĬÈϽ¨Á¢µÄ¹¤³ÌÎļþ£¨ÒÔwebSnap¹¤³ÌΪÀý£©£º

Library Project1
Uses
WebBroker,
ApacheApp,
¡­¡­
{$R *.res}
exports
apache_module name 'Project1_module'
¡­.
¡­.


°ÑUsesÖеÄApacheApp¸ÄΪApacheTwoApp£¬¼ÓÈëHTTPD2£¬ÎªÊ²Ã´ÒªÕâô¸Ä²»ÓÃÎÒ½âÊÍÁ˰É^__^¡£»¹ÓÐÒ»¸öÒªÐ޸ĵĵط½ÊÇHTTPD2.pasÎļþ£¬ÕÒµ½³£Á¿¶¨ÒåµÄµØ·½£¬°ÑÕâ¸ö³£Á¿MODULE_MAGIC_NUMBER_MAJORµÄÖµ¸ÄΪ20020903£¬ÕâÑùApache2²ÅÈÏÕâ¸öDSO£¬Çмǡ£

ÓÉÓÚDSOÊdz£×¤ÄÚ´æµÄ£¬Ëü²»ÏñcgiÄÇÑù¿ÉÒÔÔÚ½ø³ÌÍ˳öʱ×Ô¶¯ÊÍ·ÅËùÓеÄ×ÊÔ´£¬ËùÒÔ×ÊÔ´·ÖÅäºÍ»ØÊÕµÄÎÊÌâÓÈÆäÖØÒª¡£ÔÚÈ¡µÃÊý¾Ý¿âÖеÄÊý¾ÝºóÒ»¶¨Òª¼ÇµÃÔÚÊʵ±µÄÎö¹¹º¯ÊýÖаÑÊý¾Ý¿âÁ¬½Ó¹Ø±Õ£¬½¨Á¢Ä³Ð©¶Ñ¶ÔÏóʹÓúóÒ»¶¨ÒªÊÍ·ÅÄÚ´æ¡£µ±È»£¬²»¹Ü¿ª·¢Ê²Ã´ÑùµÄ³ÌÐò£¬Õâ¶¼ÊÇÒ»¸öºÏ¸ñ³ÌÐòÔ±Ó¦¸Ã×öµÄ¡£

µ÷ÊÔDSOÓеãÂé·³£¬ÔÚBorlandµÄ¹Ù·½ÍøÕ¾ÉÏÓнéÉÜ£¬µ«ÊÇÎÒʹÓÃÎҵķ½·¨µ÷ÊÔ£¬Äã¿ÉÒÔ×Ô¼º¾ö¶¨ÓÃʲô·½·¨¡£ÎÒÏÈ×öÒ»¸öCgi¹¤³Ìµ÷ÊÔ£¬ÔÚÈë¿Ú¼ÓËÀÑ­»·£¬È»ºóÓÃkylix×Ô´øµÄ½ø³Ì²¶»ñ¹¦Äܲ¶»ñ±»Æô¶¯µÄcgi£¬°ÑÑ­»·±ê־λÖÃΪ¼Ù¾Í¿ÉÒÔ¼ÌÐøµ¥²½Ö´ÐÐÁË¡£µ÷ÊÔÍê±ÏÈ·ÈÏÎÞÎóºó½¨Á¢ÐµÄDSO¹¤³Ì£¬É¾³ý¹¤³ÌÔ­Óеĵ¥ÔªÎļþ£¬½Ó×ŰѸղÅcgi¹¤³ÌÀïµÄËùÓе¥ÔªÎļþ¼Óµ½Õâ¸ö¹¤³ÌÀïÀ´ÖØÐ±àÒë¾ÍÐÐÁË¡£

²¿ÊðDSO
µ±È»ÒªÐÞ¸ÄApacheµÄÅäÖÃÎļþÁË£¬×ölinuxϵĿª·¢ÉÙ²»ÁËÕâЩ²Ù×÷¡£

½øÈëapache°²×°Ä¿Â¼ÏµÄconfĿ¼£¬ÐÞ¸Ähttpd.confÎļþ£¬¼ÓÈëÈçϵÄÎÄ×Ö£º

LoadModule XXX modules/YYY.so
<Location /ZZZ>
SetHandler YYY-handler
</Location>


Æô¶¯Apacheºó£¬¾Í¿ÉÒÔÊäÈëhttp://Ö÷»úÃû/ZZZ µ÷ÓÃÄ㲿ÊðµÄDSOÁË¡£ÐèҪעÒâµÄÎÊÌâÊÇ£¬XXXÄã×Ô¼º¶¨ÒåµÄApacheÄ£¿éµÄÃû³Æ£¬ÔÚÕâÀïÄã¿ÉÒÔдProject1_module£¬ºóÃæ¸úµÄÊÇÄ£¿éÎļþµÄËùÔÚλÖã¬Ò»°ã¶¼·ÅÔÚmodulesÏ£¬YYYÊÇÉú³ÉµÄsoÎļþµÄÃû×Ö£¬ÔÚÕâÀïÓ¦¸ÃÊÇProject1.so¡£Èç¹ûÔÚÆô¶¯»òÕßÔËÐеĹý³ÌÖÐÓÐһЩsoÎļþÕÒ²»µ½µÄ»°£¬ÐèÒªÔÚÅäÖÃÎļþÀï¼ÓÉÏSetEnv LD_LIBRARY_PATH soÎļþËùÔڵķ¾¶¡£

ʵÀýÏòµ¼
ÔÚÕâÀïÎÒʹÓþ­µäµÄhelloWord×÷ΪʵÀý£¬Äã¿ÉÒÔͨ¹ýÕâ¸öÀý×Ó×ßÉÏApache DSO¿ª·¢µÄÂþ³¤µÀ·¡£ÏÖÔÚͨ¹ýÉÏÃæµÄ½²½â£¬ÎÒ¼ÙÉèÄãÒѾ­Ê¹ÄãµÄApacheÖ§³ÖDSOÁË£¬ÎÒÃÇÒÔ´ËΪÆðµãÒ»²½Ò»²½ÏòÏÂ×ß¡£

1 ½¨Á¢Ò»¸öwebsnap¹¤³ÌÎļþ£¬Ñ¡ÔñApache DSO¡£ÃüÃûΪhelloWorldP.dpr


2 ÐÞ¸ÄÔ´´úÂëÎļþ

3 ÐÞ¸ÄÒ³ÃæÎļþÊä³öhelloWorld¡£

¼ûÏÂͼËùʾ¡£Èç¹ûÄãÒªÍê³ÉÆäËûµÄ¹¦ÄÜ£¬ºÍÆÕͨµÄcgiÊÇÒ»ÑùµÄ¡£ÕâÀïÖ»ÊÇÒ»¸ö¼òµ¥µÄСÀý×Ó£¬²¢²»Íê³ÉÕæÕýµÄwebsnap¹¤×÷¡£

4 ±àÒëÕâ¸ö¹¤³Ì

kylixµÄĬÈÏÉèÖÃÀï»áΪÄãÉú³ÉµÄDSOÎļþ¼ÓÉÏlibǰ׺£¬ËùÒÔÄã¿ÉÒÔ¿´µ½ÔÚÄã±£´æ¹¤³ÌÎļþµÄµØ·½ÐÂÉú³ÉÁËÒ»¸öÎļþlibhelloWordP.so£¬Õâ¾ÍÊÇÉú³ÉµÄDSOÎļþ¡£°ÑÕâ¸öÎļþ¿½±´µ½Apache°²×°Ä¿Â¼µÄmodules×ÓĿ¼Ï¡£

5 ¸ÄдApacheÅäÖÃÎļþ

½øÈëapache°²×°Ä¿Â¼ÏµÄconfĿ¼£¬ÐÞ¸Ähttpd.confÎļþ£¬¼ÓÈëÈçϵÄÎÄ×Ö£º

LoadModule helloWorld_module modules/helloWorldP.so
<Location /hello>
SetHandler helloWorldP-handler
</Location>


6 Ð˷ܵÄʱ¿Ìµ½ÁË

ÎÒ˵µÄ¿É²»¿äÕÅ£¬µ±ÎÒ¾­ÀúÁËÖÖÖÖ³ö´íÌáʾ֮ºó¾ÍÊÇÕâÖָоõ¡£ÏÖÔÚÖØÆôApache£¬ÔÚä¯ÀÀÆ÷ÖÐÇÃÈëhttp://ÄãµÄ·þÎñÆ÷Ãû/hello ,hello¾ÍÊÇÄãÔÚÅäÖÃÎļþÖаüº¬ÔÚLocation¶¨Î»·ûºóÃæµÄÎÄ×Ö£¬²»ÄÜÓëÒѾ­´æÔ򵀮äËûcgiµÈ¶¨Î»ÖØÃû£¨ÎÒÔøÉîÊÜÆäº¦£©¡£Èç¹ûûÓÐÎÊÌâµÄ»°£¬Äã»á¿´µ½ÏÂÃæµÄ¶«Î÷£º

¾ÍÊÇÕâЩÁË£¬Õâ½ö½öÊǸö¿ªÊ¼£¬½Ó×Å¿ªÊ¼ÄãµÄ¹¤×÷°É£¬Äã»á·¢ÏÖlinuxϵĿª·¢Ò²ÊǺÜÓÐÒâ˼µÄ¡£ÐèҪעÒâµÄÊÇ£¬ÔÚlinuxÏ´óСдÊÇÃô¸ÐµÄ£¬Ç§Íò²»Òª°ÑwindowsÏµĻµÏ°¹ßÀ´¹ýÀ´£¬ÄÇÑùÄã»á°×°×µ¢ÎóºÜ¶àʱ¼ä¡£

²Î¿¼×ÊÁÏ£º

* ¡¶linux Apache Web Server¹ÜÀíÖ¸ÄÏ¡·
* Äã¿ÉÒÔÔÚÕâÀïÕÒµ½¸ü¶àµÄ¿ª·¢²Î¿¼£ºhttp://www.thedelphimagazine.com/
* ¹ØÓÚlinuxϵĿª·¢£¬ÔÚIBM DeveloperWorksÓкܶàµÄÖÐÎIJο¼¡£


¹ØÓÚ×÷Õߣº
ºî¹âÃô£¬¶Ôδ֪ÊÂÎñ³äÂúºÃÆæµÄ³ÌÐòÔ±£¬Æ®ÔÚ±±¾©¡£Ä¿Ç°Ê¹ÓÃKylix×ölinuxϵÄWeb¿ª·¢£¬Ò²Ê¹ÓÃJava½øÐпª·¢¹¤×÷¡£Îҵĵç×ÓÓʼþ wearebug@etang.com£¬²»Òª·¢¹ã¸æºÍÀ¬»øÓʼþ£¬ÇóÇóÄãÁË¡£


µ½Ò³Ê×
Äú¶ÔÕâÆªÎÄÕµĿ´·¨ÈçºÎ£¿
Õæ°ô£¡(5) ºÃ²ÄÁÏ (4) Ò»°ã£»ÉÐ¿É (3) ÐèÌá¸ß (2) Ì«²î£¡ (1)

½¨Ò飿

(c) Copyright IBM Corp. 2001, (c) Copyright IBM China 2001, All Right Reserved
¹ØÓÚ IBM | Òþ˽ÌõÔ¼ | ·¨ÂÉÌõ¿î | ÁªÏµ IBM