StoryCode

'2018/11/01'에 해당되는 글 5건

  1. Apache 와 Tomcat 연동
  2. Tomcat 다중 설치
  3. CentOS 7 + Tomcat 8 설치
  4. CentOS 7 + Apache 2 설치
  5. Java 설치

Apache 와 Tomcat 연동

Server 관리/Apache,Tomcat,NginX,WS,WAS
반응형


[참조] http://goddaehee.tistory.com/77?category=250744


[CentOS7] 아파치와 톰캣 연동하기 (mod_jk)


안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 로드 밸런싱 설정 해보기 ] 입니다. :) 



▶ 아파치와 톰캣을 연동하는 이유

 - Tomcat 서버는 본연의 임무인 서블릿 컨테이너의 역할만 하고, Apache HTTP Server는 웹서버의 역할을 하도록 각각의 기능을 분리하기 위해 연동을 할 수 있다.

 - Apache HTTP Server에서 제공하는 편리한 기능을 사용하기 위해서 연동을 할수 있다.

 - 대규모 사용자가 사용하는 시스템을 구축할 때 웹 서버인 아파치와 연동을 하면 부하 분산의 효과를 가질 수 있다. mod_jk의 Load Balancing과 FailOver 기능을 사용하여 안정적으로 운영 할 수 있다.

 - 아파치 내에서만 설정할 수 있는 부분이 있고, 아파치에서 제공하는 유용한 모듈들을 톰캣에서 사용할 수 없기 때문이다.


▶ 아파치 톰캣 연동하는 방법들 (참고)

Apache httpd web server 와 tomcat 을 연계하는 방법은 세 가지가 있다. 


예전부터 많이 쓰던 방법은 tomcat connector(mod_jk)를 사용하는 방법이고 다른 하나는 mod_proxy를 사용하여 reverse proxy 기능을 사용하는 방법, 마지막은mod_proxy_ajp 를 사용하여 AJP Protocol을 reverse proxy 로 사용하는 방법이다. 


mod_proxy 가 mod_jk 에 비해 설정이 간편하고 AJP 같은 특정 WAS 의존적인 프로토콜을 사용하지 않으므로  성능이 더 좋다고 하지만 mod_jk 가 오랫동안 써왔고 친숙해서 mod_jk 를 많이 사용하는 편


▶ 연동원리

아파치와 톰캣이 연동하기 위해선 AJP를 통해 서로 통신을 하여야 한다.

AJP란 아파치가 웹서버와 외부 서비스(톰캣 등)과 연동하기 위해 정한 규약(프로토콜) 이다. 


아파치는 이를 사용하여 80포트로 들어오는 요청은 자신이 받고, 이 요청중 서블릿을 필요로 하는 요청은 톰캣에 접속하여 처리한다.

1) 아파치 웹서버의 httpd.conf 에 톰캣 연동을 위한 설정을 추가하고 톰캣에서 처리할 요청을 지정

2) 사용자의 브라우저는 아파치 웹서버(보통 80포트)에 접속해 요청

3) 아파치 웹서버는 사용자의 요청이 톰캣에서 처리하도록 지정된 요청인지 확인. 요청을 톰캣에서 처리해야 하는 경우

   아파치 웹서버는 톰캣의 AJP포트(보통 8009포트)에 접속해 요청을 전달

4) 톰캣은 아파치 웹서버로부터 요청을 받아 처리한 후, 처리 결과를 아파치 웹서버에 되돌려줌

5) 아파치 웹서버는 톰캣으로부터 받은 처리 결과를 사용자에게 전송



▶ mod_jk 모듈 설치 및 설정

 - 다운로드 및 설치


1. http://www.apache.org/dist/tomcat/tomcat-connectors/jk/

에서 직접 다운로드 FTP 전송



# wget http://mirror.apache-kr.org/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz

# tar xvfz tomcat-connectors-1.2.42-src.tar.gz

# mv tomcat-connectors-1.2.42-src/ /usr/local/src

 

# yum -y install autoconf libtool

# cd /usr/local/src/ tomcat-connectors-1.2.42-src/native/

# ./buildconf.sh

# ./configure --with-apxs=/usr/local/apache2/bin/apxs

# make && make install

# find / -name "mod_jk.so"

 - 이때 파일이 검색 되면 제대로 설치된 것임.

 - /etc/httpd/modules/ 경로의 파일안에 추가 되어있을 것임.

# cd /usr/local/src/tomcat-connectors-1.2.42-src/native/apache-2.0/

# cp mod_jk.so /usr/local/apache2/modules/

 


 - 설정


 # vi /etc/httpd/conf/httpd.conf



vi에디터 창에서  / 를 누르고 LoadModule을 찾아(엔터후 n버튼을 누르면 다음찾기가 된다.) 그 아래쪽에 다음의 내용을 추가합니다.

VirtualHost 쪽은 아직 못해봤다. 참고.



LoadModule jk_module modules/mod_jk.so


<VirtualHost *:80>

ServerName localhost

# 확장자 jsp, json, xml, do를 가진 경로는 woker tomcat으로 연결하는 구문.

JkMount /*.jsp tomcat

JkMount /*.json tomcat

JkMount /*.xml tomcat

JkMount /*.do tomcat

</VirtualHost>


<ifModule jk_module>

# 워커 설정파일 위치

JkWorkersFile conf/workers.properties

# 로그 위치

JkLogFile logs/mod_jk.log

# 로그레벨 설정

JkLogLevel info

# 로그 포맷에 사용할 시간 형식을 지정한다.

JkLogStampFormat "[%y %m %d %H:%M:%S] "

# Our JK shared memory file

JkShmFile logs/mod_jk.shm

JkMountFile conf/uriworkermap.properties

</ifModule>

 





 # vi /usr/local/apache2/conf/workers.properties



다음 내용 추가



worker.list=instance1,instance2

 

worker.instance1.port=8009

worker.instance1.host=localhost

worker.instance1.type=ajp13

worker.instance1.lbfactor=1

 

worker.instance2.port=8109

worker.instance2.host=localhost

worker.instance2.type=ajp13

worker.instance2.lbfactor=1




worker 이름: worker 이름은 정하기 나름이지만 각각 뒷단의 Tomcat 서버를 구분할 수 있는 이름이여야 한다. 이 worker 이름은 나중에 로드밸런싱을 할때에 Tomcat 에도 적용되어지는 이름이기에 잘 설정해야 한다.

worker port: 여기서 말하는 port 는 뒷단 Tomcat 서버의 AJP 포트를 말한다.

worker type: 이건 ajp13 으로 설정하면 된다.

worker lbfactor: 부하분산을 위한 설정으로 뒷단 Tomcat  서버들에 연결 무게를 설정해준다.




▶ 로드밸런스 설정


앞선 작업들은 로드밸런스 설정과는 관계가 없다. 로드밸런스라고 하면 instance1 인스턴스가 응답하지 않을 경우에 다른 서버들이 그 역활을 대신하는 것을 말한다. 이를 위해서는 woker 설정을 변경해주고 urlworkermap 설정을 추가해주어야 한다.




 # vim /usr/local/apache2/conf/uriworkermap.properties



다음 내용 추가


/*=balancer



로드밸런스는 특정 인스턴스가 죽었을 경우에 다른 서버가 그 역활을 대신하는 것이다. 이를 위해서 로드밸런스 역활을 위한 worker 이름을 정의하고 그 worker 에 로드밸런스를 위한 worker 이름을 정의해주면 된다. 기존의 worker 파일에 다음과 같이 로드밸런스 내용을 추가하면 된다.



 # vi /usr/local/apache2/conf/workers.properties



다음 노란색 구문 추가



worker.list=balancer

 

worker.instance1.port=8009

worker.instance1.host=localhost

worker.instance1.type=ajp13

worker.instance1.lbfactor=1

 

worker.instance2.port=8109

worker.instance2.host=localhost

worker.instance2.type=ajp13

worker.instance2.lbfactor=1


worker.balancer.type=lb

worker.balancer.balance_workers=instance1,instance2

worker.balancer.sticky_session=TRUE




한가지 더, Tomcat 인스턴스들에게 설정을 해줘야 한다. JvmRoute 설정이라고 하는데, 이 설정을 위한 방법은 두가지가 있다. 첫째는 System.property 를 이용한 방법이고 두번째는 server.xml 을 편집하는 방법이다.


첫번째 방법은 Tomcat 인스턴스 구동시에 커맨드라인으로 값을 넣어주는 것으로 다음과 같이 해주면 된다.


System.property



JVM_OPTS=" ${JVM_OPTS} -DjvmRoute=instance1"




보통 Tomcat 의 시작 스크립트는 JVM_OPTS 옵션을 인식한다. 위와같이 Tomcat 인스턴스의 시작 스크립트에 커맨드 라인 옵션으로 jvmRoute 이름을 주면 인식하게 된다.


두번째는 server.xml 파일을 다음과 같이 편집하는 것이다.




<Engine name="Catalina" defaultHost="localhost" jvmRoute="instance1">



위와같이 설정해주면 된다.


만일 두가지 설정을 모두 했을 경우에는 server.xml 파일 설정이 우선되어 적용된다.



 - HTTP 접속 포트 끄기

이렇게 Apache – Tomcat 연동을 하고나면 반드시 Tomcat 인스턴스의 HTTP 접속 포트를 Disable 해주는걸 잊지 말아야 한다.

<!--

    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

 -->


반응형

'Server 관리 > Apache,Tomcat,NginX,WS,WAS' 카테고리의 다른 글

Apache vs nginx 성능 비교  (0) 2020.01.15
Centos 7 + NginX 설치 + PHP5  (0) 2018.11.19
Tomcat 다중 설치  (0) 2018.11.01
CentOS 7 + Tomcat 8 설치  (0) 2018.11.01
CentOS 7 + Apache 2 설치  (0) 2018.11.01

Tomcat 다중 설치

Server 관리/Apache,Tomcat,NginX,WS,WAS
반응형


[참조] http://goddaehee.tistory.com/76?category=250744


[CentOS7] 톰캣(Tomcat) 다중으로 설치


앞서 이미 단일 톰캣을 설치 해보았다. 

그러나 한 서버에서 다양한 서비스를 사용, 로드밸런싱을 통산 부하분산 등의 목적으로 Tomcat을 다중으로 설치해야 할 일들이 있다.



▶ 포트 설정

하나의 톰캣에서 보통 3개의 port를 사용한다고 생각하면 된다.

(톰캣 내부 포트, apache 연동을 위한 ajp 포트, 서비스 포트)


server port (내부) : 8005, 8105

ajp1.3 port (내부) : 8009, 8109

Connector port (외부) : 8080, 8180



▶ 톰캣 설치

# wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.27/bin/apache-tomcat-8.5.27.tar.gz

# tar xvfz apache-tomcat-8.5.27.tar.gz

mv apache-tomcat-8.5.27/ /usr/local/tomcat8.5

# tar xvfz apache-tomcat-8.5.27.tar.gz

mv apache-tomcat-8.5.27/ /usr/local/tomcat8.5-2



▶ catalina.sh 파일 수정

다음 경로안의 catalina.sh 파일을 수정하여준다.

/usr/local/tomcat8.5/bin

/usr/local/tomcat8.5-2/bin



PRG="$0"


while [ -h "$PRG" ]; do

  ls=ls-ld$PRG

  link=`expr "$ls" : '.*-> .$'`

  if expr "$link" : '/.*' > /dev/null; then

    PRG="$link"

  else

    PRG=dirname$PRG/"$link"

  fi

done


export CATALINA_HOME=/usr/local/tomcat8.5

export TOMCAT_HOME=/usr/local/tomcat8.5

export CATALINA_BASE=/usr/local/tomcat8.5




빨간색 부분을 추가 하여 준다.



▶ server.xml 파일 수정

다음 경로 안의 server.xml 파일을 수정하여 준다.

위에서 정의한대로 포트를 설정 하여 준다.

/usr/local/tomcat8.5-2/conf



▶ 톰캣 실행 후 이상여부를 확인하여 준다.

반응형

'Server 관리 > Apache,Tomcat,NginX,WS,WAS' 카테고리의 다른 글

Centos 7 + NginX 설치 + PHP5  (0) 2018.11.19
Apache 와 Tomcat 연동  (0) 2018.11.01
CentOS 7 + Tomcat 8 설치  (0) 2018.11.01
CentOS 7 + Apache 2 설치  (0) 2018.11.01
Java 설치  (0) 2018.11.01

CentOS 7 + Tomcat 8 설치

Server 관리/Apache,Tomcat,NginX,WS,WAS
반응형



[참조] http://goddaehee.tistory.com/74


▶1. 다운로드

http://archive.apache.org/dist/tomcat/tomcat-8/


1. wget을 통해 다운 로드

cd /tmp/lib

wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.27/bin/apache-tomcat-8.5.27.tar.gz



▶2. 압축 해제

tar zxvf apache-tomcat-8.5.27.tar.gz


▶3. 폴더 이동

mv apache-tomcat-8.5.27/ /usr/local

cd /usr/local


▶4. 심볼릭 링크 

ln -s apache-tomcat-8.5.27/ tomcat



▶5. 환경 변수 설정

vi /etc/profile


JAVA_HOME=/usr/local/java

JRE_HOME=/usr/local/java

CATALINA_HOME=/usr/local/tomcat

CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar

PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

export JAVA_HOME CLASSPATH PATH CATALINA_HOME JRE_HOME



6. 설정반영 및 변수 확인

source /etc/profile

echo $CATALINA_HOME




7. 실행 / 중지 확인


**실행

/usr/local/tomcat/bin/startup.sh


** 포트가 LISTEN 되는지 확인

netstat -an | grep 8080


** 중지

/usr/local/tomcat/bin/shutdown.sh



8. 방화벽 설정


firewall-cmd --permanent --zone=public --add-port=8080/tcp

firewall-cmd --reload


(방화벽 리스트 확인)

firewall-cmd --permanent --list-all



9. 최종 확인

http://ip주소:8080 접속

반응형

'Server 관리 > Apache,Tomcat,NginX,WS,WAS' 카테고리의 다른 글

Centos 7 + NginX 설치 + PHP5  (0) 2018.11.19
Apache 와 Tomcat 연동  (0) 2018.11.01
Tomcat 다중 설치  (0) 2018.11.01
CentOS 7 + Apache 2 설치  (0) 2018.11.01
Java 설치  (0) 2018.11.01

CentOS 7 + Apache 2 설치

Server 관리/Apache,Tomcat,NginX,WS,WAS
반응형

[참조] http://goddaehee.tistory.com/75?category=250744

[추가참조] http://library.gabia.com/contents/infrahosting/3513


다음에서 각각의 설치할 패키지의 최신 버전 확인 가능 )

 apache : http://www.apache.org/dyn/closer.cgi

 apr/apr-util : https://apr.apache.org

 pcre :  http://www.pcre.org

 

▶ 0. 기 설치된 아파치 중지.

systemctl list-unit-files 실행해서,

httpd.service enabled 라고 되어 있으면, disabled 로 바꿔줘야 한다.

(Gui 에서 setup 에서 중지 가능. command 명령은 검색해서 찾아봐야 함.)


아마도 OS 설치시에 자동 설치되거나 npm 같은 거 설치하면서 설치된 듯 하다.


▶ 1. 아파치 다운로드

 - http://httpd.apache.org/download.cgi

 


# cd /tmp/lib

# wget http://mirror.apache-kr.org//httpd/httpd-2.4.29.tar.gz

 

 


▶ 2. apr 다운로드

 - http://mirror.apache-kr.org/apr/



# wget http://apache.mirror.cdnetworks.com//apr/apr-1.6.3.tar.gz 



 

▶ 3. apr-util 다운로드



wget http://apache.mirror.cdnetworks.com//apr/apr-util-1.6.1.tar.gz



 

▶ 4. pcre 다운로드

 - http://pcre.org/

 - ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/



wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz



 


▶ 5. 각 파일 압축풀기 및 이동



tar xvfz httpd-2.4.29.tar.gz

mv httpd-2.4.29/ /usr/local/src

 

tar xvfz apr-1.6.3.tar.gz

mv apr-1.6.3/ /usr/local/src

 

tar xvfz apr-util-1.6.1.tar.gz

mv apr-util-1.6.1 /usr/local/src

 

tar xvfz pcre-8.41.tar.gz

mv pcre-8.41/ /usr/local/src

 

cd /usr/local/src


 


 

▶ 6. 설치

 

6.1 APR & APR UTIL 설치


 - 톰캣은 뛰어난 확장성성능 및 기본 서버 기술로 더 나은 통합을 제공하기 위해 Apache Portable Runtime를 사용할 수 있다아파치 포터블 런타임은 아파치 HTTP 서버 2.x.의 핵심이며 휴대용 라이브러리이다.

 이런 APR은 고급 IO 기능(:sendfile, epoll and OpenSSL )에 대한 접근을 포함하여 OS 수준의 기능 (난수 생성시스템 상태), 그리고 기본 프로세스 처리(공유 메모리, NT 파이프와 유닉스 소켓등 많은 용도로 사용되고있다.

 

** APR (Apache Portable Runtime)


# cd /usr/local/src/apr-1.6.3

# ./configure --prefix=/usr/local/src/apr-1.6.3

 

# make && make install



 

** APR UTIL


# cd /usr/local/src/apr-util-1.6.1

./configure --prefix=/usr/local/src/apr-util-1.6.1 --with-apr=/usr/local/src/apr-1.6.3

 

make && make install



 

혹시 APR UTIL 설치시 다음과 같은 에러가 발생한 적이 있다면 다음과 같이 해결한다.


[make 시 에러]

xml/apr_xml.c:35:19: fatal error: expat.h: 그런 파일이나 디렉터리가 없습니다

 #include <expat.h>

           ^

compilation terminated.

make[1]: *** [xml/apr_xml.lo] 오류 1

make[1]: Leaving directory `/app/src/apr-util-1.6.0'

make: *** [all-recursive] 오류 1

 

아래처럼 expat-devel 설치후 진행

yum install expat-devel

 

 

6.2 PCRE 설치


PCRE 라이브러리는 Perl 5 같은 구문과 의미를 사용하여 정규식 패턴 일치를 구현하는 함수의 집합이다. PCRE는 자체 native API 뿐만 아니라 POSIX 정규식 API에 대응하는 래퍼 함수의 집합도 포함하고 있다. PCRE 라이브러리는 심지어 proprietary software 개발에 사용되어도 무료이다.

PCRE는 원래 Exim MTA(Exim Mail Transfer Agent의 한 종류)를 위해 만들어졌으나요즘에는Apache, PHP, KDE 등을 포함한 유명한 오픈소스 프로젝트에서 사용되고 있다. PCRE는 애플사의 사파리와 같은 몇몇의 잘 알려진 사용 제품에서 그 방법을 찾기도 했다.

PCRE를 사용하는 다른 프로젝트는 다음과 같다.

Chicken, Ferite, Onyx ...

Perl 5의 사용법(또는 문법)과 유사하게 만들어 졌고자제 API도 있고, POSIX와의 호환성도 좋고,심지어 소유권을 주장할 수 있는 소프트웨어 개발에도 무료로 사용할 수 있고원래는 메일 전송 에이전트 용으로 만들었는데 장안의 화제가 되어 주옥같은 오프 소스 프로젝트에서 두루두루 사용되고 있으며애플사의 사파리와 같이 엄청 유명한 상용 제품에도 사용되고 있다고 한다

 

** PCRE (Perl Compatible Regular Expressions) - Perl 호환 정규 표현식들



# cd /usr/local/src/pcre-8.41

# ./configure --prefix=/usr/local/src/apr-util-1.6.1 --with-apr=/usr/local/src/apr-1.6.3

 

# make && make install

 


 

6.3 아파치 설치


** 아파치(httpd)



# cd /usr/local/src/httpd-2.4.29

# ./configure --prefix=/usr/local/apache2 --enable-modules=most --enable-mods-shared=all --enable-so --with-apr=/usr/local/src/apr-1.6.3 --with-apr-util=/usr/local/src/apr-util-1.6.1

 

# make &&  make install

 

 


7. 설정



vi /usr/local/apache2/conf/httpd.conf



 

보기 편하게 :set nu로 줄표시 한다.


** 205번째 줄 변경

# ServerName www.exmaple.com:80

ServerName 127.0.0.1:80




8. 시작

/usr/local/apache2/bin/httpd -k start

 

** 동작포트 확인

netstat -tulpn | grep LISTEN



 

9. 방화벽 open

firewall-cmd --permanent --zone=public --add-port=80/tcp

firewall-cmd --reload

firewall-cmd --list-ports

firewall-cmd --zone=public --list-all | grep 80

 

 

10. 서비스 확인

http://ip주소

 


11. 아파치 중지/실행 테스트

/usr/local/apache2/bin/apachectl stop

/usr/local/apache2/bin/apachectl start

 


12. 자동실행 설정


** 설정파일 복사

> cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd

> ln -s /etc/init.d/httpd /etc/rc3.d/S99httpd

> vi /etc/init.d/httpd


** httpd #!/bin/sh 아래에 아래 3줄 추가

# Comments to support chkconfig on CentOS

# chkconfig: 2345 90 90

# description: A very fast and reliable WebServer engine.


> /etc/init.d/httpd -V


13. 실행 확인

** 확인

> service httpd start

> service httpd stop

 

** 자동시작 설정

chkconfig httpd on

chkconfig --list // 여기에 httpd 가 있어야 함.

반응형

'Server 관리 > Apache,Tomcat,NginX,WS,WAS' 카테고리의 다른 글

Centos 7 + NginX 설치 + PHP5  (0) 2018.11.19
Apache 와 Tomcat 연동  (0) 2018.11.01
Tomcat 다중 설치  (0) 2018.11.01
CentOS 7 + Tomcat 8 설치  (0) 2018.11.01
Java 설치  (0) 2018.11.01

Java 설치

Server 관리/Apache,Tomcat,NginX,WS,WAS
반응형

[참고] http://goddaehee.tistory.com/53?category=250744


1. Java 설치


1. OS종류 / BIT 확인

cat /etc/*-release

getconf LONG_BIT


2.다운로드 경로 이동

cd /tmp

mkdir lib

cd lib


3. 압축 파일을 다운받아서 FTP로 올리고 다음 진행

http://www.oracle.com/technetwork/java/javase/downloads/index.html


tar xvfz jdk-8u131-linux-x64.tar.gz


4. 폴더 이동

mv /tmp/lib/jdk1.8.0_131  /usr/local

cd /usr/local


5. 심볼릭 링크 설정

: 실볼릭 링크는 일정의 즐겨찾기 개념, 향후 jdk 버전이 바뀌어도 다른곳에서 java라고 심볼링 링크를 설정한 경로만 참조하게 하면 java version 관리 용이


ln -s jdk1.8.0_131/ java


6. 환경변수 추가

vi /etc/profile


JAVA_HOME=/usr/local/java

CLASSPATH=.:$JAVA_HOME/lib/tools.jar

PATH=$PATH:$JAVA_HOME/bin

export JAVA_HOME CLASSPATH PATH


7. 설정 업데이트 값 확인

source /etc/profile

echo $JAVA_HOME

javac -version

반응형

'Server 관리 > Apache,Tomcat,NginX,WS,WAS' 카테고리의 다른 글

Centos 7 + NginX 설치 + PHP5  (0) 2018.11.19
Apache 와 Tomcat 연동  (0) 2018.11.01
Tomcat 다중 설치  (0) 2018.11.01
CentOS 7 + Tomcat 8 설치  (0) 2018.11.01
CentOS 7 + Apache 2 설치  (0) 2018.11.01