ÀüÀÚ»ó°Å·¡
½Ã½ºÅÛ ¿î¿µ ¹× °ü¸®
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 ¾ð¾î´Â ÆÞ¿¡ ºñÇØ ¼öÁ¤ÀÌ ¾î·Æ´Ù.