Elastic Beanstalk environment 

Tomcat Platform + Load balancing, auto scaling 으로 세팅하게 되면,


자동으로 Apache + Tomcat 이 EC2 에 설치되어 서비스되는데 문제는


httpd.conf 와 server.xml 설정파일등이 기본값으로 되어있어 대용량 파일 업로드할때 connection 이 끊기면서 문제가 생겼다.


그래서 ec2 의 설정 파일을 직접수정하여, 리붓하여 해결을 했는데


문제는 war 를 다시 배포하면, ec2 를 바꿔버리는 경우도 있고, auto scaling 으로 ec2 를 생성하는 것들은 기본설정으로


생성되니 일일이 생성될때마다 들어가서 고쳐줄 수 도 없는 노릇이다.



war 를 배포할때마다 설정을 자동으로 변경할 수 있으면 해결될 문제인것 같다.



검색해보니 몇가지 해결책이 있었는데, 안돼서 AWS Support 팀에 물어보고 얻은 해결책입니다.




제 환경은 Maven 으로 war 생성하여, beanstalk 에 업로드 합니다.


1.

위 이미지 처럼 WebContent root 에 .ebextensions 폴더를 생성합니다.




2. .ebextensions 폴더 아래 server-update.config 파일을 생성합니다. 내용은 아래처럼

container_commands:
00_replace-tomcat-config:
command: cp .ebextensions/tomcat8/server.xml /etc/tomcat8/server.xml
01_replace-apache-config:
command: cp .ebextensions/apache/elasticbeanstalk.conf /etc/httpd/conf.d/elasticbeanstalk.conf

** 들여쓰기를 꼭 지켜야합니다. **


라인 3은 tomcat server.xml 파일작업

라인 5는 apache httpd.conf 파일역할을 하는것같은? ;; elasticbeanstalk.conf 파일 작업입니다.


저것들의 내용은



3. server.xml - 아래 위 다 짜르고 고친부분만 올렸습니다. 제 설정이니 프로젝트에 맞게 고치세요.

<Connector port="8080" protocol="HTTP/1.1"
keepAliveTimeout="-1"
URIEncoding="UTF-8"
disableUploadTimeout="true"
connectionTimeout="7200000"
connectionUploadTimeout="7200000"
redirectPort="8443" />



4. elasticbeanstalk.conf - 전체입니다.

<VirtualHost *:80>
Timeout 7200
ProxyTimeout 7200

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass / http://localhost:8080/ retry=0
ProxyPassReverse / http://localhost:8080/
ProxyPreserveHost on

ErrorLog /var/log/httpd/elasticbeanstalk-error_log

</VirtualHost>




5. EC2 Console - Load Balancers 에서 해당 Elastic Beanstalk 이 생성한 ELB 를 찾아야 합니다.


찾아서 아래 그림처럼 Connection Settings 값을 최대 3600까지 올려주시면 됩니다.






여기까지 한 후 war 를 생성해보면, war 파일 root 에 .ebextensions 가 존재하면 다됐습니다.


이제 war 배포가 완료되고 ec2 의 각 파일을 열어보시면, 변경되었을겁니다.


인스턴스 리붓할 필요없이 자동으로 반영되는것 같습니다..


리전이 북미라 500메가 업로드하는데 1시간정도 걸리던데 서비스 잘되고 있습니다.













YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST



로컬에서 톰캣 돌릴때 한글이 깨져서 저정되거나, 한글 비교가 안되거나 

한글 때문에 제대로 동작하지 않는 문제가 있다.

UTF-8로 하면 다 잘되는거 같다.

해당 톰캣 폴더안에 conf로 들어가서

........\apache-tomcat-7.0.26\conf

안에 보면 server.xml 파일을 열어서


<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" 

   URIEncoding="UTF-8"/>

URIEncoding 을 추가시켜준다.


밑에 보면 하나 더 있다. 그놈도 똑같이 추가시켜주자.


만~~ 약에 이래도 안될 경우가 있다.


그때는 해당 워크스페이스로 가서

~~WORKSPACE\.metadata\.plugins\org.eclipse.wst.server.core\tmp0

폴더를 삭제하고, 프로젝트를 다시 publish 한다. 

그래도......안되면? 서버를 delete 하고 다시 만들자. 이제 무조건 된다!


YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST



출처 HaLu | HaLu
원문 http://blog.naver.com/haruhime2236/50003386106
집필자 : morp0083  (2004-03-26 12:02) 신고하기 | 이의제기
servlet,jsp 는 asp,php와 마찬가지로, 서버에서 DB에 접근한다든지, 특정한 로직을 돌리기위해 JAVA를 언어로 사용하는
Server Side Script 입니다



이렇게 구성된 페이지가 서버에서 돌아가면 클라이언트의 브라우져에서는 html형식으로 보이게 되죠(확장자명이 jsp라고 하더라도 소스보기를 하면
HTML만 보입니다)



톰캣은 이렇게 웹서버 상에서 자바코드를 이해하기 위한 엔진 혹은 컨테이너입니다
다시 말하면 서블릿,jsp, 빈즈 같은 자바코드를 이해하기 위해서는 톰캣같은 자바를 이해하는 엔진이 있어야 한다는 말이죠



다른 자바를 해석할수 있는 웹서버나 엔진에 비해 톰캣이 가지는 장점중 가장 큰부분은 바로 가격대 성능비입니다UNIX기반(리눅스,SUN OS등을
포함한)에서 아파치랑 톰캣이 궁합이 잘맞기 때문에 자바기반 웹서버를 구성할때 저가용으로 리눅스,아파치,톰캣 조합을 많이 사용합니다

사실 모두 무료배포기 때문에 라이센스에 대한 부담없이 누구나 사용할수 있습니다



이제 서블릿,JSP를 이야기 해보겠습니다어떤 웹프로그램이든 순수한 프로그램언어로 이루어진것이 아니라 클라이언트언어인 HTML이 혼용되어있는데 문제는 톰캣은 자바파일만 이해할수
있습니다



이렇게 톰캣이 이해할수 있게 구성되어있는 순수 자바코드로만 이루어진 웹서버용 클레스가 Servlet이라 할수 있습니다 개발자가 Servlet으로 코딩을 한후 웹서버에 올려놓으면 클라이언트들이 브라우저를 통해 볼때는 HTML형식의 페이지를 볼수
있죠

하지만 Servlet은 다른 웹프로그램에 비해 코딩이 복잡하고, 많이 번거롭죠



그래서 나온것이 JSP입니다 JSP는 HTML 기반페이지에 자바로직이 필요한부분에 블록을 삽입해서 그 블록안에서만 구동하게 짜면되죠 Servlet에 비해 엄청 간단하게 프로그래밍을 할수
있죠



이쯤이면 이런의문이 생길것입니다



"처음 톰캣은 자바구문만 해석할수 있다고 했는데, 그렇게 HTML과 혼횽했을때 그것을 구분해서 이해하는가."



그문에는 톰캣의 독특한 컴파일 과정에 있습니다 JSP페이지는 서블릿 형태로 일단 변형되어 컴파일 되죠 다시 말하면 html태그들은 화면에 뿌려라는 뜻의 print() 메소드로
다 뿌려주는 겁니다 그런형태로 완벽한 자바파일로 변형후 컴파일 되죠



jsp,servlet의 장점이라면 자바자체의 장점과 동일합니다
내용출처 : [직접 서술] 직접 서술
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST