|
µÚËÄÕÂ ÉèÖÃWeb ServerÒÔÔËÐÐCGI
by chinacode
Ò»¡¢NCSA Server
¶þ¡¢CERN httpd
Èý¡¢Netscape Server
ËÄ¡¢IIS
Ò»¡¢ÉèÖÃNCSA Server»òApache ServerÒÔʹÓÃCGI
NCSA ServerµÄCGI1.1Ö»ÔÊÐíÓÃÏÂÁÐÁ½ÖÖ·½Ê½¼¤»îÓû§·þÎñÆ÷ÉϵĽű¾£ºScriptAliasÖ¸ÁîºÍAddTypeÖ¸Áî¡£ÕâÁ½ÌõÖ¸Áî¶¼·ÅÔÚsrm.confÎļþÖУ¬¸ÃÎļþÒ»°ãÔÚÓû§µÄ·þÎñÆ÷¸ùĿ¼µÄconfĿ¼ÖС£
ScriptAliasÖ¸Áî¸æËß·þÎñÆ÷¸ÃĿ¼ÖеÄËùÓÐÎļþ¶¼Êǽű¾»òÕßÊÇ·þÎñÆ÷×÷ΪCGIÎļþÖ´ÐеijÌÐò¡£¸Ã·½·¨Äܱ£Ö¤Óû§µÄCGI³ÌÐòÔÚÌØ¶¨Î»Öá£AddTypeÖ¸ÁîÔÊÐíÓû§¸æËß·þÎñÆ÷ÈκξßÓÐÖ¸¶¨Ç°×ºµÄÎļþ¶¼ÊÇ¿ÉÖ´ÐÐÎļþ¡£Èç¹ûÏ£Íû½«CGI³ÌÐò·ÅÔÚ·þÎñÆ÷ÖÐÈκεط½µÄ»°¸ÃÖ¸Áî¼´ºÜÓÐÓá£
1¡¢ScriptAliasÖ¸Áî
ScriptAliasÖ¸ÁîλÓÚServer Resource MapÎļþ(srm.conf)ÖУ¬³ÌÐòÄÚÈÝÀýÈçÏ£º
DocumentRoot /usr/local/etc/httpd/htdocs
UserDir public_html
REdirect /HTTPD/ http://www.server.com/
Alias /icons/ /usr/local/etc/httpd/icons/
ScriptAlias /cgi-bin/ /usr/local/etc/httpd/cgi-bin/
DirectoryIndex index.html index.shtml index.cgi
IndexOptions FancyIndexing
AddIcon /icons/movie.gif .mpg .qt
AddIcon /icons/menu.gif
AddIcon /icons/blank.xbm
DefaultIcon /icons/unknown.xbm
IndexIgnore */.??* *~ *# */HEADER* */README*
DefaultType text/plain
AccessFileName .htaccess
srm.confÎļþÔÊÐíÓû§¸ù¾Ý×Ô¼ºÏµÍ³ÐèÒªÉèÖÃHTTP Server¡£ËüÔÊÐíÓû§¸æËß·þÎñÆ÷Óû§µÄÖ÷Ò³ÔÚʲôµØ·½£¬Ä¿Â¼ÖеÄÄĸöÎĵµÊÇË÷ÒýÎĵµ£¬Èç¹û²»´æÔÚË÷ÒýÎļþµÄ»°½«×°ÔØÊ²Ã´Í¼Æ¬ÎļþÒÔÏÔʾÎļþµÄÀàÐÍ£¬µÈµÈ¡£srm.conf¼°ÆäËûÅäÖÃÎļþµÄ˵Ã÷¿É²éÔÄhttp://hoohoo.ncsa.uiuc.edu/docs/setup/Configure.html¡£
2¡¢AddTypeÖ¸Áî
AddTypeÖ¸ÁîÊÇÖ´ÐÐCGI³ÌÐòµÄÁíÒ»ÖÖ·½Ê½£¬ËüÊÇÔÚsrm.confÎļþÖмÓÈëÏÂÁÐÐУº
AddType application/x-httpd-cgi.cgi
ÔÚ×Ô¼ºµÄϵͳÖÐÉèÖÃÁ˸ÃÖ¸Áîºó£¬ÈκÎÔÚ·þÎñÆ÷¿ØÖÆ·¶Î§ÄÚµÄÀ©Õ¹ÃûΪ.cgiµÄÎļþ¶¼»á±»×÷ΪCGI³ÌÐòÖ´Ðжø²»ÊÇ×÷ΪÎı¾ÎļþÔĶÁ¡£ÕâÒâζ×ÅÓû§¿ÉÒÔÔÚËûµÄ¸öÈËĿ¼Öд´½¨½Å±¾²¢ÄÜÖ´ÐÐËü¡£µ«ÊÇÈç¹û½Å±¾Ð´µÃ²»ÕýÈ·£¬¾Í¿ÉÄܵ¼Ö¶ÔÎļþϵͳ¡¢¿ÚÁîÎļþµÈµÄ²»Í¬ÀàÐÍÉ˺¦¡£
AddTypeÖ¸Áî¿ÉÒÔÀ©Õ¹ÎªÔÊÐíÀ©Õ¹Ãû²»ÊÇ.cgiµÄ³ÌÐòͬÑù±»Ö´ÐС£´ó¼Ò¾³£»á¿´¼ûÒÔ.pl£¨Perl½Å±¾µÄ³£¼ûÀ©Õ¹Ãû£©»ò.sh£¨Bourne Shell½Å±¾µÄ³£¼ûÀ©Õ¹Ãû£©½áβµÄ½Å±¾¡£Èç¹ûÏëÖ§³ÖÆäËûÀ©Õ¹ÃûµÄ³ÌÐò£¬Ö»Ðè¼òµ¥µØ½«ËüÃǼÓÈëAddTypeÖ¸ÁîÖУ¬ÈçÏÂËùʾ£º
AddType application/x-httpd-cgi .cgi .pl .sh
3¡¢·ÃÎÊÅäÖÃÎļþ
ΪÁËÖ§³ÖCGI³ÌÐòµÄÖ´ÐбØÐë¶à¼ÓÈëÒ»ÌõÖ¸Áî¡£ÔÚServer Root/confĿ¼ÖÐÊÇÒ»¸öÃûΪaccess.confµÄÅäÖÃÎļþ¡£¸ÃÎļþÔÊÐíÓû§ÉèÖÃServerRootϵÄÄĸöĿ¼Äܹ»·ÃÎʵÄÈ«¾ÖÏÞÖÆ£¬ÉõÖÁÔÊÐíÓû§¿ØÖÆÄÄЩվµã¿ÉÒÔ·ÃÎÊÕâЩĿ¼¡£ÏÂÃæÊÇaccess.confÎļþµÄÒ»¸öÀý×Ó£º
<Directory /usr/local/etc/httpd/cgi-bin>
Options INdexes Exec CGI
</Directory>
<Directory /usr/local/etc/httpd/htdocs>
Options Indexes FollowSymLinks
AllowOverride All
<Limit GET>
order allow,deny
allow from all
</Limit>
</Directory>
Exec CGI±íʾÔÊÐíÖ´ÐиÃĿ¼ÖеÄCGI½Å±¾¡£Options Indexes FollowSymLinks±íʾÔÊÐíË÷Òý£¨ÏÔʾijÎļþ¼ÐÖеÄÄÚÈÝ£©²¢Äܹ»×ñÑ·ûºÅÁ´£¨Õâ¾ÍÒâζ×ÅÔÚServerRootÖ®ÍâµÄÎļþÒ²Äܱ»·ÃÎÊ£©¡£AllowOverrideÖ¸ÁîÔÊÐíÓû§¾ö¶¨ÄĸöÖ¸Áî¿ÉÒÔ±»Ä¿Â¼µÄ.htaccessÎļþ¸²¸Ç¡£ÖÐÉèÖÃÁ˶ԸÃĿ¼ÖÐÔÊÐíʹÓÃGET·½Ê½µÄÏÞÖÆ¡£ÔÚHTTPDÖУ¬²¿·ÖÖ¸ÁîµÄÑ¡ÏîÊÇGET¡¢POSTºÍPUT£¨Ä¿Ç°PUTÉÐδʵÏÖ£©¡£order allow,denyÒ»ÐиæËß·þÎñÆ÷ÏÈÕÒallowÐÐÔÙÕÒdenyÐС£ÏÂÒ»ÐÐÔòÊǸæËß·þÎñÆ÷ÔÊÐíËùÓÐÕ¾µã·ÃÎʸÃĿ¼ÖеÄÒ³Ãæ¡£
¶þ¡¢ÉèÖÃCERN HTTP·þÎñÆ÷ÒÔʹÓÃCGI
CERN HTTP·þÎñÆ÷£¨Ò²³ÆÎªW3C HTTP·þÎñÆ÷£©½öÐèÒª±à¼/etc/httpd.confÎļþ¼´¿ÉÖ§³ÖÔÚ·þÎñÆ÷ÄÚʹÓÃCGI³ÌÐò¡£Õâ¸öÖ¸ÁîÀàËÆÓÚNCSA ServerʹÓõÄÖ¸Á
Exec /url-prefix/* /physical-path/*
ÆäÖÐ/url-prefix/¶¨ÒåÁ˿ͻ§ÄÜ¿´¼ûµÄ·¾¶£¬¶ø/physical-path/ÔòÊǰüº¬½Å±¾µÄĿ¼µÄʵ¼Ê·¾¶¡£
Èý¡¢ÉèÖÃNetscapeÒÔʹÓÃCGI
Ê×ÏÈÒªÆô¶¯¹ÜÀí·þÎñÆ÷¡£ÒÔrootÉí·ÝµÇ¼£¬²¢ÔËÐÐ/ServerRoot/admserv/start-admin£¬È±Ê¡¶Ë¿ÚΪ81¡£È»ºóÆô¶¯ä¯ÀÀÆ÷Á¬½Ó¡£ÔÚNetscape AdminÒ³ÃæÖУ¬µ¥»÷Select URL Mapping£¬´Óµ¯³ö´°¿ÚÖÐÑ¡ÔñMap a URL to a Local Directory¡£È»ºóµ¥»÷Select CGI and Server Parsed HTML£¬´Óµ¯³ö´°¿ÚÖÐÑ¡ÔñActivate CGI as a File Type¡£ÏÖÔÚ¼´¿Éµ¥»÷Browse Files²¢Ñ¡ÔñÓû¼¤»îµÄĿ¼¡£Ñ¡ÔñÍêĿ¼ºó£¬µ¥»÷I'd Like to Activate CGI as a File Type¡£ÔÚServerRootÖм´»á¿´µ½ConfĿ¼ÖеÄobj.confÅäÖÃÎļþÖÐÒѼÓÈëÁËÏÂÁÐÐУº
NameTrans form="/cgi-bin" fn="pfx2dir" dir="/usr/local/web/cgi-bin" name="cgi"
name=cgiµ÷ÓÃÁËÏÂÁÐÐУº
<Object name="cgi">
ObjectType fn="force-type" type="magnus-internal/cgi"
Service fn="send-cgi"
</Object>
Ëü¸æËß·þÎñÆ÷´ËΪһ¸öCGIĿ¼£¬ÆäÖеÄËùÓÐÎļþ¶¼½«ÓÃNetscapeÄÚ²¿ÌṩµÄCGIÖ´ÐС£
ËÄ¡¢ÉèÖÃIISÒÔʹÓÃCGI
ÔÚIISÉÏÔËÐÐCGIÓÐÊ®¸ö¼òµ¥µÄ²½Ö裺
1)°²×°Internet Service Manager¡£
2)´ÓÁбíÖÐÑ¡ÔñWWW Servive¡£
3)Ñ¡ÔñProperties/Service PropertiesÃüÁî¡£
4)µ¥»÷Directories±êÇ©¡£
5)µ¥»÷Add°´Å¥¡£
6)Ö¸¶¨×Ô¼ºµÄcgi-binĿ¼µÄÍêÕû·¾¶£¨ÀýÈ磬c:\webfiles\scripts£©¡£
7)ʹÓÃ/scripts×÷ΪĿ¼±ðÃû¡£
8)Ñ¡ÖÐExecute¼ì²é¿ò¡£
9)µ¥»÷OK±£´æÐ޸ġ£
10)½«×Ô¼ºµÄCGI³ÌÐò·ÅÔÚc:\webfiles\scriptsÖв¢ÔÚHTMLÖÐ×÷Ϊ/scripts/someprogram.exeÒýÓá£
ÔÚʹÓÃIISʱ¾³£³öÏÖµÄÎÊÌâÓëÉèÖÃIISû̫´ó¹ØÏµ¶øÊǺͻù±¾µÄ²Ù×÷ϵͳ¹¦ÄÜÓкܴó¹ØÏµ¡£IISÓëµ×²ãµÄ²Ù×÷ϵͳÁªÏµºÜ½ôÃÜ£¬¼´Ê¹ÒѾÉèÖÃΪ·þÎñ£¬Web·þÎñÆ÷»ù±¾ÉÏÊÇ×÷ΪӦÓóÌÐòÀ´ÔËÐеģ¬Í¨³£Ö»ÓÐÒ»¸öÓû§°²È«»·¾³£¬Web·þÎñÆ÷ÄÜ·ÃÎʵ½µÄÓëWeb·þÎñÆ÷ϵÄCGI³ÌÐòÄÜ·ÃÎʵ½µÄÄÚÈݼ¸ºõûʲô²»Í¬£¨ÕâÀàËÆÓÚUNIX»·¾³£¬ÔÚUNIX»·¾³Ï£¬ºÜÖØÒªµÄÒ»µã¾ÍÊDz»Òª½«Web·þÎñÆ÷×÷ΪrootÀ´ÔËÐУ©¡£IISµÄ¹¤×÷ºÜÏñÒ»¸öÀ©Õ¹µÄÎļþϵͳ¡£Ã¿¸öÓû§ÓÐ×Ô¼ºµÄȨÏÞ¡£CGI³ÌÐòÔÚÖ´ÐиóÌÐòµÄ·ÃÎÊÕßµÄÓû§°²È«»·¾³ÖÐÔËÐС£¶ÔÓÚδÑéÖ¤µÄÒ³Ãæ£¬Õâ¾ÍÊÇȱʡÌṩµÄ¡°ÎÞÃûµÄ¡±Óû§£¬¶ø¶ÔÑéÖ¤µÄÒ³Ãæ£¬°²È«»·¾³¾ÍÏñÓû§Î»ÓÚ·þÎñÆ÷¿ØÖÆÌ¨Ç°ÊÖ¹¤ÔËÐиóÌÐòÒ»Ñù¡£Ê¹´ó²¿·Ö³õѧÕß·¸´íÎóµÄÕýÊÇÕâÖÖ¶îÍâµÄ°²È«²ã´Î¡£
IIS¹ÜÀíÔ±×î³£±§Ô¹µÄÒ»¸ö´íÎóÐÅÏ¢ÊÇ"The Application misbehaved by not returning a complete set of headers"¡£´íÎóÏûÏ¢½ÓÏÂÀ´Áгö·þÎñÆ÷½ÓÊÕµ½µÄÍ·±ê--Ò»°ãÊǸö¿ÕµÄÇåµ¥¡£ÕâÖÖÌÖÑáµÄ²»Ã÷È·µÄ´íÎóÓÐÒ»¸öÖ±½ÓµÄÔÒò£¬²»¹ýÕâ¸öÔÒòÓëCGI½Å±¾µÄ´íÎó²Ù×÷ûÓÐÒ»µã¹ØÏµ¡£Èç¹ûÒòΪijÖÖÔÒòij¸öCGI½Å±¾²»ÄÜÔËÐУ¬Ëü¾Í²»ÄܲúÉúÈκÎÍ·±ê¡£IIS½«´íÎóµÄÔðÈÎÍÆÔڽű¾ÉíÉÏ£¬Êµ¼ÊÉÏÈ´¼¸ºõ×ÜÊÇ·þÎñÆ÷¹ÜÀíÔ±µÄ´í¡£CGI½Å±¾ÐèÒª·ÃÎÊϵͳDLLs¡¢ÏµÍ³µÄÁÙʱĿ¼ÒÔ¼°ËüÃÇʹÓõÄÈÎºÎÆäËû×ÊÔ´¡£Èç¹û¸Ã½Å±¾Êǰ´¾²Ì¬Ô¼Êø½øÐбàÒëµÄ£¬ÄÇô³ý·ÇËùÓÐ×é¼þ¾ù¿ÉÓ㬷ñÔò²Ù×÷ϵͳ²»»á×°ÔØ¸Ã³ÌÐòµÄ¡£Èç¹ûϵͳ¹ÜÀíÔ±Ëø½ôÁ˰²È«¼¶Ê¹µÃ½Å±¾²»ÄÜ×°ÔØËüµÄDLLs£¬ÄÇô½Å±¾¾Í²»ÄÜÔËÐС£µ±½Å±¾²»ÄÜÔËÐÐʱ£¬ËüÒ²¾Í²»²úÉúÈκÎÍ·±êÁË£¨»òÕ߯äËûµÄÊäÈ룩£¬´Ó¶øµ¼Ö³öÏÖ±¾¶Î¿ªÍ·ÒýÓõĴíÎóÏûÏ¢¡£
Èç¹û¹ÜÀíÔ±ÊÇÔÚÒ»¸ö°²È«Ä¿Â¼ÖÐÔËÐнű¾µÄ£¨°²È«Ä¿Â¼¼´ÊÇÒ»¸öÐèÒªµ¥¶ÀÓû§ÑéÖ¤²ÅÄÜ·ÃÎʵÄĿ¼£©£¬ÄÇôÿ¸ö¿ÉÄÜ·ÃÎÊϵͳµÄÓû§¶¼±ØÐëÓÐÏÂÁа²È«È¨ÏÞ¡£Èç¹ûÊÇÎÞÃûµØÔËÐнű¾£¬ÄÇôֻÓÐÎÞÃûÓû§ÐèÒªÕâЩȨÏÞ£º
.¶Ô%systemroot%system£¨Ò»°ãΪc:\winnt\system£©µÄ¶ÁȨÏÞ
.¶Ô%systemroot%system32£¨Ò»°ãΪc:\winnt\system32£©µÄ¶ÁȨÏÞ
.¶ÔÁÙʱĿ¼£¨Ò»°ãΪc:\temp£©µÄÐÞ¸ÄȨÏÞ
.¶ÔWeb¸ùµÄ¶ÁȨÏÞ
.¶ÔCGIĿ¼µÄÐÞ¸ÄȨÏÞ
Èç¹ûÔÚÓÐÁËÕâЩ·ÃÎÊȨÏÞÖ®ºóÈÔÈ»³öÎÊÌ⣬¿ÉÒÔ½øÒ»²½ÁÙʱ¸øÌØÊâµÄÓû§ÕʺÅEveryone¸³ÓèÕâЩĿ¼µÄÐÞ¸ÄȨÏÞ¡£Èç¹ûÎÊÌâ½â¾öÁË£¬¾Í¿ÉÒÔÈ϶¨ÊÇÉÙÁËÒ»¸ö²½Ö裨»òÒ»¸öÓû§£©¡£¾ÀÕýÎÊÌâÈ»ºóÂýÂý»ØÊÕȨÏÞÖ±ÖÁ·þÎñÆ÷ÖØÐ°²È«¡£
ÉÏÒ»Õ ÏÂÒ»Õ Ŀ¼
|