CentOS7 + Apache + Tomcat8 ¿¬µ¿(mod_jk)
CentOS7 + Apache + Tomcat8 ¿¬µ¿(mod_jk)
°³¿ä
À̹ø¿¡´Â CentOS7 ȯ°æ¿¡¼ ¾ÆÆÄÄ¡ httpd
¿Í tomcat8
À» ¿¬µ¿ÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. Æò¼Ò À¥ ȯ°æÀ» ±¸ÃàÇؾßÇÏ´Â °æ¿ì°¡ ¸¹Àºµ¥ ¸Å¹ø ÇÒ ¶§¸¶´Ù ±î¸Ô°í ã°í ÇÏ´Â ½Ã°£ÀÌ ³Ê¹« ¿À·¡ °É¸®´Â °Í°°¾Æ À̹ø¿¡ ´Ù½Ã ȯ°æÀ» ¸¸µé¸é¼ ¼³Ä¡ ¼ø¼¸¦ ±â·ÏÀ¸·Î ³²°å½À´Ï´Ù. ±âº»ÀûÀΠȯ°æ ±¸ÃุÀ» ¸ñÇ¥·Î Çϱ⠶§¹®¿¡ °£´ÜÇÏ°í Ãß°¡µÇ´Â ¼³Á¤Àº ¾ø½À´Ï´Ù. ȯ°æÀ» ±¸ÃàÇÏ°í ³ µÚ¿¡ ÇÊ¿äÇϽŠ¿É¼ÇÀ» Ãß°¡Çؼ »ç¿ëÇϼ¼¿ä~! Áö±Ý ºÎÅÍ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.
ȯ°æÀ» ±¸ÃàÇϱâ À§ÇÑ ÆÐÅ°Áö ¹× Apache Httpd ¼³Ä¡
¿ì¼± ȯ°æÀ» ±¸ÃàÇϱâ À§Çؼ ÇÊ¿ä·Î ÇÏ´Â ÆÐÅ°Áö¸¦ Çѹø¿¡ ¼³Ä¡Çϵµ·Ï ÇÏ°Ú½À´Ï´Ù.
yum install -y gcc gcc-c++ httpd-devel java-1.8.0-openjdk-devel.x86_64 wget libtool make
±âº»ÀûÀ¸·Î libtool
, gcc
ȯ°æ°ú java jdk
°¡ ¼³Ä¡ µÇ¾î ÀÖ¾î¾ßÇϸç, wget
À̳ª make
´Â ¼³Ä¡°¡ ¾ÈµÇ ÀÖÀ¸½Å ºÐµéÀº À§ÇØ ³Ö¾ú½À´Ï´Ù. ÀÌ¿Í ÇÔ²² Á¦ÀÏ ¼³Ä¡Çϱ⠽¬¿î ¾ÆÆÄÄ¡ ¼³Ä¡´Â httpd-devel
À» ÅëÇؼ ¼³Ä¡°¡ °¡´ÉÇÕ´Ï´Ù. À§ ¸í·É¾î¸¦ ÀÌ¿ëÇϸé ȯ°æÀ» ±¸ÃàÇϴµ¥ ÀÖ¾î ÇÊ¿ä·ÎÇÏ´Â ÆÐÅ°Áöµé°ú apache
°¡ ¼³Ä¡°¡ ¿Ï·á Çϼ̽À´Ï´Ù.
Tomcat8 ¼³Ä¡
Àú´Â tomcat8
À» ¼³Ä¡ ÇÏ°Ô µÇ¾ú´Âµ¥¿ä. ÀÌ´Â http://tomcat.apache.org/download-80.cgi¿¡ µé¾î°¡½Ã¸é ÃֽŹöÀüÀÇ ÅèĹ tar.gz
¾ÐÃà ÆÄÀÏÀ» ¹ÞÀ¸½Ç ¼ö ÀÖ½À´Ï´Ù.
wget http://mirror.navercorp.com/apache/tomcat/tomcat-8/v8.5.23/bin/apache-tomcat-8.5.23.tar.gz
tar zxvf apache-tomcat-8.5.23.tar.gz
mv apache-tomcat-8.5.23.tar.gz /opt/tomcat
À§¿Í °°Àº ¸í·É¾î¸¦ ÅëÇؼ ÇöÀç Æú´õ¿¡ ÅèĹ ¾ÐÃàÆÄÀÏÀ» ¹Þ¾Æ¿É´Ï´Ù. ±× ÈÄ tar
¸í·É¾î¸¦ ÅëÇØ ¾ÐÃàÀ» Ç®¾îÁÖ°í ³ µÚ¿¡ ÇØ´ç Æú´õ¸¦ ±×´ë·Î /opt/tomcat
À¸·Î À̵¿À» ½ÃÄÑÁÝ´Ï´Ù.
sudo groupadd tomcat
sudo useradd -M -s /bin/nologin -g tomcat -d /opt/tomcat tomcat
sudo chown -R tomcat:tomcat /opt/tomcat
±× ÈÄ ÅèĹÀ» »ç¿ëÇÏ´Â À¯Àú¸¦ ÁöÁ¤ÇØÁּžßÇÕ´Ï´Ù. tomcat
±×·ì°ú tomcat
À¯Àú¸¦ »ý¼ºÇÏ¸é¼ ±¸µ¿ÆÄÀϵéÀ» ¿Å°Ü³ù´ø /opt/tomcat
À» ÁöÁ¤ÇØÁÖ°í, ÇØ´ç Æú´õÀÇ ¼ÒÀ¯ÀÚ¸¦ tomcat
À¸·Î º¯°æÇØÁÖ½Ã¸é µË´Ï´Ù.
±× ´ÙÀ½¿¡´Â ÅèĹÀ» ¼ºñ½º¿¡¼ µî·ÏÇÏ°í ¼¹ö°¡ ºÎÆÃµÉ ¶§ ¹Ù·Î ÄÑÁöµµ·Ï ¼³Á¤À» ÇÒ °ÍÀÔ´Ï´Ù. ¼öµ¿À¸·Î ÄÑ°í ²ô½Ã´Â °Í¸¸ ÇÏ½Ç °æ¿ì¿¡´Â ¼ºñ½º¸¸ µî·ÏÇϽðí chkconfig
¸í·É¾î¸¸ ÀÔ·Â ¾ÈÇϼŵµ ±¦Âú½À´Ï´Ù.
Tomcat ¼ºñ½º ÆÄÀÏ »ý¼º
vim /etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
JAVA_HOME
°ú °°Àº °æ¿ì¿¡´Â Ȥ½Ã³ª ´Ù¸¦±î ½Í¾î ÇØ´çÇÏ´Â °æ·Î¸¦ °¡Á®¿À´Â ¹æ¹ý±îÁö ÷ºÎÇÕ´Ï´Ù.
which javac
readlink -f {which javac·Î ³ª¿Â °æ·Î¸¦ ÀÔ·Â}
À§¿Í °°Àº ¸í·É¾î·Î java
°¡ ºÒ·ÁÁö´Â ÆÄÀÏ ¸µÅ©ÀÇ Àý´ë°æ·Î¸¦ ÀÐ¾î ¿Ã ¼ö ÀÖ½À´Ï´Ù. ¸í·É¾î·Î ¾òÀº ÁÖ¼Ò¿¡¼ bin
°æ·Î Àü±îÁöÀÇ °æ·Î¸¦ JAVA_HOME
¿¡ ÀÔ·ÂÇϽøéµË´Ï´Ù.
Tomcat ¼¹ö ºÎÆýà ÀÚµ¿½ÃÀÛ
chkconfig tomcat on
chkconfig
¸¦ ÅëÇؼ tomcat
¼ºñ½º°¡ ÀÚµ¿À¸·Î ½ÃÀ۵ǵµ·Ï Ãß°¡ÇØÁÖ½Ã¸é µË´Ï´Ù.
Apache Httpd¿Í Tomcat ¿¬µ¿(mod_jk)
Apache
¿Í tomcat
À» ¿¬µ¿Çϱâ À§Çؼ´Â ¸ðµâÀÌ ÇÊ¿äÇѵ¥¿ä. °¡Àå ¸¹ÀÌ »ç¿ëÇÏ´Â mod_jk
¸¦ ÀÌ¿ëÇؼ ¿¬µ¿Çغ¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. ¿ì¼± mod_jk
¸¦ ¼³Ä¡ÆÄÀÏÀ» ´Ù¿î ¹Þ¾Æ¾ßÇÕ´Ï´Ù. ÆÄÀÏÀº http://tomcat.apache.org/download-connectors.cgi¿¡¼ ´Ù¿î·Îµå ¹ÞÀ¸½Ç ¼ö ÀÖ½À´Ï´Ù.
wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz
tar zxvf tomcat-connectors-1.2.42-src.tar.gz
cd tomcat-connectors-1.2.42-src/native/
´Ù¿î·Îµå¸¦ ¹ÞÀ¸½Å ÈÄ ¾ÐÃàÀ» Ǫ½Å´ÙÀ½¿¡ ÇØ´ç Æú´õ¿¡ native
Æú´õ·Î µé¾î°¡¼Å¼ ¼³Ä¡¸¦ ÇÏ¼Å¾ß ÇÕ´Ï´Ù.
./buildconf.sh
./configure --with-apxs=/usr/bin/apxs
make
make install
À§¿Í °°Àº ¼ø¼´ë·Î ¼³Ä¡¸¦ ÁøÇàÇØÁÖ¼¼¿ä. Ȥ½Ã³ª ´Ù¸¥ ¸®´ª½º ȯ°æ¿¡¼ ¼³Ä¡¸¦ ÇϽô °æ¿ì¿¡´Â --with-apxs
ÀÇ Æú´õ À§Ä¡°¡ ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ȯ°æ¿¡¼ ÁøÇà ½Ã apxs
¸¦ ãÁö ¸øÇÏ´Â ¿À·ù°¡ ÀÖÀ¸½Ç °æ¿ì¿¡´Â ¸®´ª½º ȯ°æ¿¡ ¸Â´Â °æ·Î¸¦ µû·Î ãÀ¸¼Å¼ Àû¿ëÇØÁÖ¼¼¿ä. CentOSÀÇ °æ¿ì¿¡´Â À§ ¸í·É¾î´ë·Î ¼³Ä¡ÇÏ½Ã¸é ¹®Á¦ ¾øÀÌ ¼³Ä¡°¡ ¿Ï·á¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¬µ¿ ¼³Á¤
¼³Ä¡¸¦ ¸ðµÎ ¿Ï·á ÇϼÌÀ¸´Ï ÀÎÁ¦ httpd
¿Í tomcat
°£ ¼³Á¤À» ÇØÁּžßÇÕ´Ï´Ù. ¿ì¼± ¾ÆÆÄÄ¡ ¼³Á¤À» ÀâÀ» °ÍÀÔ´Ï´Ù. CentOS¸¦ »ç¿ëÇϽô °æ¿ì ¾ÆÆÄÄ¡ °ü·Ã Æú´õÀÎ /etc/httpd/
¿¡¼ Æú´õ ±¸Á¶°¡ conf
, conf.d
, conf.modules.d
¿Í °°ÀÌ ³ª´µ¾îÁ® ÀÖ½À´Ï´Ù. conf
´Â ¾ÆÆÄÄ¡ÀÇ ¼³Á¤ÆÄÀϸ¸ Á¸ÀçÇϵµ·Ï ±¸¼ºµÇ¾îÀÖ°í Ãß°¡ÀûÀÎ ¸ðµâº° ¼³Á¤ °°Àº °ÍÀ» conf.d
¿¡ »ý¼ºÇϼż »ç¿ëÇϽøé ÀÚµ¿À¸·Î ºÒ·¯¿Í Àû¿ëµÇ¾îÁý´Ï´Ù. conf.modules.d
¿Í °°Àº °æ¿ì¿¡´Â »ç¿ëÇÒ ¸ðµâÀ» ºÒ·¯¿À´Â ¼³Á¤¸¸ Àû¿ëÇÏ´Â ÆÄÀϵéÀ» °ü¸®ÇÏ´Â Æú´õÀÔ´Ï´Ù.
cd /etc/httpd/conf.modules.d/
vim 00-jk.conf
LoadModule jk_module modules/mod_jk.so
¿ì¼± conf.module.d
Æú´õ¿¡ mod_jk
°ü·Ã ¸ðµâÀ» ºÒ·¯¿À±â À§ÇØ 00-jk.conf
ÆÄÀÏÀ» »ý¼ºÇÏ°í LoadModule ~~
À» ÀÔ·ÂÇÏ°í ÀúÀåÇØÁÖ¼¼¿ä. ÀÌ´Â ¹æ±ÝÀü ¼³Ä¡ÇÑ mod_jk
¸ðµâÀ» ºÒ·¯¿Í jk_module
À̶ó´Â À̸§À¸·Î ¸í¸íÇÏ´Â ±¸¹®ÀÔ´Ï´Ù.
cd /etc/httpd/conf.d/
vim httpd-jk.conf
<IfModule jk_module>
# We need a workers file exactly once
# and in the global server
JkWorkersFile conf.d/workers.properties
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# Our JK error log
# You can (and should) use rotatelogs here
JkLogFile logs/mod_jk.log
# Our JK log level (trace,debug,info,warn,error)
JkLogLevel info
# Our JK shared memory file
JkShmFile logs/mod_jk.shm
# If you want to put all mounts into an external file
# that gets reloaded automatically after changes
# (with a default latency of 1 minute),
# you can define the name of the file here.
JkMountFile conf.d/uriworkermap.properties
</IfModule>
±× ÈÄ ºÒ·¯¿Â ¸ðµâ¿¡ ´ëÇÑ ¼³Á¤À» ÁøÇàÇØ ÁÝ´Ï´Ù. ÁÖÀÇÇؼ º¸¼Å¾ß ÇÒ °ÍÀº JkWorkersFile
°ú JkMountFile
ÀÔ´Ï´Ù. ÀüÀÚ´Â ÅèĹ ¼¹öµéÀ» °¢°¢ ¼³Á¤ÇÏ´Â ¿ªÇÒÀ» ÇØÁÖ¸ç, ÈÄÀڴ ƯÁ¤ ÆÐÅÏÀ» °¡Áö´Â ÆÄÀÏÀ» ¿äûÇßÀ» ¶§ ¼ºñ½ºÇÏ°íÀÚ ÇÏ´Â ÅèĹ ¼¹ö¸¦ ÁöÁ¤ÇÏ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù.
cd /etc/httpd/conf.d/
vim workers.properties
worker.list=instance1,instance2,instance3
worker.instance1.port=8109
worker.instance1.host=localhost
worker.instance1.type=ajp13
worker.instance1.lbfactor=1
worker.instance2.port=8209
worker.instance2.host=localhost
worker.instance2.type=ajp13
worker.instance2.lbfactor=1
worker.instance3.port=8309
worker.instance3.host=localhost
worker.instance3.type=ajp13
worker.instance3.lbfactor=1
workers.properties
ÆÄÀÏÀº À§¿Í°°ÀÌ ÅèĹ¼¹ö°¡ 3°³ÀÏ °æ¿ì ÅèĹ¼¹öÀÇ À̸§µéÀ» ¼³Á¤ÇÏ°í ÇØ´ç ¼¹ö¿¡ ´ëÇÑ ¼³Á¤À» ÀÌ·çµµ·Ï µÇ¾îÀÖ½À´Ï´Ù. ±¸ÃàÇϽ÷Á´Â ȯ°æ¿¡ ¸Â°Ô ¿É¼ÇÀ» ¼³Á¤ÇØÁÖ½Ã¸é µË´Ï´Ù.
vim uriworkermap.properties
/*.jsp=instance1
/*.png=instance2
/*.css=instance3
uriworkermap.properties
¿¡´Â ƯÁ¤ ÆÄÀÏ¿¡ ´ëÇؼ ¾î¶² ÅèĹ¼¹ö°¡ ¼ºñ½ºÇÒ °ÍÀÎÁö ¸ÊÇÎÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. ÇØ´çÇÏ´Â ÆÄÀϵéÀ» µû·Î ³ª´©¾î °ü¸®ÇÏ´Â ÀÌÀ¯´Â ÅèĹÀÌ ±âº» 10ºÐ¸¶´Ù ´Ù½ÃºÒ·¯¿Í Àû¿ëÇϱ⠶§¹®¿¡ ÅèĹ ¼³Á¤ º¯°æÀ» À§ÇØ ¼ºñ½º¸¦ Àç½ÃÀÛÇÏÁö ¾ÊÀ¸¼Åµµ Àû¿ëÀÌ °¡´ÉÇÏ´Ù´Â ÀÌÁ¡ÀÌÀֱ⠶§¹®ÀÔ´Ï´Ù.
¼ºñ½º Àç½ÃÀÛ
ÀÎÁ¦ ¸ðµç ¼³Á¤À» ¸¶¹«¸®Çß½À´Ï´Ù. httpd
¼ºñ½º¿Í tomcat
¼ºñ½º¸¦ Àç½ÃÀÛÇϼż ¼³Á¤µÈ ³»¿ëµéÀ» Àû¿ëÇÏ½Ã¸é µË´Ï´Ù.
service httpd restart
service tomcat restart
ÆÁ1: ¿¬µ¿ ¼³Á¤ÀÌ Á¤»óÀûÀ¸·Î Àû¿ëÀÌ µÇ´ÂÁö È®ÀÎÇÏ´Â ¹æ¹ý
¾ÆÆÄÄ¡ httpd
¿¡´Â Á¤»óÀûÀ¸·Î ¼³Á¤ÆÄÀϵéÀÌ Á¤»óÀûÀÎ Syntax¸¦ °¡Áö°í ÀÖ´ÂÁö È®ÀÎÇÏ´Â ¸í·É¾î¸¦ ³»ÀåÇÏ°í ÀÖ½À´Ï´Ù.
apachectl configtest
ÆÁ2: ÅèĹ ÀÎÄÚµù¼³Á¤
ÅèĹ¿¡¼ ÇѱÛÀ» »ç¿ëÇÒ ¶§ ÀÎÄÚµù ¹®Á¦·Î ±úÁö´Â ¹®Á¦°¡ ¹ß»ýÇÏ½Ç ¼ö Àֱ⠶§¹®¿¡ ÀÎÄÚµùÀ» ¼³Á¤À» ÇÏ¼Å¾ß ÇÕ´Ï´Ù.
vim /opt/tomcat/conf/server.xml
(»ý·«)
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />
(»ý·«)
À§¿Í °°ÀÌ AJP Ä¿³ØÅÍ¿¡ URIEncoding="UTF-8"
À» Àû¿ëÇÏ½Ã¸é µË´Ï´Ù.