본문 바로가기

AWS

Spring 프로젝트를 AWS에 웹 배포하기 (JAVA, Tomcat 설치부터 사이트 띄우기까지)

 

1. openJDK-8 설치

sudo apt-get install openjdk-8-jre openjdk-8-jdk

 

 

  • 설치 경로 확인

 

  • java 파일구조

1. java-8-openjdk-amd64/bin/java  

2. java-8-openjdk-amd64/bin/javac

3. java-8-openjdk-amd64/jre/bin/java 

 

 

 

  • 경로 옮겨주기
# mv java-8-openjdk-amd64 /usr/local

 

다시 확인해보면 java-8-openjdk가 해당 경로에 당연히 없어져있다.

 

옮겨준 경로(/usr/local)로 가보면 여기에 java-8이 있는 걸 확인 가능

 

 

  • java 환경변수 설정

java 라는 이름으로 링크 생성

export JAVA_HOME = /usr/local/java
export CLASSPATH = .:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
PATH = $PATH:$JAVA_HOME/bin

 

 

  • 설정파일 적용
# source /etc/profile

 

 

 

2. Tomcat 8 설치

Not found 에러 뜨면 http://apache.tt.co.kr/tomcat/tomcat-8 → 이 링크로 가서 업그레이드 된 톰캣 버전 경로를 따라간 다음 다운받아주세요

/usr/local# wget http://apache.tt.co.kr/tomcat/tomcat-8/v8.5.56/bin/apache-tomcat-8.5.56.tar.gz

 

 

  • 다운받아준 apache-tomcat 압축 풀기
/usr/local# sudo tar xvfz apache-tomcat-8.5.56.tar.gz

 

압축 풀린 tomcat이 같이 있는 걸 볼 수 있음

 

 

  • 링크 생성
/usr/local# ln -s apache-tomcat-8.5.56 tomcat8

 

 

  • 톰캣 버전 정보 및 경로 확인하기 (bin파일로 이동 후 확인)

 

  • 톰캣도 환경변수 설정해주기
# export CATALINA_HOME=/usr/local/tomcat8
# export CLASSPATH=$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar

 

# source /etc/profile

 

 

  • 톰캣 실행하기 (톰캣 실행시키는 경로 확인하고 실행시키세요)
/usr/local/tomcat8/bin# ./startup.sh

 

 

발급받은 AWS 퍼블릭 DSN 주소 : 8080 포트로 접속해주면 Apache 화면이 나옵니다.

만약 계속 접속이 안된다면  AWS 인바운드 규칙에서 모든 IP에 대한 8080포트 접속을 열어주었는지 확인해야 합니다. 

 

 

 

 

 

 

 

  • .war파일 배포 후 docBase 설정해주기.

( /tomcat8/bin/server.xml 파일)

Context path를 추가해주었다. 

 

이제 내IP:8080/  을 주소창에 입력하면 필자의 경우 musicchart.war에 대한 웹 프로젝트에 접근이 가능해진다.

http://내IP:8080/

 

 


배포한 파일을 띄우려니깐 다음과 같은 에러 발생 (tomcat log)

Caused by: java.lang.UnsupportedClassVersionError: com/exe/dao/AlbumDAO has been                                                                     compiled by a more recent version of the Java Runtime (class file version 55.0)                                                                    , this version of the Java Runtime only recognizes class file versions up to 52.                                                                    0 (unable to load class [com.exe.dao.AlbumDAO])
        at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(We                                                                    bappClassLoaderBase.java:2397)
        at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClas                                                                    sLoaderBase.java:855)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClas                                                                    sLoaderBase.java:1327)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClas                                                                    sLoaderBase.java:1180)
        at org.springframework.util.ClassUtils.forName(ClassUtils.java:250)
        at org.springframework.beans.factory.support.AbstractBeanDefinition.reso                                                                    lveBeanClass(AbstractBeanDefinition.java:394)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doResol                                                                    veBeanClass(AbstractBeanFactory.java:1408)
        at org.springframework.beans.factory.support.AbstractBeanFactory.resolve                                                                    BeanClass(AbstractBeanFactory.java:1353)
        ... 23 more

 

▶ ubuntu에는 java-8 버전을 다운받아 준 상태였는데 java-11 기반으로 만든 웹프로젝트가 컴파일이 안되어서 생기는 문제였다.

 

 

  • java-11로 버전 업그레이드를 해주자
# sudo apt-get install openjdk-11-jre openjdk-11-jdk

 

 

  • java-8에 매핑시켜줬던 심볼릭 링크 제거
# rm java

 

 

  • 경로다시 옮겨주기
/usr/lib/jvm# mv java-11-openjdk-amd64 /usr/local

 

 

  • 링크 생성
# ln -s java-11-openjdk-amd64 java

 

 

 

  • tomcat log에 이런 에러가 떴다.
Caused by: java.lang.IllegalArgumentException: The AJP Connector is configured with secretRequired="true" but the secret attribute is either null or "". This combination is not valid.

 

찾아보니 tomcat 8.5 버전과 9.0 버전은 secretRequired 속성을 사용하여야 한다.

secretRequired = "false" 이 부분을 추가해줘야 한다는 것이다. (tomcat의 server.xml 파일)

→ default값은, secretRequired 속성이 true로 설정되어 있음.