LINUX GAZETTE
...¸®´ª½º¸¦ Á» ´õ Àç¹ÌÀÖ°Ô!
TUX ½ÃÀÛÇϱâ
By Vinayak Hegde

Çѱ۹ø¿ª ÀüÁ¤È£

ÀÌ ±ÛÀº Çѱ۹ø¿ªÆÇÀÔ´Ï´Ù. ¿ø¹®Àº ¿©±â¿¡¼­ º¼ ¼ö ÀÖ½À´Ï´Ù.

TUX - "À¥¼­¹ö" ¸¸³ª±â

¸®´ª½ºÀÇ Çà¿îÀÇ ¸¶½ºÄÚÆ®ÀÎ Tux Æë±Ï¿¡ ´ëÇÑ ±ÛÀ» ±â´ëÇß´Ù¸é ½Ç¸ÁÇßÀ» °ÍÀÌ´Ù. ±×·¯³ª ±â´Ù·ÁºÁ¶ó: TUX À¥¼­¹ö°¡ ¼º´É¸é¿¡¼­ ¹«¾ùÀ» ÇÒ ¼ö ÀÖ´ÂÁö Àо¸é ¸¸Á·ÇÒ °ÍÀÌ´Ù. ¶Ç, ¹«¾ùÀΰ¡ ÇØÅ· ȤÀº °¡Áö°í ³î °ÍÀ» ¹ß°ßÇÏ°Ô µÉÁöµµ ¸ð¸¥´Ù. ÀÌ ±ÛÀº ¸®´ª½º Ä¿³Î¿¡ Æ÷ÇÔµÈ À¥¼­¹ö TUX¿¡ ´ëÇÑ ±ÛÀÌ´Ù.

TUXÀ̶õ À̸§Àº 'Threaded linUX webserver'¿¡¼­ ³ª¿Ô´Ù. TUXÀº Red Hat¿¡¼­ ¸¸µé¾ú°í, Ä¿³Î 2.4¿¡ ±â¹ÝÇÑ´Ù. TUXÀº Ä¿³Î¿¡ Æ÷ÇÔµÈ HTTP ÇÏÀ§½Ã½ºÅÛÀÌ´Ù. ÁüÀÛÇßµíÀÌ TUXÀº ÇöÀç GNU GPL·Î ¹ßÇ¥µÇÀÖ´Ù. °ø°³ ¼ÒÇÁÆ®¿þ¾î ÀüÅë¿¡ µû¶ó ƯÁ¤ ¸ñÀû¿¡ ¾Ë¸Â°Ô ÀÚÀ¯·ÎÀÌ ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù. TUXÀ» ¸ñÀû¿¡ ºÎÇÕÇÏ°Ô ¸¸µå´Â ¹æ¹ýÁß Çϳª´Â TUX ¸ðµâÀ» ÀÛ¼ºÇÏ´Â °ÍÀÌ´Ù. TUX ¸ðµâÀº »ç¿ëÀÚ°ø°£(user-space) ȤÀº Ä¿³Î°ø°£(kernel-space) µÑ ¸ðµÎ °¡´ÉÇÏ´Ù. TUXÀº ¸®´ª½º¿¡¼­ °í¼º´É À¥¼­ºñ½º¸¦ À§ÇØ ¸¸µé¾îÁ³´Ù. ¸®´ª½º°¡ À¥¼­¹ö ½ÃÀå¿¡¼­ ¸Å¿ì À¯¸íÇϱ⶧¹®¿¡ À̴ ƯÈ÷ Áß¿äÇÏ´Ù.

TUXÀº ¾ÆÆÄÄ¡¿Í °°ÀÌ ±â´ÉÀÌ ¸¹Áö ¾Ê°í, ÇÑ°èµµ ¸¹´Ù. ±×·³¿¡µµ ºÒ±¸ÇÏ°í TUXÀº HTTP/1.1 ¿¬°áÁö¼Ó (keep-alive), ÆÄÀÌÇÁ¶óÀÌ´×(pipelining), CGI ½ÇÇà, ·Î±×, °¡»óÈ£½ºÆ®, ¿©·¯ ¸ðµâ µî ¸¹Àº À¥¼­¹ö ±â´ÉÀ» Áö¿øÇÏ´Â HTTP/1.1¿¡ ¿Ïº®È÷ ȣȯµÇ´Â À¥¼­¹ö´Ù. ÇöÀç TUXÀº °ø½ÄÀûÀ¸·Î Red Hat Content Accelerator (RHCA)¶ó°í ¾Ë·ÁÁ®ÀÖ´Ù.

TUXÀº ¹«½¼ ÀÏÀ» Çϴ°¡ ?

¿À´Ã³¯ À¥¿¡¼­ Á¦°øµÇ´Â ¸¹Àº ³»¿ëµéÀÌ µ¿ÀûÀ¸·Î »ý¼ºµÇÁö¸¸ Á¤ÀûÀÎ °Íµµ ¸¹´Ù. Á¤ÀûÀÎ À¥ÆäÀÌÁö³ª À̹ÌÁö°¡ ±× ¿¹ÀÌ´Ù. ±×·±µ¥ ¾ÆÆÄÄ¡¿Í °°Àº »ç¿ëÀÚ°ø°£ À¥¼­¹ö°¡ ÀÌ·± Á¤ÀûÀÎ ³»¿ëÀ» ¼­ºñ½ºÇϱâ À§Çؼ­´Â ¿©·¯ ½Ã½ºÅÛÈ£ÃâÀ» »ç¿ëÇؾßÇϹǷΠºÎ´ãÀÌ µÈ´Ù. ÇÁ·Î±×·¥ÀÌ Ä¿³Î°ø°£°ú »ç¿ëÀÚ°ø°£ »çÀÌ¿¡¼­ ÀÚÁÖ ¹®¸Æº¯È¯(context switch)À» ÇÏ¸é ¼º´ÉÀÌ »ó´çÈ÷ ¶³¾îÁø´Ù. ÀÌ °æ¿ì TUXÀÌ ÇØ°áÃ¥ÀÌ´Ù. TUXÀº Ä¿³Î°ú °°ÀÌ ÄÄÆÄÀϵǰųª ¸ðµâ·Î ¸¸µé¾î µ¿ÀûÀ¸·Î ÀоîµéÀÏ ¼ö ÀÖ´Ù. ù¹ø° ¹æ¹ýÀº À¥¼­ºñ½º Àü¿ë ¼­¹ö¿¡ ÀûÇÕÇÏ´Ù. ¸ðµâ·Î ÄÄÆÄÀÏÇÏ¸é µ¿ÀûÀ¸·Î Áý¾î³Ö°í »©¼­, ¼­ºñ½º¸¦ ½ÃÀÛÇÏ°í Áß´ÜÇÒ ¼ö ÀÖ´Ù. ÀÌ ¹æ¹ýÀº ¿©·¯ »óȲ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

TUXÀº ±âº»ÀûÀ¸·Î Á¤ÀûÀÎ ³»¿ëÀ» ¼­ºñ½ºÇϱâÀ§ÇØ »ç¿ëÇÑ´Ù. µ¿ÀûÀÎ ³»¿ëÀ» »ý¼ºÇÏ°í ¼­ºñ½ºÇÏ´Â ÀÏÀº ¾ÆÆÄÄ¡¿Í °°Àº µÞ´Ü(back-end) À¥¼­¹ö¿¡°Ô ¸º±ä´Ù. ÇöÀç »õ·Î¿î TUX ¹öÀüÀº µ¿ÀûÀÎ ³»¿ëÀ» ij½¬ÇÒ ¼ö ÀÖ´Ù. TUX ¸ðµâÀ» °¡Áö°í ÆäÀÌÁö ij½¬¸¦ »ç¿ëÇÏ¿© ÀúÀåµÇ´Â "°´Ã¼"¸¦ ¸¸µé ¼ö ÀÖ´Ù. µ¿ÀûÀÎ ÀÚ·á¿¡ ´ëÇÑ ¿äû¿¡ ÀÀ´äÇϱâÀ§ÇØ TUX ¸ðµâÀº µ¿ÀûÀ¸·Î »ý¼ºµÈ ÀÚ·á¿Í ÀÌ¹Ì »ý¼ºÇÑ Ä³½¬µÈ °´Ã¼¸¦ ¼¯¾î¼­ º¸³¾ ¼ö ÀÖ´Ù. ±×·¡¼­ ¿äûÀÇ ´ëºÎºÐÀÎ ´Ü¼øÇÑ "³×Æ®¿÷-º¹»ç" ÀÛ¾÷Àº TUX°¡ È¿À²ÀûÀ¸·Î ó¸®ÇÑ´Ù. »õ·Î¿î TUX ¹öÀüÀº TUX 1.0ÀÇ Àӽà ¹öÆÛ´ë½Å º¹»ç¾ø´Â ºí·Ï ÀÔÃâ·Â(zero copy block IO)À» »ç¿ëÇÑ´Ù. ¶Ç, TUXÀÇ °¡»óÈ£½ºÆ® Áö¿øÀÌ È®ÀåµÇ¾î ¼­ºñ½ºÇÒ ¼ö ÀÖ´Â °¡»óÈ£½ºÆ® °³¼ö´Â µð½ºÅ© °ø°£°ú RAM¶§¹®¿¡¸¸ Á¦ÇѵȴÙ.

TUX ½ÃÀÛÇϱâ

ÀÌÁ¦ TUXÀÌ ¹«¾ùÀ» ÇÒ ¼ö ÀÖ´ÂÁö ¾Ë¾Ò´Ù. ÀÌÁ¦ TUXÀ» ¼³Ä¡ÇÏ°í ¼³Á¤Çغ¸ÀÚ. ´ÙÀ½¿¡ ³ª¿À´Â ¸ðµç ³»¿ëÀº Red Hat 7.2ÀÇ TUX-2.1.0-2¿¡¼­ Å×½ºÆ®µÇ¾ú´Ù. ½±°Ô »ç¿ëÇÒ ¼ö ÀÖ°í Àͼ÷Çϱ⶧¹®¿¡ »ç¿ëÀÚ°ø°£ À¥µ¥¸óÀ¸·Î ¾ÆÆÄÄ¡¸¦ »ç¿ëÇß´Ù.

1´Ü°è. TUX ¼³Ä¡Çϱâ

´ÙÀ½ ¸í·É¾î·Î tuxÀÌ ¼³Ä¡µÇÀÖ´ÂÁö ¾Ë¾ÆºÁ¶ó :-

# rpm -q tux

¾Æ·¡¿Í ºñ½ÁÇÑ ¹®±¸Áß Çϳª°¡ Ãâ·ÂµÉ °ÍÀÌ´Ù :

  1. tux-2.1.0-2 (TUXÀÌ ¼³Ä¡µÇÀÖ°í, ¹öÀü ¹øÈ£°¡ Ãâ·ÂµÈ´Ù)
  2. package tux is not installed (¸íÈ®ÇÏ´Ù!!)
TUX ¼³Ä¡°¡ ¾ÈµÇÀÖ´Ù¸é rpmÀ» (ȤÀº ¼Ò½º ÆÐÅ°Áö) ´Ù¿î¹Þ¾Æ¼­ ´ÙÀ½°ú °°ÀÌ ¼³Ä¡ÇÑ´Ù:
  1. RPM ÆÐÅ°ÁöÀÇ °æ¿ì
    # rpm -ivh tux-2.1.0-2.i386.rpm 
    

  2. ¼Ò½º ÆÐÅ°ÁöÀÇ °æ¿ì
    Ä¿³ÎÀ» ÆÐÄ¡ÇÑ´Ù
    # patch -p0 < tux2-full-2.4.10
    # make oldconfig (¿©±â¼­ tuxÀ» È°¼ºÈ­ÇÏ°í, Ä¿³ÎÀ» ÀçÄÄÆÄÀÏÇÏ¿© ¼³Ä¡ÇÑ´Ù)
    
    »ç¿ëÀÚ°ø°£ µµ±¸¸¦ ¼³Ä¡ÇÑ´Ù
    # tar xzvf tux-2.1.0.tar.gz 
    # cd tux-2.0.25 
    # make 
    # make install
    

2´Ü°è. ±âº» ¼³Á¤Çϱâ

µð·ºÅ丮 /var/www/htmlÀ» (¿øÇÑ´Ù¸é ´Ù¸¥ µð·ºÅ丮¸¦) ¸¸µé°í, /etc/sysconfig/tux¿¡¼­ DOCROOT °ªÀ» ¼öÁ¤ÇÏ¿© ÀÌ µð·ºÅ丮¸¦ TUXÀÇ root µð·ºÅ丮·Î ¸¸µç´Ù. ¶Ç CGI ½ºÅ©¸³Æ®°¡ ÀúÀåµÉ °æ·Î¸¦ CGIROOT·Î ¼³Á¤ÇÑ´Ù. TUXTHREADS º¯¼öµµ ÀûÀýÇÑ ¼ö·Î ¼³Á¤ÇÑ´Ù. root µð·ºÅ丮¿¡ index.htmlÀ» ¸¸µç´Ù. ÀÌ ÆÄÀÏÀº ³ªÁß¿¡ Å×½ºÆ®¿ëÀ¸·Î »ç¿ëÇÑ´Ù.

3´Ü°è. TUX ½ÃÀÛÇϱâ

(°ü¸®ÀÚ ±ÇÇÑÀ¸·Î) ´ÙÀ½ ¸í·É¾î´Â TUXÀ» ½ÃÀÛÇÑ´Ù.

# service tux start (Red Hat ½Ã½ºÅÛÀÇ °æ¿ì)
# ./tux.init start (Red Hat ½Ã½ºÅÛÀÌ ¾Æ´Ñ °æ¿ì)
# lsmod
Module	size 	Used by
tux 	75568	0	
....
....
ÀÌÁ¦ ºê¶ó¿ìÀú·Î localhost¿¡ Á¢¼ÓÇÏ¸é ¾Õ¿¡¼­ ¸¸µç index.html ÆäÀÌÁö°¡ º¸ÀÏ °ÍÀÌ´Ù. ¾Æ´Ï¶ó¸é ¹«¾ùÀΰ¡ À߸øµÇ¾ú°Å³ª ¼³Á¤ÀÌ ¿Ã¹Ù¸£Áö ¾ÊÀº °æ¿ì´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº 8´Ü°è¸¦ Âü°íÇ϶ó.
# lynx localhost

4´Ü°è. ·Î±× ³²±â±â

TUXÀº ±âº»ÀûÀ¸·Î ·Î±×¸¦ ³²±âÁö¾Ê´Â´Ù. ·Î±×¿Í referrer ·Î±×¸¦ ³²±â·Á¸é ¾Æ·¡ ¸í·É¾î¸¦ ½ÇÇàÇÑ´Ù.

# echo 1 > /proc/sys/net/tux/logging
# echo 1 > /proc/sys/net/tux/referer_logging
# cat /proc/sys/net/tux/logfile
/var/log/tux (ÀÌ°ÍÀÌ ±âº» ·Î±×ÆÄÀÏ)

¸Å¿äû¸¶´Ù TUXÀº ¿äûÀÚÀÇ ÁÖ¼Ò, ÃÖ¼ÒÇÑ ÃÊ´ÜÀ§±îÁö Á¤È®ÇÑ ³¯Â¥¿Í ½Ã°£, ¿äûÇÑ ³»¿ë, Àü¼ÛÇÑ ÆÄÀÏ Å©±â, ¸¶Áö¸·À¸·Î ¿äûÀÇ »óŸ¦ ·Î±×¿¡ ³²±ä´Ù. TUXÀÇ ·Î±×ÆÄÀÏÀº (À§¿¡¼­ º») /var/log/tux¿¡ ÀÌÁøÇü½ÄÀ¸·Î ÀúÀåµÈ´Ù. ÀÌÁøÇü½ÄÀÇ ·Î±×ÆÄÀÏÀº Ç¥ÁØ ASCII ·Î±×ÆÄÀϺ¸´Ù ¾à 50% Á¤µµ ÀÛ´Ù. ·Î±×ÆÄÀÏÀ» º¸·Á¸é ´ÙÀ½ ¸í·É¾î¸¦ »ç¿ëÇÑ´Ù

# tux2w3c /var/log/tux
127.0.0.1 - - Wed Nov 20 00:22:24 2002 "GET /manual/sections.html HTTP/1.1" - 5523 200
127.0.0.1 - - Thu Nov 21 01:36:55 2002 "GET / HTTP/1.0" - 2890 200
127.0.0.1 - - Thu Nov 21 01:37:20 2002 "GET /manual/index.html HTTP/1.0" - 5557 200
127.0.0.1 - - Thu Nov 21 01:37:24 2002 "GET /manual/mod/index-bytype.html HTTP/1.0" - 6186 200
tux2w3c ÇÁ·Î±×·¥Àº ÀÌÁø·Î±×ÆÄÀÏÀ» W3C Ç¥ÁØ À¥¼­¹ö ·Î±×ÆÄÀÏ·Î º¯È¯ÇÑ´Ù.

5´Ü°è. Gzip ¾ÐÃàÇϱâ

ÀÌ¹Ì TUXÀÌ ÀÀ´ä½Ã°£À» ÁÙÀδٴ °ÍÀ» ¾È´Ù. Gzip ¾ÐÃàÀ» »ç¿ëÇÏ¿© ´Ù¿î·Îµå ½Ã°£À» ÁÙÀÌ°í ³×Æ®¿÷ Àü¿ë·®À» ÁÙÀÏ ¼öµµ ÀÖ´Ù. ±×·¯³ª ÀÌ ±â´ÉÀ» »ç¿ëÇÏ·Á¸é Ŭ¶óÀ̾ðÆ®°¡ Gzip ¾ÐÃàÀ» Áö¿øÇØ¾ß ÇÑ´Ù. TUXÀº ±âº»ÀûÀ¸·Î ÀÚ·á ¾ÐÃàÀ» ÇÏÁö¾Ê´Â´Ù. ÀڷḦ ¾ÐÃàÇÏ·Á¸é ´ÙÀ½°ú °°´Ù:

# echo 1 > /proc/sys/net/tux/compression
½ÃÀÛÇÒ ¶§¸¶´Ù Àû¿ëÇÏ·Á¸é ´ÙÀ½ ÁÙÀ» /etc/sysctl.conf¿¡ Ãß°¡ÇÑ´Ù
net.tux.compression=1    
¶Ç, ¼­ºñ½ºÇÏ·Á´Â ÆäÀÌÁö¿Í °°Àº µð·ºÅ丮¿¡ È®ÀåÀÚ°¡ .gzÀÎ Gzip ÆÄÀÏÀÌ ÀÖ¾î¾ß ÇÑ´Ù.

6´Ü°è. TUX °¡Áö°í ³î±â

¾ÆÁ÷ ¼³Á¤ÀÌ ¾È³¡³µ´Ù. ¸î¸î Èï¹Ì·Î¿î ±â´ÉµéÀÌ ³²¾ÆÀÖ´Ù. (ÀϺδ RHCA v2.2¿¡¼­¸¸ °¡´ÉÇÏ´Ù.)

TUX À¥¼­¹ö ¼º´ÉÀ» ÃÖ´ëÈ­ÇϱâÀ§ÇØ ¼³Á¤ÇÒ ¼ö ÀÖ´Â Ç׸ñµéÀÌ ´õ¸¹ÀÌ ÀÖ´Ù. ¾Ë¾Æº¸°í ¿ëµµ¿¡ ¸Â°Ô ¼öÁ¤Ç϶ó.

7´Ü°è. TUX¿Í °°ÀÌ »ç¿ëÇÒ ¾ÆÆÄÄ¡ ¼³Á¤Çϱâ

ÀÌ¹Ì ¸»ÇßµíÀÌ TUXÀ» Æ÷Æ® 80À» (±âº» http Æ÷Æ®) »ç¿ëÇÏ´Â ¾Õ´Ü(front-end) À¥¼­¹ö·Î »ç¿ëÇÏ°í, Æ÷Æ® 8080¿¡ TUXÀÌ ÀÌÇØÇÏÁö ¸øÇÏ´Â ¿äûÀ» (º¸Åë PHP ÆäÀÌÁö¿Í °°ÀÌ µ¿ÀûÀ¸·Î »ý¼ºÇÏ´Â ³»¿ë) ó¸®ÇÒ µÞ´Ü À¥¼­¹ö¸¦ (¿©±â¼­´Â ¾ÆÆÄÄ¡¸¦ ¿¹·Î µç´Ù) »ç¿ëÇϱæ ÃßõÇÑ´Ù. ÀÌ °æ¿ì ¾ÆÆÄÄ¡ À¥¼­¹öÀÇ httpd.conf ÆÄÀÏÀ» ¼öÁ¤ÇØ¾ß ÇÑ´Ù.

´ÙÀ½ ÁÙÀ»
Port 80 

´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù
Port 8080 (¾ÆÆÄÄ¡°¡ ±â´Ù¸± Æ÷Æ®)
¶Ç, »ç¿ëÀÚ°¡ TUXÀ» ÇÇÇØ Á÷Á¢ ¾ÆÆÄÄ¡¿¡ Á¢±ÙÇÏ´Â °ÍÀ» ¸·À¸·Á¸é ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù. º¸¾È»ó ÀÌÀ¯·Î ÇÊ¿äÇÒ ¼ö ÀÖ´Ù.
´ÙÀ½ ÁÙÀ»
BindAddress *

´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù
BindAddress 127.0.0.1 (loopback ÁÖ¼Ò)
¸¶Áö¸·À¸·Î httpd¸¦ Àç½ÃÀÛÇÑ´Ù
# service httpd restart

8´Ü°è. TUX µð¹ö±ë°ú Àç½ÃÀÛ

´ÙÀ½ ¸í·É¾î·Î TUXÀ» Áß´ÜÇÏ°í Àç½ÃÀÛÇÒ ¼ö ÀÖ´Ù:

# service tux stop (Red Hat ½Ã½ºÅÛÀÇ °æ¿ì)
ȤÀº
# ./tux-init stop (Red Hat ½Ã½ºÅÛÀÌ ¾Æ´Ñ °æ¿ì)

# service tux restart
ȤÀº
# ./tux-init restart
µð¹ö±ëÀ» À§ÇØ /usr/share/doc/tux-version/ µð·ºÅ丮¿¡ ÀÖ´Â gettuxconfig ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. SMP ½Ã½ºÅÛÀ» »ç¿ëÇÑ´Ù¸é ¸ðµç ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º°¡ checkbindings ½ºÅ©¸³Æ®¸¦ »ç¿ëÇϵµ·Ï ¼³Á¤µÇÀÖ´ÂÁö È®ÀÎÇ϶ó. ÀÌ ÆÄÀϵµ °°Àº µð·ºÅ丮¿¡ ÀÖ´Ù.

°á·Ð

ÀÌ¹Ì ¸»ÇßµíÀÌ TUXÀº µ¿ÀÛÀÇ ÀϺθ¦ »ç¿ëÀÚ°ø°£ ´ë½Å Ä¿³Î°ø°£¿¡ µÎ¾î¼­ À¥¼­¹öÀÇ È¿À²¼ºÀ» ³ôÀδÙ. ±×·¡¼­ ´õ ³ªÀº ¼º´ÉÀ» ¾ò°í, ¼­¹ö ÀÚ¿øÀ» ´õ Àß È°¿ëÇÏ°Ô µÈ´Ù. TUXÀº ¸¹Àº ºÎºÐÀ» ¼³Á¤ÇÒ ¼ö ÀÖ°í, Èï¹Ì·Î¿î ±â´ÉÀÌ ¸¹´Ù. ÀÌ ±ÛÀÌ Àç¹ÌÀÖ¾ú±æ ¹Ù¶õ´Ù. Áñ°Å¿î ÇØÅ·!!

Âü°íÀÚ·á


Copyright © 2002, Vinayak Hegde. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 85 of Linux Gazette, December 2002