ÀüÀÚ»ó°Å·¡ ½Ã½ºÅÛ ¿î¿µ ¹× °ü¸®

   3.ÀüÀÚ»ó°Å·¡ ÄÁÅÙÃ÷ °³¹ß

      6. ÇÁ·Î±×·¡¹Ö ¾ð¾î¥° - CGI

CGI

 

¨ç CGI(Common Gateway Interface)ÀÇ ±âº»

CGI´Â À¥¼­¹ö¿¡ ÀÖ¾î »ç¿ëÀÚÀÇ ¿ä±¸¸¦ ÀÀ¿ë ÇÁ·Î±×·¥¿¡ Àü´ÞÇÏ°í ±× °á°ú¸¦ »ç¿ëÀÚ¿¡°Ô µÇµ¹·ÁÁÖ±â À§ÇÑ Ç¥ÁØÀûÀÎ ¹æ¹ýÀÌ´Ù. »ç¿ëÀÚ°¡ ÇÏÀÌÆÛ¸µÅ©¸¦ Ŭ¸¯Çϰųª À¥ »çÀÌÆ®ÀÇ ÁÖ¼Ò¸¦ ÀÔ·ÂÇÏ¿© ¿äûÇϸé À¥ ¼­¹ö´Â ¿äûµÈ ÆäÀÌÁö¸¦ º¸³»ÁØ´Ù. ÇÏÁö¸¸ »ç¿ëÀÚ°¡ À¥ ÆäÀÌÁöÀÇ ¾ç½Ä¿¡ ³»¿ëÀ» ±âÀçÇÏ¿© º¸³ÂÀ» ¶§´Â(¿¹¸¦ µé¾î ȸ¿ø °¡ÀÔ, À̺¥Æ® ½Åû µî) ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ÀÇÇØ ó¸®µÉ Çʿ䰡 ÀÖ´Ù. ±×·¡¼­ À¥ ¼­¹ö´Â »ç¿ëÀÚÀÇ ÀÔ·Â Á¤º¸¸¦ ¹ÞÀ¸¸é Á¶±×¸¸ ÀÀ¿ë ÇÁ·Î±×·¥¿¡ Àü´ÞÇϴµ¥, ÀÌ ÇÁ·Î±×·¥Àº µ¥ÀÌÅ͸¦ ó¸®Çϰí Çʿ信 µû¶ó È®ÀÎ ¸Þ½ÃÁö¸¦ º¸³»Áֱ⵵ ÇÑ´Ù. ÀÌ·¸°Ô ¼­¹ö¿Í ÀÀ¿ë ÇÁ·Î±×·¥ °£¿¡ µ¥ÀÌÅ͸¦ ÁÖ°í¹Þ±â À§ÇÑ ¹æ¹ýÀ̳ª ±Ô¾àµéÀ» CGI¶ó°í ºÎ¸¥´Ù. CGI´Â À¥ÀÇ HTTP ÇÁ·ÎÅäÄÝÀÇ ÀϺÎÀÌ´Ù.

 

·CGI¿¡¼­ 'Common'Àº Ç÷§Æû¿¡ °ü°è¾øÀÌ °¢ Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹ö, ±×¸®°í °ÔÀÌÆ®¿þÀÌ ÇÁ·Î±×·¥ÀÌ °øÀ¯Çϴ ǥÁØÀ» ÀǹÌÇÑ´Ù.

·CGI¿¡¼­ 'Gateway'´Â CGI°¡ ÀÌÁúÀûÀÎ µÎ ½Ã½ºÅÛÀÇ Åë·Î ¿ªÇÒÀ» ¸Ã°í ÀÖÀ½À» ÀǹÌÇÑ´Ù.

·CGI¿¡¼­ 'Interface'´Â °³¹ßÀÚ°¡ HTTP ¼­¹öÀÇ ÀüüÀûÀÎ ÇÁ·Î±×·¥ ±¸Á¶¸¦ ¸ð¸£´õ¶óµµ ÀÔ·Ãâ·Â¿¡ °ü·ÃµÈ ºÎºÐ¸¸ ÀÌÇØÇÏ¸é °³¹ßÇÒ ¼ö ÀÖ´Ù´Â ÀǹÌÀÌ´Ù. µû¶ó¼­ °³¹ßÀÚ´Â ´ÜÁö °¢ ¸ðµâ°£ÀÇ ÀÎÅÍÆäÀ̽º¿¡ ´ëÇÑ ÀÌÇØ¸¸ ÇÏ¸é µÈ´Ù.

·CGI´Â ¿ÜºÎ ÇÁ·Î±×·¥°ú À¥ ¼­¹ö(HTTP Server)¸¦ ¿¬°áÇÏ´Â ±Ô¾àÀ¸·Î CGI¸¦ ¼öÇàÇÏ´Â ¿ÜºÎ ÇÁ·Î±×·¥À» ¸ðµÎ Æ÷ÇÔÇÏ¿© ¸»ÇÑ´Ù

·CGI´Â º°µµÀÇ ¿ÜºÎ ÇÁ·Î±×·¥À¸·Î, À¥ ¼­¹ö¿Í´Â º°µµ·Î ¼³Ä¡ÇØ¾ß ÇÑ´Ù.

·CGI ÇÁ·Î±×·¥ÀÇ ÇÁ·Î±×·¥ µµ±¸·Î´Â ÆÞ, C/C++, ºñÁÖ¾ó º£À̽Ä, ¾ÖÇà ½ºÅ©¸³Æ®, Tcl µîÀÌ ÀÖ´Ù.

·À¥ ¼­¹ö¿Í ÇÁ·Î±×·¥ °£ÀÇ ÀÎÅÍÆäÀ̽º·Î¼­ »ç¿ëÀÚ°¡ ºê¶ó¿ìÀú¸¦ ÅëÇØ ¼­¹ö·Î º¸³½ µ¥ÀÌÅ͸¦ ¼­¹ö¿¡¼­ ÀÛµ¿ ÁßÀÎ µ¥ÀÌÅÍ Ã³¸® ÇÁ·Î±×·¥¿¡ Àü´ÞÇϰí, ÇÁ·Î±×·¥¿¡¼­ ó¸®µÈ µ¥ÀÌÅ͸¦ ´Ù½Ã ¼­¹ö·Î µÇµ¹·Á º¸³»´Â ¿ªÇÒÀ» ÇÑ´Ù.

·°á°ú °ªÀº ¼­¹ö¸¦ ÅëÇØ Ŭ¶óÀÌ¾ðÆ®¿¡°Ô Àü¼ÛµÈ´Ù.

·CGI´Â À¥ ÇÏÀÌÆÛ¹Ìµð¾î ½Ã½ºÅÛ°ú ¿ÜºÎ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ¼­·Î ¿¬°èµÇ±â À§ÇÑ ÀÎÄÚµù, µðÄÚµù ¹æ¹ý°ú µ¥ÀÌÅÍ ±³È¯ÀÇ ¹æ¹ýÀ» Á¤ÀÇÇÑ Ç¥ÁØÀÌ´Ù.

·CGI´Â À¥ ¼­¹ö¿¡¼­ ¿ÜºÎ ÇÁ·Î±×·¥À̳ª ¼ÒÇÁÆ®¿þ¾î¸¦ ½ÇÇàÇÏ´Â °¡Àå °£´ÜÇÑ ¹æ¹ýÀÌ´Ù.

 

¨è CGIÀÇ È¯°æ º¯¼ö

CGI ÇÁ·Î±×·¥Àº À¥ ¼­¹ö¿¡¼­ ½ÇÇàµÇ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ÀÌ CGI ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ ¶§ À¥ ¼­¹ö´Â ÇöÀç ÀÚ½ÅÀÌ Ã³ÇØ ÀÖ´Â ½Ã½ºÅÛ »óȲÀ» ¾î¶°ÇÑ º¯¼öÀÇ ÁýÇÕ ³»¿¡ ¼³Á¤ÇØ ³õ´Âµ¥ À̸¦ CGI ȯ°æ º¯¼ö¶ó°í ÇÑ´Ù. CGI ȯ°æ º¯¼ö´Â À¥ ¼­¹ö ±âÁ¾¿¡ °ü°è¾øÀÌ ¸ðµÎ HTTP ±Ô¾àÀ» µû¸¥´Ù. ÇØ´çÇÏ´Â ¼­¹ö°¡ ¾ÆÆÄÄ¡ÀÎÁö MSÀÇ IISÀÎÁö¿¡ µû¶ó ¾²ÀÌ´Â ¹æ¹ýÀÌ ¾à°£ ´Ù¸¦ »Ó ±âº»ÀûÀÎ CGI ȯ°æ º¯¼ö¸¦ »ç¿ëÇÏ¿© ÇÁ·Î±×·¡¹ÖÀ» ÇÏ°Ô µÈ´Ù. À̸¦ ÀÌ¿ëÇØ¼­ °Ô½ÃÆÇÀ̳ª ¹æ¸í·ÏÀ» ½ÇÇàÇÒ ¶§ °Ô½Ã¹°À» ÀÛ¼ºÇÑ »ç¶÷ÀÇ IP ÁÖ¼Ò È¤Àº »ç¿ëÀÚ ÀÎÁõ »óÅÂ, ±×¸®°í ƯÁ¤ IP ÁÖ¼Ò·Î Á¢¼ÓÇÑ »ç¶÷¿¡ ´ëÇÑ ÅëÁ¦µµ °¡´ÉÇÏ´Ù. ´ÙÀ½Àº ÁÖ·Î ¾²ÀÌ´Â CGIÀÇ È¯°æ º¯¼ö¸¦ ¿­°ÅÇÑ °ÍÀÌ´Ù.

 

 

¨é CGIÀÇ µ¿ÀÛ °úÁ¤

»ç¿ëÀÚ°¡ À¥ ºê¶ó¿ìÀú¸¦ ÀÌ¿ëÇÏ¿© HTMLÀÇ FORM ű׷Πµ¥ÀÌÅ͸¦ ÀÔ·ÂÇϸé, À¥ ºê¶ó¿ìÀú´Â Á¢¼ÓµÇ¾î ÀÖ´Â À¥ ¼­¹ö¿¡ µ¥ÀÌÅ͸¦ º¸³½´Ù. µ¥ÀÌÅ͸¦ ¹ÞÀº À¥ ¼­¹ö´Â ÀÌ µ¥ÀÌÅ͸¦ CGI ÇÁ·Î±×·¥¿¡ ³Ñ±â°í, CGI ÇÁ·Î±×·¥°ú °ü·ÃµÈ ¿äûÀ̸é CGI ÇÁ·Î±×·¥À» ½ÇÇà½ÃŲ´Ù. À¥ ¼­¹ö´Â CGI ÇÁ·Î±×·¥ÀÇ ÀÛµ¿ °á°ú¸¦ À¥ ºê¶ó¿ìÀú°¡ º¼ ¼ö ÀÖ´Â HTML ¹®¼­ÀÇ ÇüÅ·Πº¯È¯ÇÏ¿© º¯È¯µÈ °á°ú¸¦ À¥ ºê¶ó¿ìÀú¿¡°Ô ³Ñ±ä´Ù. À¥ ºê¶ó¿ìÀú´Â ½ÇÇà °á°ú¸¦ »ç¿ëÀÚ¿¡°Ô º¸¿©ÁØ´Ù.

 

 

 

À¥ ÂÊ¿¡¼­ ÀÔ·Â °ªµéÀ» ³Ñ°ÜÁÖ´Â FORM ű×ÀÇ ±¸¼ºÀº ´ÙÀ½°ú °°´Ù.

 

 

¨ê CGIÀÇ Àå·´ÜÁ¡

 

¡ß CGIÀÇ ÀåÁ¡

·¼­¹ö¸¦ ÀϰüµÈ ¹æ¹ýÀ¸·Î È®ÀåÇÒ ¼ö ÀÖ´Ù.

·¸ðµç CGI´Â Ç¥ÁØ ÀÔ·Â, ȯ°æ º¯¼ö¿¡¼­ Àμö¸¦ ¹Þ°í Ç¥ÁØ Ãâ·ÂÀ¸·Î ±× °á°ú¸¦ Ãâ·ÂÇÑ´Ù.

·URL·Î ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù.

·¼­¹ö ÂÊ¿¡¸¸ ¼³Ä¡ÇÏ¸é µÈ´Ù.

 

¡ß CGIÀÇ ´ÜÁ¡

·Å¬¶óÀÌ¾ðÆ®°¡ CGI ÇÁ·Î±×·¥À» ¿äûÇÒ ¶§¸¶´Ù µ¿½Ã¿¡ ¸¹Àº ¼öÀÇ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ¹Ç·Î ¼­¹öÀÇ ºÎ´ãÀÌ Å©´Ù.

·°ËÁõµÇÁö ¾ÊÀº CGI°¡ ¼­¹ö¿¡ ¼³Ä¡µÇ¸é º¸¾È¿¡ ¹®Á¦°¡ »ý±æ ¼ö ÀÖ´Ù.

·´ëÈ­Çü ÆäÀÌÁö¸¦ ÀÛ¼ºÇÒ ¼ö ¾ø´Ù. À̰ÍÀº CGIÀÇ ¹®Á¦¶ó±âº¸´Ù´Â Áö±Ý±îÁö À¥ ½Ã½ºÅÛ ÀÚü°¡ ´Ü¹æÇâÀ¸·Î ¼³°èµÇ¾ú±â ¶§¹®¿¡ ¹ß»ýÇÏ´Â ¹®Á¦ÀÌ´Ù.

·HTTP ÀÚü°¡ ¿¬°áÀ» À¯ÁöÇϵµ·Ï ¼³°èµÇÁö ¾Ê¾Ò±â ¶§¹®¿¡ ¿¬°áÀ» °è¼Ó À¯ÁöÇÒ ¼ö ¾ø´Ù.

 

Tip!----------------------------------------------------------------------------

CGI ÇÁ·Î±×·¥ µµ±¸

À¯´Ð½º ¼Ð ½ºÅ©¸³Æ®, ÆÞ, C/C++, VB½ºÅ©¸³Æ®, Tcl, ºñÁÖ¾ó º£À̽Ä

--------------------------------------------------------------------------------

¨ë CGIÀÇ ¹æ½Ä

 

¡ß GET ¹æ½Ä

·°¢ ÀԷ°ªµéÀÌ ±âº» URL¿¡ ºÙ´Â Àμö(PARAMETER)·Î¼­ ÷°¡µÇ¾î CGI ÇÁ·Î±×·¥À¸·Î °ªÀ» ³Ñ°ÜÁØ´Ù.

·GET ¹æ½ÄÀ» ÀÌ¿ëÇÏ¸ç ±× ÀԷ°ªµéÀÌ È¯°æ º¯¼öÀÇ ÇϳªÀÎ QUERY_STRING¿¡ µé¾î°¡¼­ Àü´ÞµÈ´Ù. CGI ½ºÅ©¸³Æ®´Â ±× QUERY_STRING¿¡ µé¾î ÀÖ´Â °ªÀ» Àд´Ù.

·get METHOD´Â FORM ű׸¦ »ç¿ëÇÏÁö ¾Ê°í ¹Ù·Î URL¿¡ Àμö¸¦ ÷°¡ÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀԷ°ªÀÌ ¸¹Áö ¾Ê°Å³ª º¸¾ÈÀÌ ÇÊ¿ä¾ø´Â °æ¿ì¿¡ »ç¿ëÇÏ´Â µ¥ÀÌÅÍ Àü´Þ ¹æ½ÄÀÌ´Ù.

 

¡ß POST ¹æ½Ä

·POST ¹æ½ÄÀº STDINÀ» ÀÌ¿ëÇϹǷΠµ¥ÀÌÅÍ ¾ç¿¡ Á¦ÇÑÀÌ ¾øÀ¸¸ç ȯ°æ º¯¼öµéÀº STDIN°ú ÇÔ²² Àü´ÞµÈ´Ù. ÀԷ°ªµéÀÌ ÀÎÄÚµùµÇ¾î ³Ñ¾î¿À±â ¶§¹®¿¡ CGI¿¡¼­ ±× °ªµéÀ» µðÄÚµùÇØ¾ß ÇÑ´Ù.

·ÀԷ°ªÀÌ ³ëÃâµÇÁö ¾Ê±â ¶§¹®¿¡ º¸¾È¼ºÀÌ ³ô¾Æ ¼±È£ÇÏ´Â ¹æ½ÄÀÌ´Ù

 

¨ì ȯ°æ º¯¼ö

 

¡ß ¼­¹ö¿¡ ´ëÇÑ HTTP Á¤º¸¸¦ ³ªÅ¸³»´Â ȯ°æ º¯¼ö

 

 

¡ß Ŭ¶óÀ̾ðÆ®ÀÇ ¿äû¿¡ µû¸¥ ȯ°æ º¯¼ö

 

 

¨í CGI ÇÁ·Î±×·¡¹Ö

 

¡ß ÆÞ(Perl : Practical Extaction and Report Language)À» ÀÌ¿ëÇÑ CGI ÇÁ·Î±×·¡¹Ö

·¸» ±×´ë·Î ÅØ½ºÆ® ÆÄÀÏÀ» °Ë»öÇÏ¿© ½Ç¿ëÀûÀÎ Á¤º¸¸¦ ÃßÃâ(Extract)Çϰí, ±× Á¤º¸¸¦ °¡°øÇÏ¿© º¸°í(Report)ÇÏ´Â µ¥ ¾ÆÁÖ ÀûÀýÇÑ ¾ð¾îÀÌ´Ù.

·C¿Í À¯»çÇÑ ¹®¹ý ÇüŸ¦ ¶ç¸é¼­µµ C³ª sed, awk, sh ¼Ð ½ºÅ©¸³Æ®ÀÇ °¡Àå ÁÁÀº Ư¼ºµéÀ» °áÇÕÇÑ ¾ð¾îÀÌ´Ù.

·ÀÎÅÍÇÁ¸®ÅÍ ¾ð¾îÀ̸ç À̽ļºÀÌ ¶Ù¾î³ª´Ù. ÀÎÅͳݻ󿡼­ ¹«·á·Î ÀÚ½ÅÀÇ ½Ã½ºÅÛ¿¡ ¸Â´Â ÆÞ ÀÎÅÍÇÁ¸®Å͸¦ ±¸ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ºñ¿ë¸é¿¡¼­µµ Å« ÀåÁ¡ÀÌ ÀÖ´Ù.

·ÆÞÀº ÅØ½ºÆ® ÆÄÀÏÀÇ Ã³¸®¿Í ¹®ÀÚ¿­ 󸮿¡¼­ ¾ÆÁÖ ¶Ù¾î³ª¹Ç·Î HTML ¹®¼­¸¦ ´Ù·ç±â¿¡ ÀûÇÕÇÑ ¾ð¾îÀÌ´Ù.

 

¡ß ¼Ð ½ºÅ©¸³Æ®¸¦ ÀÌ¿ëÇÑ CGI ÇÁ·Î±×·¡¹Ö

·¼Ð»óÀÇ ¸í·ÉÀ» ¼öÇàÇÏ´Â ¹æ¹ýÀ¸·Î, À¯´Ð½ºÀÇ ¼Ð ½ºÅ©¸³Æ®´Â µµ½º¿¡¼­ º¸¸é ÀÏÁ¾ÀÇ ¹èÄ¡ ÆÄÀϰú ºñ½ÁÇÑ ±¸Á¶·Î µÇ¾î ÀÖ´Ù. °£´ÜÇÑ Ãâ·Â Á¦¾î¸¦ ÅëÇØ ÇÊ¿äÇÑ ÇÔ¼ö¸¦ ºÒ·¯ ¾µ ¼ö ÀÖ´Ù.

·´ÜÁ¡ : ´ë·®ÀÇ µ¥ÀÌÅÍ ¼Õ½ÇÀÌ ¿ì·ÁµÇ°í, ÆÞÀ̳ª Cº¸´Ù´Â ÀÛ¼ºÇÏ±â ¾î·Æ´Ù.

 

¡ß C ¾ð¾î¸¦ ÀÌ¿ëÇÑ CGI ÇÁ·Î±×·¡¹Ö

·ÀϹÝÀûÀ¸·Î C´Â °í±Þ ¾ð¾îÀ̸鼭, Àú±Þ ¾ð¾îÀÇ Æ¯Â¡À» °¡Áö°í À־ ¾î´À °è¿­ÀÇ ÄÄÇ»ÅÍ¶óµµ Àß À̽ÄÇÒ ¼ö Àִ Ư¡À» Áö´Ñ´Ù.

·ÀåÁ¡ : ´Ù¸¥ ÇÁ·Î±×·¥¿¡ ºñÇØ ó¸® ´É·ÂÀÌ ºü¸£´Ù.

·´ÜÁ¡ : ÄÄÆÄÀÏ ¾ð¾îÀÎ C ¾ð¾î´Â ÆÞ¿¡ ºñÇØ ¼öÁ¤ÀÌ ¾î·Æ´Ù.