(AWS) Apache(Web Server)¿Í Tomcat ¿¬µ¿Çϱâ
Apache Web Server¸¦ Front¿¡ µÎ°í ±× µÚ¿¡ TomcatÀ» ¿¬µ¿Çؼ ¼ºñ½º¸¦ ÇÏ´Â ÇüÅ´ ½ÇÁ¦ »ó¿ë ¼ºñ½º¿¡¼ ¸¹ÀÌ Àû¿ëÇÏ´Â ÇüÅÂÀÌÀÌ´Ù. Áö³ Æ÷½ºÆÿ¡¼ Apache Web Server ¼³Ä¡ ¹æ¹ý°ú TomcatÀÇ ¼³Ä¡ ¹æ¹ýÀ» ´Ù·ç¾úÀ¸¹Ç·Î À̹ø Æ÷½ºÆÃÀº µÎ ¼¹ö¸¦ ¿¬µ¿ÇÏ´Â ¹ýÀ» ¼³¸íÇϵµ·Ï ÇÏ°Ú´Ù.
ºê¶ó¿ìÀú¸¦ ¶ç¿ö¼ ÇöÀç µÎ ¼¹ö°¡ ¼³Ä¡µÈ EC2 ÀνºÅϽºÀÇ Public IP·Î ¿¬°áÀ» Çغ¸¸é 80 Æ÷Æ®´Â ApacheÀÇ Å×½ºÆ® ÆäÀÌÁö°¡ º¸ÀÏ °ÍÀÌ°í 8080 Æ÷Æ®´Â TomcatÀÇ Å×½ºÆ® ÆäÀÌÁö°¡ º¸ÀÏ °ÍÀÌ´Ù. ÀÌÁ¦ µÎ ¼¹öÀÇ ¿¬µ¿ ÀÛ¾÷À» ¿Ï·áÇÏ°í ³ª¸é 80Æ÷Æ®·Î Á¢¼ÓÇßÀ» ¶§ TomcatÀÇ Å×½ºÆ® ÆäÀÌÁö°¡ º¸ÀÌ°Ô µÈ´Ù.
Apache¿Í TomcatÀ» ¿¬µ¿ÇÒ ¶§´Â mod_jk ¶ó´Â Tomcat Connector¸¦ »ç¿ëÇÑ´Ù. Tomcat Å×½ºÆ® ÆäÀÌÁö ÇÏ´Ü ¿ÞÂÊÀÇ Tomcat Connectors ¸µÅ©¸¦ ´·¯º¸ÀÚ.
¸µÅ©¸¦ µû¶ó µé¾î°¡¸é ¾Æ·¡ ±×¸²°ú °°Àº ÆäÀÌÁö°¡ º¸ÀδÙ. Binary ¹èÆ÷ÀÇ ¸µÅ©¸¦ ´·¯º¸¸é ¾Ë°ÚÁö¸¸ Binary ÇüÅÂÀÇ ¹èÆ÷´Â Windows¸¸ Áö¿øÇÑ´Ù. Áö±ÝÀº Amazon Linux¿¡ ¼³Ä¡ÇÒ °ÍÀ̹ǷΠSource ÇüÅ·Π¹Þ¾Æ¼ ºôµåÇÒ °ÍÀÌ´Ù. tar.gz ÇüÅ·Π¹èÆ÷ÇÏ´Â ÆÄÀÏÀ» ¹Þµµ·Ï ÇÏÀÚ.
·ÎÄÿ¡ Source ÆÄÀÏÀ» ¹Þ¾ÒÀ¸¸é EC2 ÀνºÅϽº¿¡ º¹»çÇØ³Ö°í ºôµå¸¦ ÇØ¾ß ÇϹǷΠ¾Æ·¡ ¸í·ÉÀ¸·Î ÆÄÀÏÀ» ¼¹ö·Î º¹»çÇØ ³Öµµ·Ï ÇÑ´Ù.
$ scp -i aws_keypair.pem tomcat-connectors-1.2.xx-src.tar.gz ec2-user@{Public IP}:~/
º¹»ç°¡ µÇ¾úÀ¸¸é ÀÌÁ¦ SSH·Î EC2 ÀνºÅϽº¿¡ Á¢¼ÓÀ» Çϵµ·Ï ÇÏÀÚ. Á¢¼ÓÀÌ µÇ¾úÀ¸¸é ÀÚ½ÅÀÇ home Æú´õ¿¡ ¹Ù·Î À§¿¡¼ º¹»çÇÑ ÆÄÀÏÀÌ ÀÖÀ» °ÍÀÌ´Ù. ¾Æ·¡ ¸í·ÉÀ¸·Î ¾ÐÃàÀ» Ç®¾î³õµµ·Ï ÇÑ´Ù.
$ tar xvfz tomcat-connectors-1.2.xx-src.tar.gz
ÀÌÁ¦ mod_jk¸¦ ºôµåÇØ¾ß ÇÏÁö¸¸ Amazon Linux 2 AMI·Î »ý¼ºÇÑ ÀνºÅϽº¿¡´Â gcc ÆÐÅ°Áö°¡ ¼³Ä¡µÇ¾îÀÖÁö ¾Ê´Ù. mod_jk¸¦ ºôµåÇϴµ¥ ¹Ýµå½Ã ÇÊ¿äÇϹǷΠ¸ÕÀú gcc ÆÐÅ°Áö¸¦ ¼³Ä¡ÇÑ´Ù. ¾Æ·¡ ¸í·ÉÀ¸·Î gcc ÆÐÅ°Áö¸¦ ¼³Ä¡ÇÒ ¼ö ÀÖ´Ù.
$ sudo yum install gcc
±× ´ÙÀ½ mod_jk¸¦ ºôµåÇÏ·Á¸é httpd-devel ÆÐÅ°Áö°¡ ¼³Ä¡ µÇ¾îÀÖ¾î¾ß ÇÑ´Ù. ¸¸¾à ¼³Ä¡ÇÏÁö ¾Ê¾Ò´Ù¸é Áö³ Æ÷½ºÆÃÀ» Âü°íÇÏ±æ ¹Ù¶õ´Ù. ¾Æ·¡ ¸í·ÉÀ¸·Î ¼³Ä¡ÇÒ ¼ö ÀÖ´Ù.
$ sudo yum install httpd-devel
httpd-devel ÆÐÅ°Áö¸¦ ¼³Ä¡Çϸé apxs°¡ ¼³Ä¡µÈ´Ù. ´ÙÀ½ ¸í·ÉÀ¸·Î apxsÀÇ À§Ä¡¸¦ ¾Ë¾Æº¸ÀÚ.
$ which apxs /usr/bin/apxs
ȸ鿡 Ãâ·ÂµÈ apxsÀÇ À§Ä¡¸¦ Àß ±â¾ïÇÑ ÈÄ ¼Ò½º Æú´õ ¾ÈÀÇ native Æú´õ·Î À̵¿ÇÏ¿© ºôµå & ¼³Ä¡¸¦ Çغ¸µµ·Ï ÇÏÀÚ. ¾Æ·¡ ¸í·ÉÀ» ½ÇÇàÇϵµ·Ï ÇÑ´Ù.
$ cd tomcat-connectors-1.2.xx-src $ cd native $ ./configure --with-apxs=/usr/bin/apxs $ make $ sudo make install
configure¸¦ ½ÇÇàÇÒ ¶§ apxsÀÇ À§Ä¡¸¦ Á¤È®È÷ ÁöÁ¤Çϵµ·Ï ÇÏ°í ¸¶Áö¸· make install ¸í·ÉÀº root ±ÇÇÑÀ¸·Î ½ÇÇàµÇ¾î¾ß Á¤»óÀûÀ¸·Î ¼³Ä¡°¡ µÇ¹Ç·Î ÁÖÀÇÇϵµ·Ï ÇÑ´Ù.
º° ¹®Á¦°¡ ¾ø´Ù¸é mod_jk ¸ðµâÀÇ ¼³Ä¡´Â ¿Ï·á°¡ µÇ¾ú´Ù. ȨÆú´õ¿¡ ÀÖ´Â mod_jkÀÇ ¼Ò½º ÆÄÀϵéÀº ÀÌÁ¦ »èÁ¦Çصµ ¹«¹æÇÏ´Ù.
ÀÌÁ¦ mod_jkÀÇ ¼³Ä¡°¡ ¿Ï·áµÇ¾úÀ¸´Ï Apache¿Í TomcatÀÇ ¼³Á¤À» ¼öÁ¤ÇÒ Â÷·ÊÀÌ´Ù. TomcatÂÊ ¼³Á¤À» ¸ÕÀú º¸µµ·Ï ÇÏ°Ú´Ù. TomcatÀÇ ±âº» ¼³Ä¡ »óÅ¿¡¼ ÀÌ¹Ì AJP/1.3 ¿äûÀº 8009 Æ÷Æ®·Î ¹Þµµ·Ï µÇ¾î ÀÖÀ» °ÍÀÌ´Ù. /etc/tomcat/server.xml ÆÄÀÏÀ» ¿¾î¼ AJP/1.3 Æ÷·ÎÅäÄÝÀ» ó¸®ÇÏ´Â Connector ¼³Á¤ÀÌ µÇ¾îÀÖ´Â Áö È®ÀÎÀ» Çغ¸°í ¾ÈµÇ¾îÀÖÀ¸¸é ¼³Á¤ÇØ ÁÖµµ·Ï ÇÏÀÚ.
... <!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectport="8443"> ...
Ãß°¡ÀûÀÎ ¼³Á¤ÀÌ µÇ¾îÀְųª ´Ù¸¥ ¼³Á¤ÀÌ ÇÊ¿äÇÑ °æ¿ì¶ó¸é À§ ¿¹¿Í ´Ù¸¦ ¼ö ÀÖ´Ù. ±×·¯ÇÑ °æ¿ì¶ó¸é Connector ¼³Á¤¿¡ ´ëÇؼ´Â ¾î´À Á¤µµ Àß ¾Ë°í ÀÖÀ» °ÍÀ̶ó°í »ý°¢µÈ´Ù. À§ ¿¹´Â ¼³Ä¡ Á÷ÈÄÀÇ µðÆúÆ® »óÅÂÀ̹ǷΠÂü°íÇϱ⠹ٶõ´Ù.
TomcatÂÊ ¼³Á¤ÀÌ È®ÀÎ ¹× ¼öÁ¤µÇ¾úÀ¸¸é ÀÌÁ¦ ApacheÂÊ ¼³Á¤À» º¸µµ·Ï ÇÏÀÚ. Apache ¼³Á¤ ÆÄÀÏÀÎ /etc/httpd/conf/httpd.confÀ» ¿¾î¼ ¾Æ·¡ DSO ¼³Á¤ ºÎºÐÀ» »ìÆ캸ÀÚ.
... # # Dynamic Shared Object (DSO) Support # # To be able to use the functionality of a module which was built as a DSO you # have to place corresponding `LoadModule' lines at this location so the # directives contained in it are actually available _before_ they are used. # Statically compiled modules (those listed by `httpd -l') do not need # to be loaded here. # # Example: # LoadModule foo_module modules/mod_foo.so # Include conf.modules.d/*.conf ...
conf.modules.d Æú´õ¿¡ ÀÖ´Â ¸ðµç .conf ÆÄÀÏÀ» include ÇÏ°í ÀÖ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. conf.modules.d Æú´õ¿¡ mod_jk¿ë .conf ÆÄÀÏÀ» ¸¸µé¾î¼ ³Ö¾î ³õÀ¸¸é ¿©±â¼ include °¡ µÉ °ÍÀ̶ó´Â °É ¿¹»óÇÒ ¼ö ÀÖ´Ù. ±×·¯¸é conf.modules.d Æú´õ·Î À̵¿ÇÏ¿© ÆÄÀÏ ¸ñ·ÏÀ» º¸ÀÚ. ¿©·¯ °³ÀÇ .conf ÆÄÀÏ°ú README ÆÄÀÏÀÌ ÀÖÀ¸¹Ç·Î README ÆÄÀÏÀ» Àо±â ¹Ù¶õ´Ù.
This directory holds configuration files for the Apache HTTP Server; any files in this directory which have the ".conf" extension will be processed as httpd configuration files. This directory contains configuration fragments necessary only to load modules. Administrators should use the directory "/etc/httpd/conf.d" to modify the configuration of httpd, or any modules. Files are processed in alphanumeric order.
³»¿ëÀ» º¸¸é conf.modules.d Æú´õ¿¡ ¸ðµâ¿ë .conf ÆÄÀÏÀ» ³Ö¾î ³õÀ¸¸é µÈ´Ù´Â °Í°ú alphanumeric ¼ø¼´ë·Î 󸮰¡ µÈ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. mod_jk´Â µüÈ÷ ·Îµù¼ø¼°¡ Áß¿äÇÏÁö´Â ¾ÊÁö¸¸ ¾ðÁ¨°¡ ÇÊ¿äÇÏ´Ù¸é ÆÄÀÏ À̸§À» Àû´çÈ÷ Á¶ÀýÇؼ ¼ø¼¸¦ ¹Ù²Ü ¼ö ÀÖ´Ù´Â °Í Á¤µµ¸¸ ¾Ë¾ÆµÎµµ·Ï ÇÏÀÚ. ½ÇÁ¦·Î conf.modules.d Æú´õÀÇ ÆÄÀÏ ¸ñ·ÏÀ» º¸¸é "00-", "01-", "10-" µîÀÇ Á¢µÎ»ç¸¦ »ç¿ëÇؼ ¼ø¼¸¦ ÁöÁ¤ÇÏ°í ÀÖ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ¿ì¸®´Â ¼ø¼°¡ »ó°üÀÌ ¾øÀ¸¹Ç·Î ±×³É ¾Ë¾Æº¸±â ½±µµ·Ï "mod_jk.conf" ¶ó°í ¸í¸íÇÒ °ÍÀÌ´Ù.
±×·³ conf.modules.d Æú´õ¿¡ mod_jk.conf ÆÄÀÏÀ» ¸¸µé¾î¼ ¾Æ·¡ ³»¿ëÀ» ³Öµµ·Ï ÇÏÀÚ.
# Load mod_jk module LoadModule jk_module modules/mod_jk.so # Where to find workers.properties JkWorkersFile conf/workers.properties # Where to put jk shared memory file JkShmFile run/mod_jk.shm # Where to put jk logs JkLogFile logs/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel info # Send all requests to worker named ajp13 JkMount /* ajp13worker
ÁÖ¼®À» º¸¸é ´ëÃæ ¾î¶² ³»¿ëÀÎÁö ¾Ë ¼ö ÀÖ°ÚÁö¸¸ ÇÑ °¡Áö ¤°í ³Ñ¾î°¡¾ß ÇÒ °Ô ÀÖ´Ù. JkShmFileÀÇ °ªÀ¸·Î run/mod_jk.shmÀÌ ¾Æ´Ï¶ó logs/mod_jk.shmÀ» ¼³Á¤ÇÏ´Â °æ¿ì°¡ ¸¹Àºµ¥ logs/´Â selinux°¡ È°¼ºÈµÈ »óÅ¿¡¼´Â shmÆÄÀÏÀ» accessÇÒ ¼ö ¾ø±â ¶§¹®¿¡ Apache°¡ ½ÃÀÛµÉ ¶§ ¿¡·¯°¡ ¹ß»ýÇÏ¸ç ½ÃÀÛµÇÁö ¾Ê´Â´Ù. ±×·¡¼ ¹Ýµå½Ã run/mod_jk.shmÀ¸·Î ÁöÁ¤ÇØ¾ß ÇÑ´Ù. ±×¸®°í JkWorkersFile, JkMount¸¸ °£´ÜÈ÷ µ¡ºÙÀÌÀÚ¸é JkWorkersFileÀº ApacheÀÇ worker ¼³Á¤ ÆÄÀÏÀ» ÁöÁ¤ÇÑ °ÍÀε¥ ¾ÆÁ÷ ÆÄÀÏÀ» ¸¸µéÁö´Â ¾Ê¾ÒÀ¸¹Ç·Î ¾Æ·¡·Î °è¼Ó ÁøÇàÇÏ¸é¼ ¸¸µé ¿¹Á¤ÀÌ´Ù. ±×¸®°í JkMount´Â ¸ðµç ¿äûÀ» ajp13worker·Î º¸³½´Ù´Â °ÍÀε¥ ajp13workerµµ ¿ª½Ã worker ¼³Á¤ ÆÄÀÏÀÇ ³»¿ë¿¡¼ ¼³Á¤ÇÒ °ÍÀ̹ǷΠÂ÷Â÷ ¾Ë°ÔµÉ °ÍÀÌ´Ù.
ÀÌÁ¦ workers.properties ÆÄÀÏÀ» ¸¸µé Â÷·ÊÀÌ´Ù. À§¿¡¼ ¼³¸íÇÑ mod_jk.conf ÆÄÀÏ¿¡¼ ¼³Á¤ÇÑ ´ë·Î /etc/httpd/conf Æú´õ·Î °¡¼ workers.properties ÆÄÀÏÀ» ¸¸µé°í ¾Æ·¡ ³»¿ëÀ» ³Öµµ·Ï ÇÑ´Ù.
# the list of workers worker.list=ajp13worker worker.ajp13worker.type=ajp13 worker.ajp13worker.host=localhost worker.ajp13worker.port=8009 worker.ajp13worker.connection_pool_timeout=600 worker.ajp13worker.socket_keepalive=1
mod_jk.conf ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ JkMount¿¡¼ ajp13worker ¶ó°í ¼³Á¤Çß¾ú´Âµ¥ ±× °ªÀÌ ¹Ù·Î ¿©±â¼ ±½Àº ±Û¾¾·Î Ç¥½ÃÇÑ °ªÀÌ´Ù. °¢ ÇʵåÀÇ À̸§¸¸ ºÁµµ ¾î¶² ¿ëµµÀÎÁö ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÀÌÁ¦ ¸ðµç ¼³Á¤ÀÌ ³¡³µ´Ù. ¾Æ·¡ ¸í·ÉÀ¸·Î Apache¸¦ Àç½ÃÀÛÇÏÀÚ.
$ sudo service httpd restart
Àç½ÃÀÛÀÌ µÇ°í³ª¸é ºê¶ó¿ìÀú¸¦ ¶ç¿ö¼ ÁÖ¼Òâ¿¡ EC2 ÀνºÅϽºÀÇ Public IP¸¸ (Æ÷Æ®´Â ¾øÀÌ) ³Ö°í ÆäÀÌÁö¸¦ ·ÎµùÇغ¸ÀÚ. Æ÷Æ®¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾ÒÀ¸¹Ç·Î ±âº» Æ÷Æ®ÀÎ 80 Æ÷Æ®·Î ¿äûÀ» ÇßÀ» °ÍÀÌ´Ù. ¿©±â¼ ºê¶ó¿ìÀú¿¡´Â ApacheÀÇ Å×½ºÆ® ÆäÀÌÁö°¡ ¾Æ´Ï¶ó TomcatÀÇ Å×½ºÆ® À¥¾Û ÆäÀÌÁö°¡ º¸¿©¾ß ÇÑ´Ù.
TomcatÀÇ Å×½ºÆ® À¥¾Û ÆäÀÌÁö°¡ Á¤»óÀûÀ¸·Î ·ÎµùÀÌ µÇ¾ú´Ù¸é ±âº»ÀûÀÎ ¿¬µ¿Àº ³¡³µ´Ù. ÀÌÁ¦ Ãß°¡·Î ÇÑ °¡Áö¸¸ ´õ ¼³Á¤Çϵµ·Ï ÇÏÀÚ. mod_jk.conf ÆÄÀÏÀ» ÀÛ¼ºÇÒ ¶§ JkMount¿¡ ´ëÇؼ °£´ÜÈ÷ ¾ð±ÞÇÏ°í Áö³ª°¬¾ú´Âµ¥ ¿©±â¼ Á» ´õ »ó¼¼ÇÏ°Ô ¼³¸íÀ» ÇÏ·Á°í ÇÑ´Ù.
ÀϹÝÀûÀ¸·Î Apache¿Í TomcatÀ» ¿¬µ¿ÇÒ ¶§ À̹ÌÁö ÆÄÀÏ °°Àº °ÍµéÀº Tomcat±îÁö ¿äûÀÌ Àü´ÞµÉ ÇÊ¿ä°¡ ¾ø°í ¹Ù·Î Apache¿¡¼ 󸮰¡ °¡´ÉÇÏ´Ù. ÀÌ·± Á¤Àû(static)ÀÎ ¸®¼Ò½ºµéÀº ´ç¿¬È÷ Apache ¼¹ö°¡ ´õ ºü¸£°í È¿À²ÀûÀ¸·Î ó¸®ÇÒ ¼ö Àֱ⠶§¹®¿¡ TomcatÀ¸·Î Àü´ÞµÇÁö ¾Ê´Â°Ô ´õ ºü¸£°í È¿À²ÀûÀÌ´Ù. ÇÏÁö¸¸ mod_jk.conf ÆÄÀÏÀ» ¼³Á¤ÇÒ ¶§ JkMount ¼³Á¤¿¡¼ ¸ðµç ¿äûÀ» ajp13worker·Î º¸³»µµ·Ï Ç߱⠶§¹®¿¡ Áö±ÝÀº ¸ðµç ¿äûÀÌ TomcatÀ¸·Î Àü´ÞµÈ´Ù. ƯÁ¤ ÆÄÀÏ¿¡ ´ëÇÑ ¿äûÀ» TomcatÀ¸·Î Àü´ÞÇÏÁö ¾Ê°í Apache¿¡¼ Á÷Á¢ ó¸®ÇÏ°í ½Í´Ù¸é ¾î¶»°Ô ÇؾßÇÒ±î? ¹æ¹ýÀº °£´ÜÇÏ´Ù. ¾Æ·¡¿Í °°ÀÌ mod_jk.conf ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ JkUnMount ¼³Á¤À» Ãß°¡ÇÔÀ¸·Î½á ƯÁ¤ ÆÐÅÏÀÇ urlÀº TomcatÀ¸·Î Àü´ÞÇÏÁö ¾Ê°í ¹Ù·Î Apache¿¡¼ 󸮰¡ µÇµµ·Ï ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
... # Send all requests to worker named ajp13worker JkMount /* ajp13worker # do not send image requests to ajp13worker JkUnMount /*.gif ajp13worker JkUnMount /*.jpg ajp13worker JkUnMount /*.png ajp13worker JkUnMount /*.svg ajp13worker
ÁüÀÛÇÑ ´ë·Î .gif, .jpg, .png, .svg ÆÄÀϵéÀº ¸ðµÎ TomcatÀ¸·Î ¿äûÇÏÁö ¾Êµµ·Ï ¼³Á¤ÇÑ °ÍÀÌ´Ù. ÀÌ·¸°Ô ¼³Á¤À» ÇØ ³õ°í ºê¶ó¿ìÀúÀÇ Ä³½¬¸¦ ¸ðµÎ »èÁ¦ÇÑ ÈÄ¿¡ ¿äûÀ» Çغ¸¸é À̹ÌÁö ÆÄÀÏ ¿äûµéÀÌ TomcatÀ¸·Î Àü´ÞµÇÁö ¾Ê°ÔµÈ´Ù. JkUnMount ¼³Á¤ Àü°ú ÈÄÀÇ TomcatÀÇ access ·Î±×¸¦ »ìÆ캸¸é ¾Æ·¡¿Í °°ÀÌ ´Ù¸£°Ô ³ª¿Â´Ù´Â °É ¾Ë ¼ö ÀÖ´Ù. Âü°í·Î Å×½ºÆ® Àü¿¡´Â Ç×»ó ij½¬¸¦ »èÁ¦ÇØ¾ß Á¤È®È÷ ¾Ë ¼ö ÀÖ´Ù.
- JkUnMount ¼³Á¤ Àü
- JkUnMount ¼³Á¤ ÈÄ
JkUnMount¸¦ ¼³Á¤Çϱâ Àü¿¡´Â .png, .svg ÆÄÀϵ鿡 ´ëÇÑ ¿äûÀÌ TomcatÀ¸·Î ¸ðµÎ µé¾î¿ÔÁö¸¸ ¼³Á¤ ÈÄ¿¡´Â .png, .svg ÆÄÀϵ鿡 ´ëÇÑ ¿äûÀº ¸ðµÎ »ç¶óÁ³À½À» ¾Ë ¼ö ÀÖ´Ù. ÀÚ ±×·¸´Ù¸é ÆäÀÌÁö°¡ Á¤»óÀûÀ¸·Î Ç¥½Ã°¡ µÇ¾úÀ»±î? »ç½Ç ¿äûÀÌ TomcatÀ¸·Î Àü´ÞµÇÁö´Â ¾Ê¾ÒÁö¸¸ Apache¿¡¼µµ Á¦´ë·Î ó¸®ÇÏÁö ¸øÇÏ°í Àֱ⠶§¹®¿¡ ÆäÀÌÁöÀÇ À̹ÌÁöµéÀº ¸ðµÎ Ç¥½ÃµÇÁö ¾Ê°í ÀÖ´Ù. ¾Æ·¡ µÎ ±×¸²¿¡¼ »¡°£»ö ¹Ú½º ºÎºÐÀ» ºñ±³ÇØ º¸¸é JkUnMount°¡ ¼³Á¤µÈ ÈÄ¿¡ ·ÎµùµÈ ÆäÀÌÁö´Â ·Î°í³ª ¹è°æ À̹ÌÁö°¡ ¸ðµÎ Ç¥½ÃµÇÁö ¾Ê°í ÀÖ´Ù. (Á¤È®ÇÑ Å×½ºÆ®¸¦ À§Çؼ Ç×»ó ij½¬¸¦ »èÁ¦ÇÏ°í Å×½ºÆ®ÇÏ±æ ¹Ù¶õ´Ù.)
¿ÞÂÊÀÇ À̹ÌÁöµéÀº 80Æ÷Æ®(Apache)¸¦ ÅëÇؼ ¿äûÇÑ °ÍÀÌ°í ¿À¸¥ÂÊÀÇ À̹ÌÁöµéÀº 8080Æ÷Æ®(Tomcat)·Î Á÷Á¢ ¿äûÇÑ °ÍÀÌ´Ù. ÁÖ¼Òâ¿¡ ÀÔ·ÂµÈ ³»¿ëÀ» º¸¸é ¾Ë°ÚÁö¸¸ À§ ÂÊ ÆäÀÌÁö´Â Tomcat À¥¾ÛÀÇ ¸ÞÀÎ ÆäÀÌÁöÀÌ°í ¾Æ·¡ ÂÊÀÇ À̹ÌÁö´Â ¸ÞÀÎ ÆäÀÌÁö¿¡¼ Manager App ¹öÆ°À» Ŭ¸¯ÇÏ°í µé¾î°¡¸é ³ª¿À´Â ÆäÀÌÁöÀÌ´Ù. 80 Æ÷Æ®¸¦ ÅëÇؼ ¿äûÇÑ ÆäÀÌÁöµéÀº À̹ÌÁö°¡ Ç¥½ÃµÇÁö ¾Ê°í ÀÖ´Ù.
ÀÌ·¸°Ô À̹ÌÁöµéÀÌ Ç¥½ÃµÇÁö ¾Ê´Â ÀÌÀ¯´Â ¿äûµÈ À̹ÌÁöµéÀÇ ½ÇÁ¦ °æ·Î°¡ ApacheÀÇ DocumentRoot°¡ ¾Æ´Ñ TomcatÀÇ webapps °æ·Î¾È¿¡ À§Ä¡ÇÏ°í Àֱ⠶§¹®¿¡ Apache¿¡¼ ¿äûµÈ À̹ÌÁö ÆÄÀϵéÀ» ãÀ» ¼ö ¾ø±â ¶§¹®ÀÌ´Ù. ÇöÀç ApacheÀÇ DocumentRoot´Â "/var/www/html"ÀÌ°í TomcatÀÇ webapps °æ·Î´Â "/var/lib/tomcat/webapps"À̱⠶§¹®¿¡ TomcatÀÇ °ü¸®¿ë À¥¾Û ÆäÀÌÁöÀÇ À̹ÌÁöµéÀ» DocumentRoot¿¡¼ ãÀ¸·Á°í ½ÃµµÇÏ´Ù°¡ 404 󸮸¦ Çعö¸®´Â °ÍÀÌ´Ù.
±×·¸´Ù¸é ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ´Â ¾î¶»°Ô ÇؾßÇÒ±î? ÀÌ ¹®Á¦¿¡ ´ëÇÑ ÇØ°áÃ¥Àº µÎ °¡Áö°¡ ÀÖ´Ù. ÁüÀÛÇÑ´ë·Î °¡Àå °£´ÜÇÑ ¹æ¹ýÀº ApacheÀÇ DocumentRoot¸¦ tomcatÀÇ webapps °æ·Î·Î ¹Ù²ãÁÖ´Â °ÍÀÌ´Ù. ApacheÀÇ ¼³Á¤ ÆÄÀÏÀÎ /etc/httpd/conf/httpd.conf ÆÄÀÏÀ» ¿¾î¼ ¾Æ·¡ ±×¸²°ú °°ÀÌ "/var/www/html"·Î ¼³Á¤µÈ ºÎºÐÀ» "/var/lib/tomcat/webapps"·Î ¹Ù²Ù°í ºê¶ó¿ìÀú¿¡¼ ij½¬¸¦ »èÁ¦ ÈÄ ´Ù½Ã ½ÃµµÇغ¸µµ·Ï ÇÏÀÚ.
# httpd.conf ... DocumentRoot "/var/lib/tomcat/webapps" ... <Directory "/var/lib/tomcat/webapps"> ... </Directory> ...
À§¿Í °°ÀÌ ¼öÁ¤ ÈÄ ¼¹ö¸¦ Àç½ÃÀÛÇÏ°í ºê¶ó¿ìÀúÀÇ Ä³½¬¸¦ »èÁ¦ÇÑ ÈÄ ÆäÀÌÁö¸¦ ´Ù½Ã ·ÎµùÇغ¸¸é ¾Æ·¡¿Í °°ÀÌ ³ª¿Â´Ù.
¸ðµç À̹ÌÁö°¡ Á¤»óÀûÀ¸·Î Ç¥½ÃµÉ °ÍÀ̶ó´Â ¿¹»ó°ú ´Þ¸® ¹º°¡ À߸øµÈ °Í °°´Ù. 80Æ÷Æ®¸¦ ÅëÇؼ ¿äûµÈ ¸ÞÀÎ ÆäÀÌÁöÀÇ À̹ÌÁö°¡ ¿©ÀüÈ÷ Á¤»óÀûÀ¸·Î Ç¥½ÃµÇÁö ¾Ê°í ÀÖ´Ù. Manager AppÀ̳ª Server Status µîÀÇ À¥¾Û¿¡¼ Ç¥½ÃµÇ´Â À̹ÌÁö´Â ¸ðµÎ Àß Ç¥½Ã°¡ µÇ´Âµ¥ ¸ÞÀÎ ÆäÀÌÁö¿ë À¥¾ÛÀÇ À̹ÌÁöµéÀº ¸ðµÎ Ç¥½Ã°¡ µÇÁö ¾Ê´Â´Ù. Á» ´õ ÀÚ¼¼È÷ °üÂûÇغ¸¸é À̹ÌÁöÀÇ ¿äû URL¿¡¼ Path°¡ root(/)ÀÎ À̹ÌÁöµéÀº Ç¥½Ã°¡ µÇÁö ¾Ê´Â´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. Manager AppÀÇ °æ¿ì /manager °æ·Î¸¦ ÀÌ¿ëÇÏ°í Àֱ⠶§¹®¿¡ ¸ðµç À̹ÌÁö°¡ Á¤»óÀûÀ¸·Î Ç¥½Ã°¡ µÈ´Ù. ÀÌ·± Çö»óÀÌ ³ª¿À´Â ÀÌÀ¯´Â TomcatÀÇ webapps Æú´õÀÇ ³»¿ëÀ» º¸¸é ¾Ë ¼ö ÀÖ´Ù.
À§ ±×¸²À» º¸¸é webapps Æú´õ ¾È¿¡´Â ROOT¶ó´Â Æú´õ°¡ º¸ÀδÙ. TomcatÀº ±âº»ÀûÀ¸·Î À¥¾ÛÀÇ context °æ·Î°¡ rootÀÎ °æ¿ì¿¡ webapps Æú´õ ¾Æ·¡ "ROOT" Æú´õ¸¦ µÎ°í ±× °æ·Î¸¦ root·Î »ç¿ëÇÑ´Ù. Áï webapps Æú´õ ¾È¿¡ ÀÖ¾î¾ßÇÒ À̹ÌÁöµéÀÌ webapps/ROOT ¾È¿¡ Àֱ⠶§¹®¿¡ Apache¿¡¼´Â ãÁö ¸øÇÏ°í 404 󸮸¦ Çعö¸®´Â °ÍÀÌ´Ù. webapps/ROOT ¾È¿¡ ÀÖ´Â À̹ÌÁö ÆÄÀϵéÀ» webapps Æú´õ·Î ¿Å±â¸é ¸ðµÎ Á¤»óÀûÀ¸·Î Ãâ·ÂµÉ °ÍÀÌ´Ù.
root °æ·Î¿¡ ´ëÇÑ ¹®Á¦´Â Apache ¼³Á¤À» º¯°æÇÏ´Â ¹æ¹ýÀ¸·Î´Â ÇØ°áÃ¥ÀÌ ¾ø´Ù. ÇÏÁö¸¸ ´ëºÎºÐÀÇ °æ¿ì À̹ÌÁö°°Àº Á¤ÀûÀÎ ¸®¼Ò½º¸¦ root¿¡ ¸ð¾Æ³õ°í °ü¸®ÇÏ´Â °æ¿ì´Â ¾øÀ» °ÍÀÌ´Ù. ´ëºÎºÐ image, css, js µîÀÇ ÇÏÀ§ Æú´õ¸¦ µÎ°í µû·Î ¸ð¾Æ¼ °ü¸®Çϰųª ÇϳªÀÇ webappÀ» À§ÇÑ ÇÏÀ§Æú´õ¸¦ µÎ°í ±× ¾È¿¡ °¢Á¾ ¸®¼Ò½ºµéµµ °°ÀÌ °ü¸®Çϱ⠶§¹®¿¡ ÀÌ ¹®Á¦´Â ´ëºÎºÐ ÀÚ¿¬½º·´°Ô ÇÇÇØ°¥ ¼ö ÀÖ´Ù. ±×·³¿¡µµ ºÒ±¸ÇÏ°í ÀÌ·± ¹®Á¦°¡ ÀÖÀ½À» Àß ±â¾ïµÎ°í ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÇÒ ¶§ ÀÌ ¹®Á¦¸¦ °¨¾ÈÇؼ °¢Á¾ °æ·Î¸¦ ¼³°èÇÏ´Â °Ô ÁÁÀ» °ÍÀÌ´Ù.
±×·³ ÀÌÁ¦ ApacheÀÇ DocumentRoot¸¦ ÀçÁ¤ÀÇÇÏ´Â ¹æ¹ý¸»°í ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â µÎ ¹ø° ¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ. µÎ ¹ø° ¹æ¹ýÀº mod_jk ¼³Á¤¿¡¼ JkAutoAlias¸¦ ÁöÁ¤ÇÏ´Â ¹æ¹ýÀÌ´Ù. ApacheÀÇ httpd.conf ÆÄÀÏÀ» ¿¾î¼ DocumentRoot ¼³Á¤(/var/www/html)À» ´Ù½Ã ¿ø·¡´ë·Î º¹±¸ÇÏ°í mod_jkÀÇ ¼³Á¤ ÆÄÀÏ(mod_jk.conf)ÀÇ ¸¶Áö¸·¿¡ ¾Æ·¡ ³»¿ëÀ» Ãß°¡Çϵµ·Ï ÇÏÀÚ.
... # Automatically Alias webapp context directories into the Apache document space. JkAutoAlias /var/lib/tomcat/webapps <Directory "/var/lib/tomcat/webapps"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
Ãß°¡µÈ ³»¿ëÀ» °£´ÜÈ÷ ¼³¸íÇϵµ·Ï ÇÏ°Ú´Ù. JkAutoAlias Áö½ÃÀÚ´Â ÁöÁ¤µÈ webapps °æ·Î¸¦ ApacheÀÇ Document °ø°£À¸·Î ÀνÄÇϵµ·Ï ÇÏ´Â ±â´ÉÀ» ÇÑ´Ù. ±×·¡¼ JkAutoAlias¿¡ Tomcat webapps Æú´õ¸¦ ÁöÁ¤Çϸé TomcatÀ¸·Î Àü´ÞµÇÁö ¾Ê´Â ¿äûµéÀ» ApacheÀÇ DocumentRoot°¡ ¾Æ´Ñ TomcatÀÇ webapps Æú´õ¿¡¼µµ ã°ÔµÇ´Â °ÍÀÌ´Ù.
±×¸®°í <Directory> ¼³Á¤À» Ãß°¡ÇÏ´Â ÀÌÀ¯´Â ApacheÀÇ httpd.conf ÆÄÀÏ¿¡¼ DocumentRoot¿¡ ÁöÁ¤µÈ Æú´õ¸¦ Á¦¿ÜÇÏ°í ¸ðµç ÆÄÀÏ ½Ã½ºÅÛÀ» Á¢±ÙÇÏÁö ¸øÇϵµ·Ï ¼³Á¤ÇÏ°í Àֱ⠶§¹®ÀÌ´Ù. ÀÌ ¼³Á¤À» Ãß°¡ÇÏÁö ¾ÊÀ¸¸é JkAutoAlias¸¦ ÁöÁ¤Çß´Ù ÇÏ´õ¶óµµ 403 Forbidden ¿¡·¯¸¦ ¹ÝȯÇÏ°Ô µÈ´Ù. ÀÎÅͳÝÀÇ ¸¹Àº ±ÛµéÀ» º¸¸é JkAutoAlias¸¸ ÁöÁ¤ÇÏ°í <Directory> ¼³Á¤¿¡ ´ëÇÑ ¾ð±ÞÀº ¾ø´Â °æ¿ì°¡ ´ëºÎºÐÀε¥ ¹Ýµå½Ã <Directory> ¼³Á¤À» Ãß°¡ÇØÁÖ¾î¾ß Á¤»óµ¿ÀÛÇϹǷΠ²À Ãß°¡ÇØÁÖ±æ ¹Ù¶õ´Ù. ÀÏ´Ü <Directory> ¼³Á¤ ¿É¼ÇÀº DocumentRoot¿ë ¼³Á¤°ú °°Àº °ªÀ¸·Î ÇØÁÖ¸é µÈ´Ù. ³ªÁß¿¡ ¼öÁ¤ÀÌ ÇÊ¿äÇÏ´Ù¸é ±× ¶§ ¸ÂÃç¼ ¹Ù²ãÁÖ¸é µÈ´Ù.
ÀÛ¾÷À» ¿Ï·áÇßÀ¸¸é ÀÌÁ¦ ¾ÆÆÄÄ¡¸¦ Àç½ÃÀÛÇÏ°í ´Ù½Ã ºê¶ó¿ìÀúÀÇ Ä³½¬¸¦ ºñ¿ì°í ´Ù½Ã ÆäÀÌÁöµéÀ» ¿äûÇØ º¸µµ·Ï ÇÏÀÚ. ÆäÀÌÁöÀÇ À̹ÌÁö°¡ ¸ðµÎ Àß Ç¥½ÃµÇ´Â°¡? ¾Æ¸¶µµ DocumentRoot¸¦ ÀçÁ¤ÀÇÇÏ´Â ¹æ¹ý°ú ¶È°°ÀÌ ¸ÞÀÎ ÆäÀÌÁöÀÇ À̹ÌÁöµéÀº Ç¥½ÃµÇÁö ¾Ê¾ÒÀ» °ÍÀÌ´Ù. ȸé ĸÃÄ´Â ¾îÂ÷ÇÇ À§ÀÇ À̹ÌÁöµé°ú ¶È°°±â ¶§¹®¿¡ ÇÏÁö ¾Ê¾Ò´Ù.
root¿¡ ÀÖ´Â À̹ÌÁö ¿äûµéÀ» ó¸®ÇÏÁö ¸øÇÏ°í 404¸¦ ¸®ÅÏÇÏ´Â ¹®Á¦°¡ ¿©ÀüÈ÷ Á¸ÀçÇÏÁö¸¸ ¿øÀÎÀº ¾à°£ ´Ù¸£´Ù. ÀÌ ¹æ¹ýÀ¸·Î´Â ù ¹ø° ¹æ¹ý°ú´Â ´Þ¸® webapps/ROOT¿¡ ÀÖ´Â À̹ÌÁö¸¦ webapps Æú´õ·Î ¿Å°Ü³õ¾Æµµ À̹ÌÁö¸¦ ãÁö ¸øÇÑ´Ù. ÇØ°á ¹æ¹ýÀº webapps/ROOT¿¡ ÀÖ´Â À̹ÌÁöµéÀ» DocumentRoot(/var/www/html)·Î ¿Å°Ü³õ´Â °ÍÀÌ´Ù. root¿¡ ÀÖ´Â ¸®¼Ò½º¸¦ ¿äûÇϸé DocumentRoot¸¸ Ž»öÀ» ÇÏ°í webapps Æú´õ´Â Ž»öÇÏÁö ¾Ê±â ¶§¹®¿¡ ³ª¿À´Â Çö»óÀε¥ ÀÌ°ÍÀÌ ÀǵµµÈ °ÍÀÎÁö ¹ö±×ÀÎÁö´Â ¸ð¸£°Ú´Ù. ÇÏÁö¸¸ À̰͵µ ù ¹ø° ¹æ¹ý°ú ¸¶Âù°¡Áö ÀÌÀ¯·Î ÀÚ¿¬½º·´°Ô ÇÇÇØ°¥ ¼ö ÀÖ´Â ¹®Á¦ÀÌ´Ù.
ÀÌ ¹æ¹ýÀº ApacheÀÇ ¿ø·¡ DocumentRoot ¼³Á¤À» À¯ÁöÇÏ¸é¼ mod_jk¸¦ ÅëÇÏ´Â ¿äû¿¡ ´ëÇؼ¸¸ TomcatÀÇ webapps Æú´õ¸¦ ÀÌ¿ëÇÏ´Â ¼³Á¤ÀÌ °¡´ÉÇϱ⠶§¹®¿¡ ApacheÀÇ DocumentRoot¸¦ Á÷Á¢ º¯°æÇÏ´Â ¹æ¹ýº¸´Ù´Â ´õ ¼¼·ÃµÈ ¹æ¹ýÀ̸ç ÇÊÀÚ°¡ ¼±È£ÇÏ´Â ¹æ¹ýÀÌ´Ù.
µ¶Àںе鲲¼ ¿©±â¼ ¼³¸íÇÑ ÀÏ·ÃÀÇ ¹®Á¦Á¡°ú ¿øÀÎ ¹× ÇØ°á¹æ¹ý¿¡ ´ëÇؼ Á¦´ë·Î ÀÌÇØÇß´Ù¸é ¾î¶² ½ÄÀ¸·Î ¼³Á¤À» Çϵç ÀûÀýÇÑ ÇعýÀ» ¸¶·ÃÇÒ ¼ö ÀÖÀ» °ÍÀ¸·Î »ý°¢µÈ´Ù. ÇÏÁö¸¸ ½É°¢ÇÏ°Ô °í¹ÎÇØ¾ß ÇÒ °ÍÀÌ Çϳª ÀÖ´Ù. Á¤Àû ¸®¼Ò½ºµé¸¸ Apache¿¡°Ô ¼ºñ½º¸¦ Çϵµ·Ï ¼³Á¤ÇÏ´Â °Ç ½ÇÁ¦ Àû¿ëÀ» ´Ù½Ã »ý°¢ÇغÁ¾ß ÇÒ Á¤µµ·Ï ±î´Ù·Î¿î ÀÛ¾÷µéÀ» ¾ß±â½ÃŲ´Ù. Á÷Á¢ Çغ¸¸é ¾Ë°ÚÁö¸¸ ³» °æÇè»óÀ¸·Î´Â War ÆÄÀÏ¿¡ Æ÷ÇÔµÈ À̹ÌÁö °°Àº Á¤Àû ¸®¼Ò½ºµéÀ» µû·Î º¹»çÇؼ ÀûÀýÇÑ À§Ä¡·Î ¿Å±â´Â ÀÛ¾÷ÀÌ °ÅÀÇ Ç×»ó ÇÊ¿äÇß´Ù. ¹°·Ð ¼Ò±Ô¸ðÀÇ ÇÁ·ÎÁ§Æ®¿¡¼´Â ±×·¸Áö ¾ÊÀ» ¼öµµ ÀÖÁö¸¸ ¾ïÁö·Î ¸ÂÃß´Ù º¸¸é ¶Ç ´Ù¸¥ Á¦¾à »çÇ×µéÀÌ »ý±â°Ô µÇ°í °á±¹ ±×³É Tomcat¿¡¼ ¸ðµÎ ó¸®Çϵµ·Ï ÇÏ´Â °Ô ´äÀ̶ó´Â »ý°¢À» ÇÏ°Ô µÈ´Ù. °³¹ßÀÌ ¿Ï·áµÇ¾î ´õ ÀÌ»óÀÇ ¹èÆ÷°¡ ¾ø´Ù¸é ¸ð¸¦±î ¹èÆ÷ÇÒ ¶§ ¸¶´Ù ¼ÕÀÌ ¸¹ÀÌ °¡°Ô µÇ°í À¯Áöº¸¼öÇÏ´Â µ¿¾È ½Å°æ¾µ°Ô ¸¹¾ÆÁ®¼ À¯Áöº¸¼ö Àü´ã ÀηÂÀÌ »ý°Ü¾ß ÇÒ Á¤µµ·Î ÇÇ°ïÇÑ ÇÁ·ÎÁ§Æ®°¡ µÉ °ÍÀÌ´Ù. Apache¿Í TomcatÀÌ ¹°¸®ÀûÀ¸·Î ºÐ¸®µÇ¾î ´Ù¸¥ Àåºñ¿¡ ¼³Ä¡°¡ µÇ´Â ȯ°æÀ̶ó¸é ´õ ¸»ÇÒ °Íµµ ¾øÀÌ Á¤¸» ÇÇ°ïÇØÁø´Ù. ¾î¶² °Ô ´õ ³ªÀº ¼±ÅÃÀÎÁö´Â ¿©·¯ ºÐÀÇ ÆÇ´Ü¿¡ ¸Ã±âµµ·Ï ÇÏ°Ú´Ù.